前言
好几天没写博客了,今晚回来趁着给手机充电,总结一下最近一次拿下的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(新密码)
- pwd2(新密码)
修改成功后响应体中含有提示信息。
尝试修改sfzh
参数,改为另一个人的身份证号(得到授权的情况下),再次发送请求包,发现依然可以成功修改密码。
尝试使用修改后的账号密码登录他人账号,发现密码被成功修改!再提一个中危!(本来想着这能给到高危了吧,结果只给了中危……)