网站的JS文件中通常会泄漏一些接口、URL、子域等信息,更有甚者会泄漏一些敏感信息,如OSS的AKSK等,我们利用泄漏的接口配合未授权访问,可以获取到更多的敏感信息,为后续渗透工作带来便利。本文以一次项目实战为基础展开。
1、敏感信息泄漏
系统登录框没有验证码,抓下包看看能不能跑个弱口令
加密加登录失败次数限制,直接放弃
跑下目录也没有收获
但是在JS文件中发现了好东西
利用JS美化工具,发现多个接口目录
可以简单利用正则编写一个脚本,把接口提取出来
import re
def main():
with open('logpath.txt', 'r') as f:
read = f.read()
allList = set()
list1 = re.findall(r'"(/[^"]+)*"', read)
print(list1)
for x in list1:
allList.add(x)
outFile = open("output-path.txt", "w")
allList = list(allList)
allList.sort()
for x in allList:
outFile.write(x+"n")
if __name__ == '__main__':
main()
直接丢进burp中跑一下,发现大部分会报错,缺少参数,但是从报错信息中我们可以获取到接口使用的库
搜索一下PageInfo的参数发现为pageNum、pageSize
PageHelper.startPage(pageNum, pageSize);
List<Map<String , Object>> listData = securityCheckDao.selectAllQuestionType(requestJson);
加入参数再遍历一下,发现大量敏感信息,这里一定要注意加上 根目录 这个网站的根目录是statistics
但是另一接口存在大量XSL文件,但是找不到正确路径
正当要放弃的时候,在另外一个包中发现了如下接口
可以读取dpf文件
但无法读取xls文件
再跑下常用接口试下,发现了download
利用download接口可以直接将xls文件下载到本地,在xls文件中发现大量敏感信息
2、逻辑漏洞找回密码
在接口中发现找回密码功能(前台并无该功能,猜测是删除了前台入口),但是直接发包报错,缺少参数
直接猜解登录参数,loginName成功发包,发现密码直接在返回包中(咱也不知道研发是怎么写代码的)
直接以admin身份登录系统后台
找到一个上传接口,可以上传jsp文件,但是只返回文件名,最终也没有成功找到路径
3、任意文件读取
突然想到上面的文件读取接口会不会存在任意文件读取,尝试后成功读取web.xml文件,我们可以看到存在log4j
4、log4j 反弹shell
执行命令,Java版本号打印在dnslog上
直接反弹Shell,利用方式这里就不再赘述了
总结
大致思路如下,主要的难点还是在于找到接口相应的参数,配合API未授权获得大量敏感信息,对信息进行进一步利用,思路要放开。
fuzz接口也可以使用Packer Fuzzer工具也挺好用的,它是一款针对Webpack等前端打包工具所构造的网站进行快速、高效安全检测的扫描工具
https://github.com/rtcatc/Packer-Fuzze
原文链接:https://forum.butian.net/share/2422
原文始发于微信公众号(亿人安全):渗透|记一次抽丝剥茧式的渗透测试
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论