跳到主要内容自动化批量挖掘 SRC 漏洞实战指南 | 极客日志Python
自动化批量挖掘 SRC 漏洞实战指南
本文介绍基于 Fofa、Rad、Burp 和 Xray 的自动化漏洞挖掘流程。通过 Fofa 采集目标资产,利用 Python 脚本清洗数据格式,配置 Burp Suite 作为代理并开启被动扫描,将流量转发至 Xray 进行漏洞检测。最后通过 Python 脚本实现批量爬虫调用,完成对教育行业等目标的自动化安全评估。整个过程强调工具链整合与脚本化操作,旨在提升漏洞发现效率,同时需严格遵守法律法规,仅在授权范围内进行测试。
自动化批量挖掘 SRC 漏洞实战指南
前言
在网络安全测试中,手动对大量目标资产进行扫描效率低下且容易遗漏。通过整合资产采集、爬虫抓取、流量代理与漏洞扫描工具,可以实现自动化批量挖掘流程。本文详细介绍如何利用 Fofa、Rad、Burp Suite 和 Xray 构建一套高效的自动化漏洞扫描工作流。
核心原理
该方案的核心逻辑是将目标资产交由爬虫工具(Rad)爬取,产生的 HTTP/HTTPS 请求流量经过 Burp Suite 代理,再转发给被动扫描器(Xray Passive Scanner)进行分析。通过 Python 脚本串联各环节,实现从资产发现到漏洞检测的流水线作业。
所需工具清单
- Fofa:用于批量采集目标域名或 IP 资产(建议使用会员账号以获取更丰富数据)。
- Rad:由 Chaitin 开发的浏览器爬虫工具,支持无头模式,适合批量抓取。
- Chrome/Chromium 浏览器:Rad 默认依赖浏览器内核。
- Burp Suite:作为中间人代理,负责拦截、修改及转发流量。
- Xray:强大的漏洞扫描器,需开启被动扫描模式监听特定端口。
- Python 环境:用于编写数据处理脚本和批量执行脚本。
步骤一:资产采集与清洗
1.1 使用 Fofa 采集
以教育行业(edu.cn)为例,在 Fofa 搜索框输入以下语句进行初步筛选:
导出结果后,通常会得到包含 IP 地址和域名的列表。为了适配 Rad 的输入规则,需要确保每条记录都带有协议头(http:// 或 https://)。
1.2 资产格式化处理
原始导出的数据往往只包含 IP 或域名,直接放入 Rad 无法识别。我们需要编写 Python 脚本批量添加协议前缀。
脚本功能: 读取包含 IP 或域名的文本文件,为每一行添加 https:// 前缀,并保存为新文件。
import os
def process_assets(input_file, output_file):
try:
with open(input_file, 'r', encoding='utf-8') as f_in:
lines = f_in.readlines()
processed_lines = []
for line in lines:
target = line.strip()
if not target:
continue
if not target.startswith('http://') and not target.startswith('https://'):
target = 'https://' + target
processed_lines.append(target)
with open(output_file, 'w', encoding='utf-8') as f_out:
f_out.write('\n'.join(processed_lines))
print(f"处理完成,共 {len(processed_lines)} 条资产")
except Exception as e:
print(f"发生错误:{e}")
if __name__ == "__main__":
process_assets("assets.txt", "assets_processed.txt")
运行脚本后,将生成的 assets_processed.txt 放入 Rad 的工作目录中备用。
步骤二:配置 Burp Suite 代理
Burp Suite 在此架构中充当流量中转站。我们需要配置其代理设置以及插件扩展。
2.1 基础代理设置
- 打开 Burp Suite,进入 Proxy -> Options 标签页。
- 找到 Proxy Listeners,点击 Add。
- 设置绑定地址为
0.0.0.0,端口为 8080(这是 Rad 爬虫的目标端口)。
- 勾选 Use a proxy listener 以确保服务启动。
2.2 被动扫描插件配置
为了提高漏报率,建议安装一些辅助被动扫描插件。例如:
- Active Scan Helper:增强主动扫描能力。
- Vulnerability Scanner Plugins:根据需求加载特定的检测规则。
虽然插件数量并非越多越好,但合理的组合能覆盖更多边缘情况。
2.3 流量出口设置
为了让 Xray 能够接收 Burp 转发的流量,需要配置 Burp 的 HTTP Handler 或类似机制将流量重定向到 Xray 监听的端口(默认为 7777)。
注意:部分版本的 Burp 需要通过 Extensions 安装 HTTP Handler 插件来实现流量转发,或者在 Rad 端直接配置代理链。此处演示标准转发逻辑:
- 在 Rad 的配置文件中,将代理指向 Burp (127.0.0.1:8080)。
- 在 Burp 端,配置 HTTP Handler 将特定请求转发至
127.0.0.1:7777。
- 确保防火墙允许 7777 端口的入站连接。
步骤三:配置 Xray 被动扫描
Xray 默认可能不扫描某些特定类型(如 edu 域名),需要在配置文件中显式开启。
3.1 修改配置文件
找到 Xray 的安装目录下的 config.yaml 文件,编辑以下内容:
passive_scan:
enabled: true
port: 7777
rules:
- name: allow_edu
match:
domain: ".edu.cn"
action: scan
3.2 启动服务
./xray pscan --listen 7777
此时,Xray 已准备好接收来自 Burp 转发的数据包并进行漏洞分析。
步骤四:自动化批量执行
命令行窗口通常只能逐个输入 URL,对于成百上千的资产,必须使用脚本批量调用 Rad。
4.1 批量爬虫脚本
以下 Python 脚本实现了多线程并发调用 Rad 的功能,读取处理好的资产文件并启动爬虫进程。
import subprocess
import threading
from queue import Queue
class RadBatchScanner:
def __init__(self, asset_file, rad_path, burp_port=8080, xray_port=7777):
self.asset_file = asset_file
self.rad_path = rad_path
self.burp_port = burp_port
self.xray_port = xray_port
self.queue = Queue()
def worker(self):
while True:
url = self.queue.get()
if url is None:
break
cmd = [
self.rad_path,
'-target', url,
'-proxy', f'http://127.0.0.1:{self.burp_port}',
'-threads', '10',
'-output', f'rad_log_{url.replace("://", "_").replace("/", "_")}.txt'
]
try:
result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=300)
print(f"[+] 扫描完成:{url}")
except Exception as e:
print(f"[-] 扫描失败:{url} - {e}")
finally:
self.queue.task_done()
def run(self, max_threads=20):
with open(self.asset_file, 'r', encoding='utf-8') as f:
urls = [line.strip() for line in f if line.strip()]
threads = []
for _ in range(max_threads):
t = threading.Thread(target=self.worker)
t.start()
threads.append(t)
for url in urls:
self.queue.put(url)
self.queue.join()
for _ in range(max_threads):
self.queue.put(None)
for t in threads:
t.join()
if __name__ == "__main__":
scanner = RadBatchScanner(
asset_file="assets_processed.txt",
rad_path="/path/to/rad",
burp_port=8080,
xray_port=7777
)
scanner.run(max_threads=20)
4.2 执行效果
运行脚本后,控制台会显示每个资产的扫描进度。Rad 会将流量发送给 Burp,Burp 转发给 Xray,最终在 Xray 的日志或报告中生成漏洞信息。
注意事项与合规声明
- 授权测试:本教程仅用于安全研究与授权渗透测试。未经授权对他人系统进行扫描属于违法行为。
- 资源消耗:批量扫描会对目标服务器造成压力,请控制并发线程数,避免导致对方服务不可用。
- 误报处理:自动化工具难免产生误报,所有发现的漏洞需人工验证确认。
- 工具更新:安全工具版本迭代迅速,请保持 Rad、Burp 和 Xray 为最新版本以获得最佳检测效果。
总结
通过上述流程,我们建立了一个从资产发现到漏洞检测的自动化闭环。利用 Python 脚本解决数据预处理和并发控制问题,结合专业安全工具的被动扫描能力,可以显著提升 SRC 挖掘的效率。在实际操作中,应根据目标特性灵活调整扫描策略,并始终遵循合法合规的原则。
相关免费在线工具
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online