一:需求原因
信息收集资产中的大量子域名其实是一个站点。需要去除掉重复的只保留一个进行批量扫描。
优点:节省时间
缺点:可能会错过某些资产,如生产环境下的站点和测试环境站点只跑了一个,同时403和404和50几会错过一些资产。
二:资产收集
信息收集了大量子域名或网址,一次可能上万个域名,这个时候需要进行资产去重。
譬如:
1. enscan 针对固定资产公司名字进行收集的资产域名
enscan.exe -invest 100 -f gongsi.txt -is-merge -delay 10
从网页文本中提取主域名_网址Url的根域名一键提取,去重,TLD标注,txt文本在线域名整理工具_桔子SEO工具
2. 针对资产收到的根域名进行跑子域名合集工具(最好使用那种判断了泛解析的工具进行暴力枚举+搜集引擎api等的工具合集进行跑子域名)。
3. fofa等第三方网络空间进行的资产收集。
如域名:
domain=“baidu.com”
host=“baidu.com”
ip="127.0.0.1"
“127.0.0.1"
4. 通过上述三个步骤会收集到大量域名资产。去掉重复,去ip,最后仅保留域名
我一般用这个TxtTool工具处理 付费软件的更好用,最好虚拟机注册就可以分享和删除重装后的机器码变动的麻烦。
此时会存在大量的域名。然后使用博客之前提到的工具
进行资产的第一层帅选。
此时还不能完全保证资产没有搞偏,因为会有一些域名
如:根域名为 baidu.com
跑子域名工具 会有这种,www.baidu.com.ddos.com 之类的无用的防护域名。
但基本上能去个99%的以上了。
如果要去掉此类防护域名的,可以将结果导入mysql数据库中
先进行查询,再进行删除此类域名,然后导出所有域名。
select * from results2 where target like "%.com.%" and target like "%.cn"
delete from results2 where target like "%.com.%" and target like "%.cn"
select * from results2 where target like "%.com.%" and target like "%.com"
delete from results2 where target like "%.com.%" and target like "%.com"
1. 资产收集完毕,开始去重
先判断目标是否解析:
domaintoip批量获取域名ip(bat,python,exe脚本)
进行两次判断之后,保留能解析的域名且使用 精英txt文本整理3.4 提取完全重合的资产。
此处可以把所有有解析的域名进行命令webfinder.txt
完全重合的资产只保留ip资产,去掉内网的地址ip
查询归属地工具可以查出所有ip归属地:GitHub - zangcc/zangcc_IPAddr_Scanner: 批量IP地址归属地爬取工具,基于javafx开发,图形化界面操作更简单。实现IP地址查询,IP地址批量查询,IP归属地批量查询功能。IP库调用的是IP318.com和纯真IP库,都是较权威的IP查询网站。
删除掉不要的国外ip和局域网ip:
此时就有2分资产了,一份子域名资产,一份ip资产
子域名资产webfinder.txt 放入webfinder.jar 只跑80和443端口提取
ip资产ip.txt 放入跑端口网站
masscantonmap(快速扫描识别服务过滤cdn,过滤防火墙)
此时就能收集到大量子域名及ip+port的域名资产了。
当然也不要忘记js里面找资产了,
URLFinder.exe -f 1.txt -m 1 >> 1111.txt
同时主要加入防止资产搞偏里面过一道。
三:去重方法
先判断网站存活weblive
python38 whichAlive.py -f web.txt -t 5
得到的结果去掉不能访问的web,只保留能访问的子域名及能访问IP+port的web资产。
再使用 WebBatchRequest.jar进行web请求(这里最好不要勾选跳转跟随)
请求之后会得到
target title status banner lenght 的资产excle表
导入mysql数据库中的时候,分隔符还是什么的默认" 改“无” 就能全部导入了。
给每行插入序列id:
ALTER TABLE results2 ADD id INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;
删除长度,标题重复的数据只保留最小的id:
DELETE FROM results2 WHERE id NOT IN (SELECT id FROM (SELECT MIN(id) id FROM results2 GROUP BY `status`,`contentLength`,`banner`,`title` ) cc);
可全选可单选 `status`,`contentLength`,`banner`,`title` 根据自己的需求来。
一般这个时候我会全选,然后先导出去重的200 302 301的,然后404及403等等的看资产多少进行删除。
四:延申
如果使用xray之类批量扫描的话,建议使用代理池进行扫描。
然后先对资产再次进行过滤防止搞偏
同时使用xray配置进行资产进行使用根域名及ip进行限定然后扫描。