简介
SRC(Security Response Center)是企业用于接收用户报告产品安全漏洞的站点,连接白帽子与企业。目前国内主要有漏洞报告平台和企业 SRC 两种形式。请注意,挖洞必须合法合规,确保目标有授权,遵守法律法规。
目前 CNVD 接受政府、医疗、学校以及部分集团和国企等 SRC 漏洞,这增加了挖掘难度。以下是完整的挖洞思路:
本文介绍了基于 FOFA 进行目标资产检索、Python 脚本验证存活、结合 Xray 与 Crawlergo 联动扫描漏洞以及向 CNVD 等 SRC 平台提交漏洞的完整流程。内容涵盖工具准备、语法构造、代码实现及注意事项,旨在帮助安全研究人员合法合规地进行漏洞挖掘。

SRC(Security Response Center)是企业用于接收用户报告产品安全漏洞的站点,连接白帽子与企业。目前国内主要有漏洞报告平台和企业 SRC 两种形式。请注意,挖洞必须合法合规,确保目标有授权,遵守法律法规。
目前 CNVD 接受政府、医疗、学校以及部分集团和国企等 SRC 漏洞,这增加了挖掘难度。以下是完整的挖洞思路:
本文涉及的知识领域和工具主要包括:
主要使用的 Python 脚本包括:
注意:示例代码基于 Mac 系统编写,Windows 用户需根据提示修改路径或环境。
以 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[1].strip(), result[2].strip()]
writer.writerow(list_data)
count_range -= 1
if count_range == 0:
break
# 交互界面
def GUI_Communication():
print("\n\t FOFA——API 接口工具\n")
email = input('Email:')
api_key = input('api_key:')
num = int(input('是否为单量查询 (是 1/否 0):'))
if num == 1:
query = input('查询语法:')
Inquire(email, api_key, query)
elif num == 0:
with open("gammers.txt", 'r') as f:
for query_data in f.readlines():
query = query_data.replace('\n', '')
Inquire(email, api_key, query)
else:
print("只能输入 0 或 1!")
if __name__ == '__main__':
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:
print(url2, ok.status_code)
except:
try:
ok2 = requests.get(url2, timeout=(5, 8))
if ok2.status_code == 200:
print(url2, ok2.status_code)
with open("./url_ok.txt", 'a+') as url_ok:
url_ok.write(url1 + "\n")
url_ok.close()
else:
print(url2, ok2.status_code)
except:
print(f"{url2} URL 无效")
if __name__ == "__main__":
foo()
工具有很多,自己使用顺手即可。
本次使用 Xray 和 Crawlergo 进行联动,对整理好的目标进行漏洞挖掘。具体使用可参考 Xray 官方教程。
下载适合自己操作系统类型的工具(如 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 漏洞平台有很多,以下列出部分常见平台供参考:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online