作者: Beard_lin
0x01 指纹与poc在分布式中的架构问题
因为加入工具后的合理问题,所以在控制节点与执行节点都要进行一些更改。
控制节点:
1.载入数据
2.数据分配
执行节点:
1.载入指纹识别代码
2.载入poc验证代码
3.载入数据存储代码
0x02 指纹识别的相关问题
对于web指纹的匹配大致有如下位置:
1.title
2.body
3.http头
4.相关目录
前三项发送的请求数据较小,在大批量数据采集时可以考虑放弃目录探测,以此提升速度以及避免呗发现。
指纹识别代码可以参考github上一些工具,因为作者也是改的别人的,这里就不发出来了,下面写一下web指纹识别的大致逻辑。
1.访问目标网站
2.提取出目标网站的title body http头
3.指纹库中提取数据
4.做指纹匹配
5.存储指纹名
在这里其实是对指纹进行数据库存储的,这个留到下章再详细讲以下。
指纹库的选择问题:
1.使用开源指纹库
2.使用其他工具的指纹库
3.使用自己收集的指纹库
0x03 POC验证代码的规范问题
提取出相关指纹的域名后,可对其进行历史漏洞的验证。
因为此代码是写入到分布工具内的,就要考虑代码格式的问题,以下为作者使用的格式:
import urllib3,config
def run(fingerprint,domains):
'''
:param fingerprint:
:param domains: list
:return:
'''
filename='asdnui2@djiaejiwa'
for domain in domains:#a.fetchall():
#1. 发送攻击载荷的代码,具体为:
1.get发送
2.post发送
3.相应编码后发送
if xxx in a.data.decode('UTF-8'):
#此处为判断是否攻击成功,具体方式有:
1.dnslog验证
2.相关数据匹配
#匹配为攻击成功后,对数据进行存储
else: print('匹配未成功')
0x04 分布式工具中POC验证的逻辑
上面写完规范了,这里写以下工具现在的逻辑:
1.匹配出web指纹
2.提取相关指纹
3.导出发送至POC验证处
4.验证完成
0x05 总结
相关代码并不复杂,但是写到一起就要考虑很多问题以及整体的逻辑性。
本文相关代码并不打算发出,因为有部分代码使用的是其他工具中的内容。
整体难度并不是很高,所以有兴趣的大佬可以根据自己的习惯写一下。