记一次抽丝剥茧式的渗透测试

网站的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-Fuzzer

  • 发表于 2023-09-08 09:00:00
  • 阅读 ( 9026 )
  • 分类:渗透测试

1 条评论

Jim2g
大佬能说下log4j 发现的思路吗
请先 登录 后评论
请先 登录 后评论
苏苏的五彩棒
苏苏的五彩棒

25 篇文章

站长统计