SDL建设过程中安全人员如何进行能力沉淀(下)
字数 1167 2025-08-12 11:33:47
SDL建设中安全人员能力沉淀:自动化漏洞监控系统搭建指南
一、系统概述
本文介绍如何搭建一个自动化漏洞监控系统,用于在SDL(安全开发生命周期)建设过程中帮助安全人员快速发现SSRF等无回显漏洞。该系统通过结合BurpSuite、ceye.io DNSLOG服务和企微机器人实现实时漏洞告警。
二、核心组件准备
2.1 企业微信机器人配置
-
申请步骤:
- 在企业微信群中点击右上角"..."菜单
- 选择"群机器人"→"添加"
- 选择"自定义"机器人
- 获取Webhook地址,格式为:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=2192079e-f4aa-44ec-ad86-1dc198727100
-
关键参数:
key:机器人的唯一标识符- 支持@特定成员或@所有人功能
2.2 ceye.io DNSLOG服务配置
- 获取API Token:
- 登录http://ceye.io/profile
- 获取API Token
- 拼接两个关键API地址:
- DNS记录查询:
http://api.ceye.io/v1/records?token=ceye_token&type=dns - HTTP记录查询:
http://api.ceye.io/v1/records?token=ceye_token&type=http
- DNS记录查询:
三、监控脚本详解
项目地址:https://github.com/ba1ma0/WeWork_DNSLOG_Robot
3.1 配置文件修改
# 人工配置部分
robotAPI = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=wechat_robot_token"
ceyeDNS = "http://api.ceye.io/v1/records?token=ceye_token&type=dns"
ceyeHTTP = "http://api.ceye.io/v1/records?token=ceye_token&type=http"
staffNoList = ['01221455'] # 需要@的成员工号列表,@all表示所有人
sleepTime = 5 # 查询间隔时间(秒)
3.2 核心功能函数
-
IP信息查询:
def getIPLocation(ip): try: IpInfoResult = json.loads(requests.get(baiduAPI.replace("testflagIP",str(ip))).text) info = IpInfoResult['data'][0]['location'] except Exception as e: info = "IP :"+str(ip) return info -
时间格式转换:
def UTC2BJtime(UTCtimeStr): BJTime = datetime.datetime.strptime(UTCtimeStr,'%Y-%m-%d %H:%M:%S') + timedelta(hours=8) BJTimeStr = datetime.datetime.strftime(BJTime,'%Y-%m-%d %H:%M:%S') return BJTimeStr -
记录比对函数:
def comparePrevious(): global ceye_dns_previous,ceye_http_previous result = {'dnsChange':False,'dns':'','httpChange':False,'http':''} try: dnsResult = json.loads(requests.get(ceyeDNS).text) if dnsResult['data'] and dnsResult['data'][0]['id'] not in ceye_dns_previous: ceye_dns_previous = str(dnsResult['data'][0]) result['dnsChange'] = True result['dns'] = dnsResult['data'][0] except Exception as e: print(e) return result
3.3 主循环逻辑
while True:
try:
result = comparePrevious()
if result['dnsChange']:
ipInfo = getIPLocation(result['dns']['remote_addr'])
WeWorktPostContent = "*DNS请求*\n请求ID: "+result['dns']['id']+
"\n请求时间: "+UTC2BJtime(result['dns']['created_at'])+
"\n请求IP: "+result['dns']['remote_addr']+
"\nIP信息: "+ipInfo+
"\n请求DNS: "+result['dns']['name']+"\n*DNS请求*"
# 发送到企微机器人...
if result['httpChange']:
# 类似处理HTTP请求...
except Exception as e:
print(e)
time.sleep(sleepTime)
四、系统部署与使用
-
后台运行脚本:
nohup python3 DNSLOG.py & -
结合BurpSuite使用:
- 在BurpSuite的Project Options中配置ceye.io的DNSLOG地址
- 进行常规渗透测试时,系统会自动监控DNS/HTTP请求
-
漏洞发现流程:
- 当发现SSRF等无回显漏洞时,系统会通过企微机器人实时通知
- 通知内容包括:请求ID、时间、来源IP、地理位置和具体请求内容
五、扩展与优化
-
多平台集成:
- 可扩展支持Slack、钉钉等其他IM平台
- 可集成多个DNSLOG服务提高可靠性
-
增强功能:
- 添加漏洞自动分类功能
- 实现与漏洞管理系统的自动对接
- 增加频率限制和去重机制
-
相关项目:
- SDL自动化漏洞发现:https://github.com/ba1ma0/SDLC_Vuln_Auto_Find
- 涂鸦智能安全响应中心:https://src.tuya.com
六、注意事项
-
安全性考虑:
- 妥善保管企微机器人的key和ceye.io的token
- 建议对敏感信息进行加密存储
-
性能优化:
- 根据实际负载调整查询频率
- 添加异常处理和重试机制
-
合规性:
- 确保符合企业内部安全政策
- 获得必要的授权后再进行监控
通过这套系统,安全团队可以在SDL过程中更高效地发现无回显漏洞,提高整体安全测试的覆盖率和效率。