0x01 前言
记一次某SRC信息管理系统多个漏洞组合Getshell,并已提交至 SRC 平台修复。过程包括发现未授权访问漏洞、利用 SQL 注入获取邮箱账号、爆破弱口令登录后台、利用目录遍历漏洞找到上传路径,并通过条件竞争成功绕过黑名单上传 webshell 实现 getshell。
末尾可领取挖洞资料文件
0x02 漏洞发现
首先通过子域名收集到招录信息管理系统,打开登录页面
https://zlxt.xxx.xxx
通过谷歌hacking语法搜索网站,成功利用谷歌发现搜索引擎爬取到的历年数据页面并且可以未授权访问
https://zlxt.xxx.xxx/school/recuit/index/#/historical-data?key=rrxgTw%3D%3D&school_id=5374
访问页面尝试点击功能点抓包测试注入点
POST /school/recuit/config HTTP/1.1
Host: zlxt.xxx.xxx
Cookie: CNZZDATA1278742331=458302413-1660035428-https%253A%252F%252Fzlxt.xxx.xxx%252F%7C1660035428; gr_user_id=6c79cc7c-c8d8-4fa8-b251-e952713f19b8; email=37192588@qq.com; uid=undefined; schoolname=%u4E91%u5357%u8D22%u7ECF%u5927%u5B66; schoolId=5374; province=53; provinceName=%u4E91%u5357; year=2022; years=%5B%222022%22%2C%222021%22%2C%222020%22%5D; active_key=undefined; hide_type=undefined; h5Logo=; campus_id=0; PHPSESSID=shchmtd9um97dlh2b4hqes4j65; ci_session=l60a1vrs7u0q0bl2epb7alef0ll5j4qq
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: */*
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
Referer: https://zlxt.xxx.xxx/school/recuit/index/
Content-Type: application/json
Content-Length: 103
Origin: https://zlxt.xxx.xxx
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
{"key":"rrxgTw%3D%3D","school_id":"5374","year":"注入点*","type":"2"}
通过观察发现原语句为
SELECT `province` FROM school_students_2024' WHERE `school_id` = '5374' GROUP BY `province` ORDER BY `id` DESC
注入点发生在表名这里school_students_2024',那么尝试闭合,经过大量测试发现;可以闭合后面的语句,那么语句变为
SELECT `province` FROM school_students_2024 WHERE `school_id` = '5374';WHERE `school_id` = '5374' GROUP BY `province` ORDER BY `id` DESC
闭合成功以后,那么我们的payload就应该在”5374“之后,“;”之前,payload 为and 1=1返回数据正常,payload 为and 1=2返回数据不正常,通过这里可以发现此处可以用布尔盲注
直接上sqlmap一把梭
通过测试发现该处注入点无法获取os-shell,因为mysql数据库版本>=5.6,默认不允许导入导出数据,故放弃注入getshell,通过注入成功拿到数据库中的邮箱账号[email protected]和密码hash,但是由于存在salt值,所以无法解密出来,故放弃。
前面观察到登录名为邮箱,此时我的思路为通过获取到的email去爆破登录框,从后台入手
先输入账号密码和验证码抓包,通过测试发现验证码在有效期内可重复使用,再观察发现密码为数字密码两种组成,可以尝试爆破。使用burp爆破,注意密码需要使用md5规则,字典选择数字加密码的组合,成功跑出超级管理员的密码
成功在验证码有效期跑出密码,hash值解密出来为弱口令1111111a 使用[email protected]和密码111111a成功登录系统,且权限为超级管理员
在其他功能点上发下文件上传
通过抓包测试,并且输入后缀名php1成功上传,发现上传为黑名单限制。
但是发现未返回准确路径,需要先尝试fuzz路径,ctrl+u查看源码图片路径
发现一处图片路径/app/static/imgs/el_box_img.png
尝试访问发现/app路径存在目录遍历
经过翻找,发现/app/upload/img/xxx/5374/为最终上传目录点
fuzz绕过后缀,但是经过查找burp未发现成功上传返回200状态码的后缀
经过大量测试发现文件名和内容都未做限制,突破点就在发包频率上面,由于是黑盒测试,这里感觉像条件竞争的漏洞,因为只要在上传内容设置一个变量,并且通过burp爆破就能成功上传php文件,这里尝试打个phpinfo看看,先设置burp为如下:
成功打出phpinfo(),查看禁用函数几乎没做任何限制,那么把phpinfo()换成一句话尝试
phpinfo url :https://zlxt.xxx.xxx/app/upload/img/2024/5374/63513d946b2e55_1666268564_4966.php
使用蚁剑连接,Getshell成功,但是发现shell不稳定,最后上了一个哥斯拉马
0x03 总结
最后总结,挖洞还是得细心分析功能点,fuzz也很重要,最终成功获得网站控制权限。喜欢的师傅可以点赞转发支持一下谢谢!
0x04
原文始发于微信公众号(渗透安全HackTwo):记一次某SRC信息管理系统多个漏洞组合Getshell|挖洞技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论