|
这篇文章主要介绍一种资产发现,自动扫描方案,文章来自“BugBounty漏洞赏金自动化”知识星球,未经授权,禁止转载!
0x01 开始
在赏金漏洞的挖掘过程中,有许多资产过于庞大,可能一个厂商的资产域名就可能高达上万,显然全部扫描也不现实 这里我们需要更多关注 目标的新业务,新资产,做的就是 持续不断的监控与收集新资产,新业务,以及关注行业最新漏洞,进行自动化漏洞扫描,这个持续过程有没有办法可以将这一切全部自动化实现呢?
当然是可以的,小智在这里分享一种方案,循环监控新增有效资产,对新增资产进行漏洞扫描,扫描完成后,结果发送到手机通知,这一切都是全自动循环去执行。
0x02 准备工作
-
Centos7+ 64 位 配置 4H 3G起 【服务器一台】
-
subfinder 【资产监控,域名收集】
-
httpx 【存活检测】
-
anew 【过滤重复】
-
nuclei 【漏洞扫描】
-
nuclei-templates 【漏洞扫描模板】
-
python3 【微信通知】
0x03 部署过程
先安装这些工具,并设置好软链接,能全局使用,这些工具安装很简单,不再阐述,如果不会下载安装,就去看教程,github上也有。
subfinder https://github.com/projectdiscovery/subfinder
httpx https://github.com/projectdiscovery/httpx
anew https://github.com/tomnomnom/anew
nuclei https://nuclei.projectdiscovery.io/
nuclei-templates https://github.com/projectdiscovery/nuclei-templates
python3
加强subfinder
接下来要为subfinder配置好一些获取资产的api接口,在/root/.config/subfinder/config.yaml文件中,尽量都配好,当然少配几个也没关系。
可以看到许多API Key 服务是空的,把这些尽量补全,这将会大大提升subfinder的资产发现能力,而且这些接口都是免费的,少部分会有一些限制,不过没关系,注册链接都放在下面了。
Binaryedge https://app.binaryedge.io/account/api
Censys https://censys.io/account/api
Certspotter https://sslmate.com/account/api_credentials
Chaos https://chaos.projectdiscovery.io/#/
Github https://github.com/settings/tokens
Intelx https://intelx.io/account?tab=developer
Passivetotal https://community.riskiq.com/settings
Robtex https://www.robtex.com/dashboard/
Security Trails https://securitytrails.com/app/account/credentials
Shodan https://account.shodan.io/
Spyse https://spyse.com/user
UrlScan https://urlscan.io/user/profile/
Virustotal https://www.virustotal.com/gui/user/username/apikey
ZoomEye https://www.zoomeye.org/profile
这是配置好的样子
配置手机企业微信通知
准备一个脚本,notify.py脚本如下
#-*-coding: utf-8 -*-
import requests,sys
import datetime
import logging
def push_wechat_group(content):
#print('开始推送')
# 这里修改为自己机器人的webhook地址
resp = requests.post("https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=123123123",
json={"msgtype": "markdown",
"markdown": {"content": content}})
print(resp.json()["errcode"])
if resp.json()["errcode"] == 0:
print('push wechat group success',resp.text)
if resp.json()["errcode"] != 0:
raise ValueError("push wechat group failed, %s" % resp.text)
file=sys.argv[1]
with open(file) as f:
data = f.read()
push_wechat_group(str(data))
去企业微信申请一个即可,个人也可以申请,接下来我们来尝试一下推送效果。
使用subfinder搜集hackerone子域名,httpx来验证存活,结束后,会把存活的资产发送到手机端的企业微信。如果你手机能收到,恭喜,可以下一步了。
subfinder -d hackerone.com | httpx -o res-hackerone.txt ;python3 notify.py res-hackerone.txt
anew的功能
anew主要将输出与旧文件进行比较,只会输出新添加的内容,项目介绍:https://github.com/tomnomnom/anew
例如 domain.txt,包含一组子域和现在新发现的subs.txt有相同的子域,这里anew就只会输出有新增的子域名。
使用以下命令,可以比较这两个文件并获取新添加的内容,看看下面效果就懂了。
自动化监控与扫描实现
首先还是要有一堆根域名,保存在txt,如:hackeronedomain.txt的内容,示例如下。
a.com
b.com
c.com
fiojf.com
不知道找的,可以去看看我星球中分享的,如何寻找有赏金的资产、Hackerone入门
第一轮
这是必需的,因为我们要先把目前已存在的域收集并保存在txt中,因为这些不属于新业务资产。
subfinder -silent -dL hackeronedomain.txt | anew subs.txt
第二轮 正式的开始我们自动化
这是个无尽的循环,每执行结束后1小时后,并重新执行。
这个流程是:先使用subfinder进行资产收集,并通过anew来过滤历史域名,把监测到的新资产送给httpx存活检测,httpx把存活的资产送给nuclei进行漏洞扫描,-es info的意思是排除扫描info级别的漏洞。
扫描结束后,会使用python把漏洞结果发送到我们手机企业微信通知,这样一个循环就结束了,并等待3600秒,也就是1小时,这是一个无尽的循环。
while true; do subfinder -dL hackeronedomain.txt -all | anew subs.txt | httpx | nuclei -es info -o res-hackeronedomain.txt ;python3 notify.py res-hackerone.txt ; sleep 3600; done
建议在 Digital Ocean 或 vultr 等 VPS 系统上运行这些程序,启一个后台线程即可,建议使用tmux的后台功能,这样扫描到重复漏洞会非常少的,也会更加容易获取赏金,将更多的关注新的子域漏洞。
注:Nuclei默认配置下,启动前都会自动去仓库更新他的扫描规则 poc,这块不用修改。
0x04 真实场景
在 2022/2/17日,4:47 手机收到一条漏洞信息
当然了,这个方案目前只是一个雏形,也还有很多可以提升改进的地方。rengine其实早已把这个功能集成了,但我们手动实现一遍,对自动化的理解与后期的升级改造将会有更大的帮助。
最后推荐下朋友小智的"BugBounty漏洞赏金自动化"知识星球,请自行考虑清楚再决定是否加入...。
星球内拥有更多自动化案例,不定期举行分享会,星球已涨到129元!日后的价格只有涨没有跌!现在入股不亏。
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推 荐 阅 读
欢 迎 私 下 骚 扰
原文始发于微信公众号(潇湘信安):打造全自动漏洞赏金扫描工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论