前言

好几天没写博客了,今晚回来趁着给手机充电,总结一下最近一次拿下的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参数,改为另一个人的身份证号(得到授权的情况下),再次发送请求包,发现依然可以成功修改密码。

尝试使用修改后的账号密码登录他人账号,发现密码被成功修改!再提一个中危!(本来想着这能给到高危了吧,结果只给了中危……)