长亭百川云 - 文章详情

subDomainsBrute 1.5:新增支持https证书查找,帮你发现更多域名

李姐姐的扫描器

78

2024-07-13

资产收集是渗透测试的基本环节,subDomainsBrute工具通过DNS暴力枚举,可以帮助你快速地完成早期域名、IP收集。

项目地址: https://github.com/lijiejie/subDomainsBrute

在1.5版本的改进中,进一步增强了发现能力。如下图所示,测试使用一个字典尝试扫描qq.com,可以发现4668个域名。

很多时候,一个白帽子能发现别人发现不了的漏洞,很可能是因为他收集的资产更全。一个4000域名的白帽子,要比一个手上8000域名的白帽子,挖到漏洞的难度大很多。越偏的站点,其出现漏洞的可能性越高。

   主要的改进

1.5版本新增了尝试获取https证书,并解析证书中的alt names。经过测试,可以额外发现30% ~ 100%的域名。其实际效果是超出预期的。

使用一个超小字典测试,结果如下:

不启用https证书发现,结果是94个域名

python subDomainsBrute.py -f next_sub.txt baidu.com --no-https

启用https证书发现,结果是165个域名

另外,在效率提升方面,添加了支持Proactor事件循环,在Windows下,也可以使用像-t 2000,启用超过250个线程的开关。当然,我并不建议这样做。越大的并发,意味着timeout越多,会出现一定数量的域名损失。目前默认是500每个进程。

同时,这个版本在python2.7 / 3.6 / 3.7 / 3.8 / 3.10都完成了相应的测试,解决了一些坑。

主要的坑是asyncio的不稳定,其接口在高低python中,是变动的。

也包括asyncio.wait_for,timeout没生效,观察到的现象就是hang up。因此python3会引入一个依赖async_timeout

同时,发现了不少像低版本中asyncio.wait_for协程内部的错误不向上抛出,不给父级函数捕获的问题。所以你会看到很奇怪的代码

`if sys.version_info.major == 3 and sys.version_info.minor == 6:`    `# I'll do this first, mute stderr`    `# Since python3.6 throws exception from inner function that can not be captured by except ...`    `sys.stderr = open(os.devnull, 'w')`

以及像overwrite 

asyncio.proactor_events._ProactorBasePipeTransport._call_connection_lost函数,都是类似的原因

如果需要禁用https证书查找,可使用开关 --no-https

这个版本已知待解决的问题,是多进程会重复扫描从证书中的域名,额外产生一些时间开销和浪费。这个问题会在下个版本中解决。

祝大家挖到更多高危漏洞。:)

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2