实战 | 从XSS到RCE

admin 2022年3月4日05:13:21评论311 views字数 2110阅读7分2秒阅读模式

晴朗的一天,接到日常任务,目标是一个WARⅢ对战平台的应用程序。

0x01 配置环境

首先安装好客户端,想办法抓客户端的数据包,这次使用的方法是Proxifier->Fiddler->Burpsuite进行抓包测试。

设置Proxifier:设置代理服务器Profile->Proxy Servers,添加Fiddler代理(Fiddler默认端口8888)。

实战 | 从XSS到RCE

设置规则:Profile->Proxification Rules,通过设置应用名称规则,将客户端数据转发到代理服务器Fiddler上。

实战 | 从XSS到RCE

其次,在Fiddler上进行设置Tools->Options->Gateway选项,将数据包转发到Burpsuite的监听端口。

实战 | 从XSS到RCE

Burpsuite正常启动,默认监听8080端口,这时打开对战平台,尝试一下登录操作,可以成功截获数据包进行测试。

实战 | 从XSS到RCE

0x02 开始测试

首先对登录口测试,验证码绕过,暴力破解……,小小爆破了一下,没什么发现,这里略过。

实战 | 从XSS到RCE

之后就是找了个手机号,创建个账号登上去瞅瞅。

上去后主页也没什么,只有个人资料和聊天页面。个人资料没什么大发现,上传头像直接到OSS上了,就先创建了个房间试试。

发现房间里有聊天功能,先测试测试XSS,上来一个直接就成了,没任何防护措施。

实战 | 从XSS到RCE

实战 | 从XSS到RCE

感觉XSS没法深入利用了,就先把它放在这里。之后试了试其他漏洞,还是没什么发现,难道这次测试就这么结束了?

0x03 山重水复疑无路

有了XSS就可以控制内置浏览器的渲染了,于是考虑从客户端本身下手,不甘心的信息搜集了一波,这时发现软件的进程中有这么一项:--no-sandbox。

实战 | 从XSS到RCE

没有启动沙盒模式,软件中的操作可以影响到本机。

这时,我就想到了最近微信内置浏览器的远程代码执行漏洞。

21年上半年,Chrome浏览器爆出远程代码执行漏洞。攻击者利用此漏洞,通过构造恶意的Web页面,诱使用户访问页面,造成远程代码执行。

此漏洞要在Chrome沙盒模式关闭的状态下才能利用成功。当时由于微信采用老版本Google内核,且默认关闭沙盒模式,因此只要微信用户点击恶意连接,可直接获取终端权限。

这次的软件会不会也和微信一样使用了老版本Google内核呢?可以用前面的XSS测试一波,利用XSS访问服务器执行代码,测试能不能直接上线CS。

这里忘记截图了,补几张网上大佬的图:

首先CS开启监听,并且生成payload。

实战 | 从XSS到RCE

将payload.cs文件花括号的内容复制到wx.js文件的shellcode值中。

实战 | 从XSS到RCE

建立index.html文件调用wx.js文件。

实战 | 从XSS到RCE

将index.html和wx.js文件放到服务器上,利用python起一个简单的web服务。

python3:python -m http.server 8000

python2:python-mSimpleHTTPServer 8000

实战 | 从XSS到RCE

实战 | 从XSS到RCE

这时,回到聊天窗口上,利用a标签测试,点击111字段访问服务器。

实战 | 从XSS到RCE

实战 | 从XSS到RCE

查看服务器,有访问记录,再查看CS,没有任何反应。于是去gayhub上又找了几个大佬们的POC。

实战 | 从XSS到RCE

又连着试了几次,还是没反应,由于自己对这个漏洞原理性的东西不是很了解,没办法继续自己修改某些代码,于是又放下了这个点。

实战 | 从XSS到RCE

0x04 柳暗花明又一村

继续进行测试,再次查看软件文件夹,这时发现软件目录非常眼熟,找了一下,最终发现它和蚁剑的目录结构非常相似。如图,左侧是目标软件目录,右侧是蚁剑目录。

实战 | 从XSS到RCE

这时联想到之前看到的一篇反制蚁剑的文章中提到,蚁剑在实现上采用了Node.js,那么这次的测试软件也有很大可能采用Node.js。再结合其反制蚁剑中的思路尝试一下。

命令执行代码:require('child_process').exec('xxxxxxx');

Node.js 是一个基于 Chrome V8 引擎的javascript运行环境。它使得 Javascript 可以运行在服务端,直接与操作系统进行交互,与文件控制、网络交互、进程控制等。

child_process是Node.js的一个十分重要的模块,通过它可以实现创建多进程,以利用多核计算资源。child_process模块提供了四个创建子进程的函数,分别是spawn,exec,execFile和fork。这里我们使用exec函数来执行命令。

使用child_process模块测试,写个简单的index.html页面调用计算器。

实战 | 从XSS到RCE

<script type="text/javascript">

require('child_process').exec('calc',(error, stdout, stderr)=>{alert(`stdout: ${stdout}`);});

</script>

和之前一样将其放到服务器上,Python起个Web服务。

实战 | 从XSS到RCE

一样使用a标签测试,点击111字段,访问服务器。

实战 | 从XSS到RCE

Nice,成功执行,弹出了计算器。再看看和我在同一个房间里的小伙伴,电脑上也弹出了计算器。

实战 | 从XSS到RCE

实战 | 从XSS到RCE

既然可以执行命令了,尝试直接给小伙伴上线。但是大意了免杀没弄好,被火绒拦截了。。。

实战 | 从XSS到RCE

有了严重和高危漏洞,可以安心交付任务了,开开心心写报告了o(* ̄▽ ̄*)ブ


原文始发于微信公众号(雁行安全团队):实战 | 从XSS到RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月4日05:13:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战 | 从XSS到RCEhttps://cn-sec.com/archives/814306.html

发表评论

匿名网友 填写信息