简介
SRC(Security Response Center)是企业用于接收用户报告产品安全漏洞的站点,连接白帽子与企业。目前国内主要有漏洞报告平台和企业 SRC 两种形式。请注意,挖洞必须合法合规,确保目标有授权,遵守法律法规。
目前 CNVD 接受政府、医疗、学校以及部分集团和国企等 SRC 漏洞,这增加了挖掘难度。以下是完整的挖洞思路:
- 寻找挖洞目标
- 使用趁手的挖洞工具
- 执行扫描
- 漏洞验证
- 提交漏洞
过程中使用的工具
本文涉及的知识领域和工具主要包括:
- Python 基本使用
- 漏洞扫描工具的使用
- 漏洞验证能力
- 网络空间测绘平台(FOFA、Hunter、Quake)、企查查、爱企查
- 长亭 Xray 漏洞扫描工具
- 360 Crawlergo 动态爬虫工具
- SRC 漏洞提交平台
主要使用的 Python 脚本包括:
- FOFA API 调用脚本
- 目标 URL 存活验证脚本
- Xray 和 Crawlergo 联动脚本
注意:示例代码基于 Mac 系统编写,Windows 用户需根据提示修改路径或环境。
详细过程
一、寻找挖洞目标
1.1 工具介绍
- 网络空间测绘平台:FOFA、奇安信 Hunter、360 Quake(部分需会员);
- API 脚本;
- 企查查、爱企查(部分功能需会员)。
1.2 目标检索过程
以 FOFA 为例批量检索目标地址,使用 FOFA 语法检索并通过 API 脚本下载数据。
事先组织好查询语法,本次以域名方式检索,对域名为 .gov.cn、地区为中国、状态码为 200 进行检索。由于会员限制每天只提取 1 万个目标,需优化检索语法。
host=".gov.cn" && country="CN" && status_code="200"
通过对地区细分可以再次筛选数据,例如北京地区:
host=".gov.cn" && country="CN" && status_code="200" && region="Beijing"
通过 FOFA API 进行数据提取,运行前需在个人中心获取邮箱和 API Key。
# 申明:此工具仅供学习使用,不负有相关法律责任
# Windows 用户和 Linux 用户均可直接使用,无需进行修改
import base64
import csv
import requests
# 查询函数
def Inquire(email, api_key, query):
qbase64 = base64.b64encode(query.encode()).decode()
api = 'https://fofa.info/api/v1/search/all?email={}&key={}&qbase64={}&size=10000'.format(email, api_key, qbase64)
print("正在请求页面查询{}".format(query))
response = requests.get(api)
data_result = response.json()["results"]
count = len(data_result)
print("总共可获取数量为{}条数据\n".format(count))
# print(data_result)
count_range = GetNumber()
write_file(query, data_result, count_range)
# 下载次数函数
def GetNumber():
count_range = input('请输入获取数据的数量 (最大限制 10000 条):')
# count_range = 10000 #若使用批量查询,默认下载数可以直接设置
return int(count_range)
# 写入函数
def write_file(query, data, count_range):
filename = query + '.csv'
with open(filename, 'a', newline="") as f:
writer = csv.writer(f)
writer.writerow(["URL", "IP 地址", "访问端口号"])
for result in data:
list_data = [result[0].strip(), result[].strip(), result[].strip()]
writer.writerow(list_data)
count_range -=
count_range == :
():
()
email = ()
api_key = ()
num = (())
num == :
query = ()
Inquire(email, api_key, query)
num == :
(, ) f:
query_data f.readlines():
query = query_data.replace(, )
Inquire(email, api_key, query)
:
()
__name__ == :
GUI_Communication()
脚本运行后输入正确的邮箱和 API Key,将组织好的语法进行输入,填写下载数量对数据下载,会在脚本目录生成一个以语法命令命名的表格文档,打开即为需要的目标地址。
接下来需要对目标存活性进行验证,并输出为格式化 URL(http://ip 或域名:端口),方便进行漏洞挖掘。使用 Python 脚本进行存活验证,需提前将表格里的 URL 保存到文本中每行一个目标 URL,放置在该代码相同文件夹即可。脚本运行完后会在同级目录生成 url_ok.txt 文件,该文件为最终目标 URL。
# 申明:此工具仅供学习使用,不负有相关法律责任
# Windows 用户需将代码中的./url.txt 的./去掉即可
import requests
def foo():
for url in open("./url.txt"):
url = url.strip()
if 'http' in url or 'https' in url:
url1 = url
url2 = None
else:
url1 = f'http://{url}'
url2 = f'https://{url}'
try:
ok = requests.get(url1, timeout=(5, 8))
if ok.status_code == 200:
print(url1, ok.status_code)
with open("./url_ok.txt", 'a+') as url_ok:
url_ok.write(url1 + "\n")
url_ok.close()
else:
ok_1 = requests.get(url2, timeout=(5, 8))
if ok_1.status_code == 200:
print(url2, ok_1.status_code)
with open("./url_ok.txt", 'a+') as url_ok:
url_ok.write(url2 + "\n")
url_ok.close()
else:
(url2, ok.status_code)
:
:
ok2 = requests.get(url2, timeout=(, ))
ok2.status_code == :
(url2, ok2.status_code)
(, ) url_ok:
url_ok.write(url1 + )
url_ok.close()
:
(url2, ok2.status_code)
:
()
__name__ == :
foo()
二、趁手的挖洞工具
工具有很多,自己使用顺手即可。
2.1 工具介绍
- Xray:一款由长亭洞鉴核心引擎中提取出的社区版漏洞扫描神器。
- 360-Crawlergo:360 安全团队开发的一个使用 Chrome Headless 模式进行 URL 入口收集的动态爬虫工具。
- 联动脚本:实现 Xray 和 Crawlergo 的配合使用。
本次使用 Xray 和 Crawlergo 进行联动,对整理好的目标进行漏洞挖掘。具体使用可参考 Xray 官方教程。
2.2 工具下载链接
- Xray:建议直接通过官网下载,GitHub 版本更新可能不及时。
- 360-Crawlergo:可通过 GitHub 获取。
- 联动脚本:可通过 GitHub 获取。
2.3 工具使用
下载适合自己操作系统类型的工具(如 Mac arm64 版本),统一放置在一个文件夹中。
将下载的 Crawlergo 和 Xray 放置在联动脚本程序中,然后删除联动脚本程序自带的 crawlergo 和 xray 文件夹。注意需要修改 crawlergo_darwin_arm64 文件名为 crawlergo,修改主程序 launcher.py 和 launcher_new.py 部分代码,主要是 Chrome 路径改为本地路径。例如博主 Chrome 浏览器位置为:/Applications/Google Chrome.app/Contents/MacOS/Google Chrome。
将第一步获取的目标放置在 targets.txt 文件中,注意需要逐行隔开。然后本地开始使用 Xray 监听 127.0.0.1:7777,脚本编写默认监听 7777 端口。联动本质为通过脚本将 Crawlergo 爬取的目标数据发送给正在监听的 Xray,然后实现目标的漏洞检查。
启动 Xray 监听命令如下:
./xray_darwin_arm64 webscan --listen 127.0.0.1:7777 --html-output proxy.html
启动联动主程序爬取目标,等待片刻,爬虫会将爬取的数据通过本地回环 7777 端口发送给 Xray,随后等待输出报告即可。
三、漏洞验证
漏洞验证是从事 Web 安全必须掌握的技能。通常报告里面会给相应的验证脚本和验证思路,大家直接根据报告进行验证一般都没有问题。
四、提交漏洞
提交 SRC 漏洞平台有很多,以下列出部分常见平台供参考:
- 阿里巴巴 (ASRC): https://security.alibaba.com/
- 阿里云先知: https://xianzhi.aliyun.com/
- 百度 (BSRC): https://bsrc.baidu.com/
- 腾讯 (TSRC): https://security.tencent.com/
- 360 (360SRC): https://security.360.cn/
- 美团 (MTSRC): https://security.meituan.com/
- 京东 (JSRC): https://security.jd.com/
- 华为 (HBP): https://bugbounty.huawei.com/
- 深信服 (SSRC): https://security.sangfor.com.cn/
- 小米 (MISRC): https://sec.xiaomi.com/
- 网易 (NSRC): https://aq.163.com/
- 快手 (KwaiSRC): https://security.kuaishou.com/
- 哔哩哔哩 (BILISRC): https://security.bilibili.com/
- 携程 (CSRC): https://sec.ctrip.com/
- 饿了么 (ESRC): https://security.ele.me/
- 滴滴出行 (DSRC): https://sec.didichuxing.com/
- 字节跳动 (ByteDance): https://security.bytedance.com/
- 蚂蚁集团 (AntSRC):
注意事项
- 漏洞挖掘过程一定要授权进行,不要非法挖洞,注意挖洞尺度;
- 检索目标 URL 时可以通过多种途径,不一定只有文中介绍的那些方法;
- 文中介绍的 Python 脚本,如果是 Windows 客户端需要修改部分代码;
- 文中的 Python 脚本如果有运行时报错,大概率可能是没有安装 Python 包,需要 pip install 安装一下;
- 如果官网下载的 Xray 运行报错,是因为当前最新版本的 Xray 默认运行不会生成新的配置文件,会找旧的配置文件就是 config.yaml 文件,所以如果之前没有用过这个工具,需要先下载旧版本然后生成配置文件拷贝给新版本进行使用;
- Xray 和 360-Crawlergo 联动脚本需要修改浏览器目录配置,根据自己系统路径进行修改;
- 如果出现爬取的目标发送给 Xray,Xray 没有扫描的动作,可能是目标的问题,尝试更换其他目标;
- 有更好的工具欢迎评论分享,大家一起学习,共同进步。


