前言
xss的笔记比较久之前就做的了,无奈不会JavaScript无能写出示例,但是想了一下还是发出来吧,等我学会js了再来补充
PS:下面的只是本人的理解,有错误之处请提出(靓仔感激.jpg)
正文
先从百度百科拉点资料,水一下字数:
XSS(Cross Site Scripting)攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。(摘自百度百科)
而xss的漏洞一般是执行js代码的,也有少数其他语言也可以在xss中利用
xss可以达到的危害如下:
- 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
- 盗窃企业重要的具有商业价值的资料
- 非法转账
- 强制发送电子邮件
- 网站挂马
- 控制受害者机器向其它网站发起攻击
借用前辈的话:你js能到达什么高度,xss就能到达什么高度。
不过xss很多人用来盗号之类的,不过08年之后网络法健全之后就很少有滥用xss了。不过值得一提的是,也确实还存在着这么一群人还在傻傻地触碰这根线。以至于QQ上仍然时不时弹出个在线文档的信息,出于好奇点进去,哦吼完蛋。
其中之一的原理分析https://www.jianshu.com/p/e1cb5175c07d
XSS种类
好啦回到正题,来谈谈xss种类
- 反射型XSS
- 存储型XSS
- DOM型XSS
反射型XSS
反射型XSS是非持久的,也是最简单的,数据流向是前端–>后端–>前端
最简单的实现反射型xss代码:
<?php
a=_POST["a"];
echo $a;
?>
效果如下:
存储型XSS
存储型xss就是在前端传入数据,然后给在数据库中保存,下次有人浏览页面的时候数据库的含有xss脚本的数据被读取出来显示的时候触发的xss漏洞,常见于留言板
数据流是前端 -> 后端 -> 数据库 -> 后端 -> 前端
搬一下网上的代码:
//前端:2.html
<html>
<head lang="en">
<meta charset="UTF-8">
<title>存储型XSS</title>
</head>
<body>
<form action="action2.php" method="post">
输入你的ID: <input type="text" name="id" /> <br/>
输入你的Name:<input type="text" name="name" /> <br/>
<input type="submit" value="提交">
</form>
</body>
</html>
//后端:action2.php
<?php
$id=$_POST["id"];
$name=$_POST["name"];
mysql_connect("localhost","root","root");
mysql_select_db("test");
$sql="insert into xss value ($id,'$name')";
$result=mysql_query($sql);
?>
//供其他用户访问页面:show2.php
<?php
mysql_connect("localhost","root","root");
mysql_select_db("test");
$sql="select * from xss where id=1";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
echo $row['name'];
}
?>
思路就是把id和name给post到后台然后后台储存到数据库。下一位用户来浏览的时候php从数据库读出来id和name,在交给前端的时候触发xss漏洞
存储型的XSS是比较大危害的,然而现在一些SRC平台似乎不是那么重视(我也不知道为啥)
DOM型XSS
DOM型xss是比较特殊的反射型xss,数据流向是前端–>浏览器
先说一下DOM吧,DOM可以抽象成一颗树,树上有分支,分支上还有分支,一直分支,所以DOM也被称为DOM树,DOM树上的每一个树枝都是一个节点,而DOM就是发生在节点上
这里有动画来解释浏览器的解析呈现过程https://video.zhihu.com/video/1084806179896680448?autoplay=false&useMSE=
继续搬一下代码
// 前端3.html
<html>
<head lang="en">
<meta charset="UTF-8">
<title>DOM型XSS</title>
</head>
<body>
<form action="action3.php" method="post">
<input type="text" name="name" />
<input type="submit" value="提交">
</form>
</body>
</html>
// 后端action3.php
<?php
name=_POST["name"];
?>
<input id="text" type="text" value="<?php echo $name; ?>"/>
<div id="print"></div>
<script type="text/javascript">
var text=document.getElementById("text");
var print=document.getElementById("print");
print.innerHTML=text.value; // 获取 text的值,并且输出在print内。这里是导致xss的主要原因。
</script>
js能和html的节点进行交互,当用户输入的text给js用来呈现,如果text里面有恶意代码,那么在交互的过程中恶意代码就会被执行
结尾
以上是xss的入门笔记,可能有部分理解错误的敬请纠正
参考链接: