漏洞扫描(Vulnerability Scanning)就是把“已知问题”自动化地映射到“目标系统”的过程。
核心只做三件事:
1. 识别——目标长什么样?
2. 匹配——有没有命中指纹或缺陷?
3. 验证——能不能给出可利用证据?
国睿软件测试刘老师用1个极简PoC、3段关键代码、5个踩坑点,带你拆透漏洞扫描测试的技术原理。#漏洞扫描#
1、识别:资产测绘三板斧
1.1 端口扫描 → 发现“入口”
python
# masscan 0.3 秒扫 1 个 C 段,输出 JSON
masscan 10.0.0.0/24 -p1-65535 -oJ ports.json --rate 10000
原理:发 SYN 包 → 根据 RST/ACK 判端口开放。
坑:--rate 过大易被防火墙 RST 洪泛,需配合 --wait 降速。
1.2 服务指纹 → 判断“谁家应用”
python
import nmap
nm = nmap.PortScanner()
nm.scan('10.0.0.1', '80', arguments='-sV')
print(nm['10.0.0.1']['tcp'][80]['product']) # Apache/Nginx
原理:发送畸形包 → 匹配响应 banner。
坑:Nginx 反代隐藏后端框架,需额外 Favicon Hash 或 HTTP Header Order 识别。
1.3 路由/域名 → 扩大攻击面
- crt.sh + subfinder 抓子域
- httpx 批量探测存活
- 输出统一资产表:assets.csv
2、匹配:规则引擎的两种姿势
2.1 基于特征(Signature-Based)
- 指纹文件:thinkphp_5_rce.yaml
yaml
id: thinkphp_5_rce
info:
name: ThinkPHP 5.x RCE
requests:
- method: GET
path: "/index.php?s=/Index/\\think\\app/invokefunction"
matchers:
- type: word
words:
- "uid="
原理:正则命中 invokefunction 关键字 → 报漏洞。
优点:低误报。缺点:只能扫已知 CVE。
2.2 基于差异(Diff-Based)
PoC 验证逻辑
1. 发送正常包 → 记录状态码 200、长度 1234。
2. 发送 payload → 如果触发 500 且长度 >2000,判定 SQL 报错注入。
python
r1 = requests.get(url + "?id=1")
r2 = requests.get(url + "?id=1'")
if r2.status_code == 500 and len(r2.text) > len(r1.text) * 1.5:
alert("SQLi found")
优点:0day 通用。缺点:依赖差异阈值,需人工调参。
3、 验证:让漏洞不再“纸上谈兵”
级别 | 验证动作 | 示例 |
L1指纹匹配 | 只识别版本 | Apache 2.4.49 |
L2 请求回显 | 回显 payload | {{7*7}} → 49 |
L3 交互式验证 | DNSLog 回连 | curl http://id.log.cn |
L4 利用链 | 直接 Getshell | 上传 WebShell 并访问 |
生产环境建议 L2 封顶:既证明存在,又避免破坏。
4、自己撸一个 300 行扫描器
目录结构
vscan/
├── core/
│ ├── scanner.py # 端口+指纹
│ ├── poc_engine.py # yaml 规则解析
│ └── verifier.py # 回显/DNSLog
├── pocs/
│ └── *.yaml
└── main.py
运行示例
bash
$ python main.py -f assets.csv -t 100
[+] 10.0.0.3:8080 Apache Tomcat/9.0.41
[!] 10.0.0.7:80 ThinkPHP 5.x RCE (verified)
5、常见坑 & 绕过
场景 | 扫描器表现 | 绕过方案 |
CDN 隐藏真实 IP | 扫 CDN 节点 404 | 先暴力子域找源站 |
WAF 拦截 | 大量 403 | 随机化 UA、延时、并发 < 5 |
登录态 | 扫描器 302 到登录页 | 用 Cookie 或 JWT 头注入 |
动态 Token | 每次请求 token 变 | 先抓包提取 token 正则 |
6、总结:一句话记原理
先找门,再锁门,最后踹一脚。
找门 = 资产发现
锁门 = 规则匹配
踹一脚 = PoC 验证
把这三步自动化,你就拥有了自己的漏洞扫描引擎。
如需软件安全测试漏洞扫描、源代码审计、渗透测试报告,欢迎咨询国睿软件测试刘老师 133-4500-4525,一起交流软件安全测试方案!#漏洞扫描测试报告#
上一篇:第三方软件测试报告为什么要盖CMA和CNAS章?一篇文章带你理解
下一篇:没有了!
推荐: 北京 天津 河北 石家庄 山西 太原 内蒙古 辽宁 沈阳 大连 吉林 长春 黑龙江 哈尔滨 上海 江苏 南京 苏州 浙江 杭州 安徽 合肥 福建 福州 厦门 江西 南昌 山东 济南 青岛 河南 郑州 湖北 武汉 湖南 长沙 广东 广州 深圳 珠海 东莞 广西 南宁 海南 重庆 四川 成都 绵阳 贵州 贵阳 云南 昆明 西藏 拉萨 陕西 西安 甘肃 兰州 青海 西宁 宁夏 银川 新疆 乌鲁木齐