好几天没写博客了,今晚回来趁着给手机充电,总结一下最近一次拿下的 3 个中危漏洞。
先上张图:
以上三个漏洞都来自同一个功能系统,在审计 js 的过程中发现的两个 api 接口存在任意文件下载,以及后续深入测试功能点时发现的水平越权。
任意文件下载 1.0
访问该功能系统,审计 js 代码,发现一处可疑 api 接口:/photoshow.jsp?path=
根据名称,猜测该接口传入某图片路径,用于展示该图片,遂测试传入任意文件路径,尝试读取 /etc/passwd
:
/pros_ahdx/photoshow.jsp?path=/etc/passwd
成功读取到敏感文件,喜提中危一枚。
任意文件下载 2.0
继续审计 js 代码,又发现一处可疑接口:/filedownload.jsp
根据名称,这应该就是直接下载文件的接口了,尝试传入任意文件路径:/filedownload.jsp?path=/etc/passwd
成功弹出下载窗口,查看下载后的文件,成功获取敏感信息,又提中危一枚。
水平越权
抓完两个任意文件下载之后,接着审计其它功能点。在看到修改密码这项时,就在想是不是可能存在越权漏洞,于是跟进这项功能的实现。
查看 html 代码发现,当提交修改密码的请求时,调用了 tool.saveData()
这个函数,并传入当前对象和一个 api 接口地址。
跟进 tool.saveData()
函数,其内部调用了一次 $.ajax()
来发送请求,注意到发送请求时,data
参数是只携带了待修改用户的身份证号和新密码,并未携带鉴权信息!
于是尝试修改我自己的密码,同时抓包:
可以看到,请求体中包含以下信息:
- Wid(未知参数)
- Sfzh(身份证号)
- Pwd(新密码)
- Pwd 2(新密码)
修改成功后响应体中含有提示信息。
尝试修改 sfzh
参数,改为另一个人的身份证号(得到授权的情况下),再次发送请求包,发现依然可以成功修改密码。
尝试使用修改后的账号密码登录他人账号,发现密码被成功修改!再提一个中危!(本来想着这能给到高危了吧,结果只给了中危……)