软件安全检测中漏洞扫描测试的技术原理是什么?

作者:软件测试刘老师 发布于:2025-08-08 16:37:38 热度:0

漏洞扫描(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章?一篇文章带你理解

下一篇:没有了!

推荐: 北京 天津 河北 石家庄 山西 太原 内蒙古 辽宁 沈阳 大连 吉林 长春 黑龙江 哈尔滨 上海 江苏 南京 苏州 浙江 杭州 安徽 合肥 福建 福州 厦门 江西 南昌 山东 济南 青岛 河南 郑州 湖北 武汉 湖南 长沙 广东 广州 深圳 珠海 东莞 广西 南宁 海南 重庆 四川 成都 绵阳 贵州 贵阳 云南 昆明 西藏 拉萨 陕西 西安 甘肃 兰州 青海 西宁 宁夏 银川 新疆 乌鲁木齐

软件测试 CNAS、CMA第三方软件测试报告,第三方评估报告
MORE