郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。
感谢您的++++点赞、关注、收藏、分享!++++
𖤐 兄 弟 , 感 觉 如 何 , 来 到 第 二 回 合 啦 , 加 油!
𖤐𝓑𝓻𝓸𝓽𝓱𝓮𝓻, 𝓱𝓸𝔀 𝓭𝓸 𝔂𝓸𝓾 𝓯𝓮𝓮𝓵? 𝓒𝓸𝓶𝓲𝓷𝓰 𝓽𝓸 𝓽𝓱𝓮 𝓼𝓮𝓬𝓸𝓷𝓭 𝓻𝓸𝓾𝓷𝓭, 𝓵𝓮𝓽'𝓼 𝓰𝓸 !
→ 信息收集
→ 漏洞检测▸漏洞扫描▸++++理论基础与NSE脚本++++-----我们在这儿~ 🔥🔥🔥
→ 初始立足点
→ 权限提升
→ 横向移动
→ 报告/分析
→ 教训/修复
目录
[1.1 漏洞扫描理论核心框架](#1.1 漏洞扫描理论核心框架)
[1.1.1 漏洞扫描器工作原理](#1.1.1 漏洞扫描器工作原理)
[1.1.1.1 四步标准化流程](#1.1.1.1 四步标准化流程)
[1.1.1.2 相关重要名词](#1.1.1.2 相关重要名词)
[1.1.1.3 误报与漏报](#1.1.1.3 误报与漏报)
[1.1.2 漏洞扫描类型对比](#1.1.2 漏洞扫描类型对比)
[1.1.2.1 内部扫描 vs 外部扫描](#1.1.2.1 内部扫描 vs 外部扫描)
[1.1.2.2 未经身份验证的扫描 vs 经过身份验证的扫描](#1.1.2.2 未经身份验证的扫描 vs 经过身份验证的扫描)
[1.1.2.3 主动扫描 vs 被动扫描](#1.1.2.3 主动扫描 vs 被动扫描)
[1.1.3 漏洞扫描关键考虑因素](#1.1.3 漏洞扫描关键考虑因素)
[1.2.1 NSE核心概念](#1.2.1 NSE核心概念)
[1.2.1.1 什么是NSE](#1.2.1.1 什么是NSE)
[1.2.1.2 NSE脚本管理](#1.2.1.2 NSE脚本管理)
[1.2.1.3 漏洞扫描实战命令](#1.2.1.3 漏洞扫描实战命令)
[1.2.2 专用NSE脚本集成指南](#1.2.2 专用NSE脚本集成指南)
[1.2.2.1 专用脚本 vs 通用脚本](#1.2.2.1 专用脚本 vs 通用脚本)
[1.2.2.2 专用脚本集成流程](#1.2.2.2 专用脚本集成流程)
1.1 漏洞扫描理论核心框架

1.1.1 漏洞扫描器工作原理
1.1.1.1 四步标准化流程
-
**📍 主机发现:**检测目标是否在线(如ICMP/Ping扫描)。
-
**🚪 端口扫描:**识别开放端口(TCP SYN、全连接扫描等)。
-
**🖥️ 服务与版本检测:**通过协议交互指纹识别操作系统及服务版本(如SSH Banner、HTTP头)。
-
**🔍 漏洞匹配:**将收集信息与漏洞库(如CVE、NVD)比对生成报告。
💡 技术要点:扫描器准确性取决于指纹库更新程度和检测算法的精细度。
1.1.1.2 相关重要名词
概念 | 全称 | 核心功能 | 评分/标识方式 | 获取途径 | 应用场景 |
---|---|---|---|---|---|
CVE 🔖 | 通用漏洞与暴露 (Common Vulnerabilities and Exposures) | 漏洞统一标识 为公开漏洞分配唯一ID(如CVE-2024-12345) | 无评分,仅提供: - 漏洞描述 - 影响范围 - 参考链接 | 1. 官网:cve.mitre.org 2. NVD数据库 3. 安全扫描器内置库 | • 漏洞报告标准化 • 跨平台漏洞追踪 • 安全公告引用 |
CVSS 📊 | 通用漏洞评分系统 (Common Vulnerability Scoring System) | 漏洞风险量化 通过数学模型计算漏洞严重性(0-10分) | 三维度评分 : 1. 基础分(攻击复杂度/影响) 2. 时序分(修复状态变化) 3. 环境分(业务场景适配) ⚠️ 常用v3.1标准 | 1. NVD官网查CVE时自动显示 2. 漏洞扫描器报告 3. API接口调用(JSON/XML) 4. 手动计算器:CVSS Calculator | • 漏洞修复优先级排序 • 合规审计(如PCI DSS要求处理≥7.0分漏洞) • 保险理赔风险评估 |
NVD 💾 | 国家漏洞数据库 (National Vulnerability Database) | CVE的增强仓库 由NIST维护,附加: - CVSS评分 - 修补建议 - 影响产品清单 | 整合CVE+CVSS: • 提供漏洞完整画像 • 含CPE(受影响产品标识) | nvd.nist.gov 支持: - 关键词搜索 - CPE匹配 - 数据订阅(RSS/JSON) | • 企业漏洞管理平台数据源 • 安全产品漏洞库同步 • 研究机构数据分析 |
CVSS 评分维度(v3.1)
评分维度 | 评估内容 | 权重 |
---|---|---|
攻击途径 | 网络/本地/物理接触要求 | 0.85 |
攻击复杂度 | 利用所需技术难度 | 0.77 |
权限要求 | 攻击前需获取的权限级别 | 0.62 |
影响范围 | CIA三要素(机密性/完整性/可用性) | 1.0 |
💡 示例 :Log4j2漏洞 (CVE-2021-44228) 的CVSS v3.1评分为 10.0(危急)
攻击途径:网络远程利用
复杂度:低(无需权限)
影响:完全控制系统
编程化获取(API示例)
python
import requests
# 导入requests模块,它是一个常用的Python库,用于发送HTTP请求。这里用它来向NVD API发送请求并获取数据。
cve_id = "CVE-2021-44228"
# 定义了一个变量 cve_id,并将其设置为指定的CVE ID
response = requests.get(f"https://services.nvd.nist.gov/rest/json/cves/2.0?cveId={cve_id}")
# 使用requests.get()方法:向NVD API发送一个GET请求。请求的URL包括了CVE ID参数,告诉API我们要获取该特定CVE的详细信息。
# 使用Python的f-string格式化字符串,将cve_id动态插入到URL中。
cvss_score = response.json()["vulnerabilities"][0]["cvssMetricV31"][0]["cvssData"]["baseScore"]
# 使用response.json()方法:将API返回的JSON响应解析为Python的字典类型。
print(f"{cve_id} CVSS评分: {cvss_score}")
# 打印出CVE ID和它对应的CVSS评分,格式化为 CVE-XXXX-XXXX CVSS评分: X
1.1.1.3 误报与漏报
对比维度 | 误报(False Positive) 🚫❌ | 漏报(False Negative) 🕳️🔍 |
---|---|---|
定义 | 安全工具错误报告漏洞 实际不存在风险被误判为存在 | 真实漏洞未被检测到 实际存在风险但未被工具发现 |
产生原因 | - 扫描规则过严 - 指纹库误匹配 - 网络波动干扰 - 业务逻辑误判 | - 扫描规则过宽 - 漏洞库未更新 - 加密流量绕过 - 0day漏洞无特征 |
典型场景 | 1. 将正常HTTP 404页面报为"目录遍历漏洞" 2. 加密通信误判为"恶意加密隧道" | 1. 未识别已公开的Apache Log4j漏洞(CVE-2021-44228) 2. 绕过WAF的SQL注入攻击未被拦截 |
业务影响 | ⚠️ 资源浪费 - 团队耗时验证虚假漏洞 - 分散真实威胁响应精力 | ⚠️ 安全风险 - 攻击者利用未检测漏洞入侵 - 导致数据泄露或系统瘫痪 |
量化影响 | 精确率(Precision)下降 TP/(TP+FP) 比值降低 |
召回率(Recall)下降 TP/(TP+FN) 比值降低 |
修复优先级 | 需优化检测规则(如调整阈值/添加白名单) | 需升级检测能力(更新特征库/增强探测深度) |
典型案例 | ✔️ 防火墙将员工VPN连接误报为"恶意C2通信" ✔️ 扫描器将CMS合法插件报为"后门" | ✔️ 勒索病毒利用未入库漏洞加密文件 ✔️ 黑客通过未检测的API未授权访问获取数据 |
降低策略 | 添加业务白名单 人工验证高危告警 启用机器学习误报过滤 | 实时订阅威胁情报 部署行为检测(非特征匹配) 定期渗透测试补盲 |
1.1.2 漏洞扫描类型对比
1.1.2.1 内部扫描 vs 外部扫描
类型 | 特点 | 典型场景 |
---|---|---|
🔒 内部扫描 | 从组织网络内部发起,模拟内部威胁 | 数据中心、内网服务器评估 |
🌐 外部扫描 | 从互联网发起,模拟外部攻击者视角 | 对外Web服务安全审计 |
1.1.2.2 未经身份验证的扫描 vs 经过身份验证的扫描
类型 | 特点 | 典型场景 |
---|---|---|
❓ 未经身份验证 | 无系统权限,仅发现表面漏洞 | 快速暴露面评估 |
🔑 经过身份验证 | 提供凭证后深度扫描,检测配置缺陷和补丁缺失 | 合规检查(如PCI DSS) |
1.1.2.3 主动扫描 vs 被动扫描
对比维度 | 主动扫描 (Active) 🔍⚡ | 被动扫描 (Passive) 🕵️♂️🌊 |
---|---|---|
工作原理 | 向目标发送探测数据包 (如构造HTTP请求、TCP SYN包) | 监听网络流量 (镜像流量/抓包分析,不发送任何数据) |
扫描触发方式 | 计划任务/手动触发/API调用 | 实时流量触发(需部署流量镜像或分光设备) |
网络影响 | ⚠️ 可能造成负载压力 - 老旧设备宕机风险 - 业务流量干扰 | ✅ 零网络干扰 - 仅监听不影响目标系统 |
检测覆盖范围 | 全面覆盖开放端口/服务 支持深度认证扫描 无法检测加密内容(无密钥时) | 捕获真实业务交互(含加密流量解密) 仅检测活跃服务(不访问的端口不暴露) |
漏洞检出能力 | 高可控性 - 可主动验证漏洞(如发送Payload) - 支持OS/服务版本精准识别 | 依赖流量真实性 - 仅能发现已发生的攻击行为 - 无法扫描未访问的路径 |
身份验证支持 | ✅ 支持认证扫描 (提供账号登录系统深度检测) | ❌ 仅限未授权检测 (无法模拟登录态行为) |
典型工具 | Nessus, OpenVAS, Nmap | Zeek, Wireshark, Suricata (IDS模式) |
合规审计适用性 | ✅ 满足PCI DSS等要求定期扫描 | ⚠️ 仅作补充(无法替代主动扫描的全面性) |
漏报风险 | 较低(强制覆盖所有定义目标) | 较高(依赖用户/攻击者触发的流量) |
误报风险 | 中(受探测包构造精度影响) | 低(基于真实流量分析) |
法律风险 | ⚠️ 需书面授权(未经授权扫描即违法) | ✅ 无需额外授权(仅监听自有网络) |
典型场景 | 安全评估 合规审计 预上线测试 | 生产环境监控 攻击行为捕获 异常流量分析 |
1.1.3 漏洞扫描关键考虑因素

核心注意事项:
-
⏱️ 扫描窗口:避开业务高峰期,防止资源争用。
-
⚠️ 网络影响:避免对老旧设备进行高强度扫描(如ICMP洪水检测)。
-
📊 结果优先级:结合CVSS评分和业务关键性排序修复。
-
🛡️ 法律合规:获取书面授权后再扫描第三方系统。
最佳实践:将漏洞扫描纳入持续集成(CI/CD)流水线,实现自动化安全左移。
1.2Nmap脚本引擎(NSE)漏洞扫描指南
1.2.1 NSE核心概念
1.2.1.1 什么是NSE
特性 | 说明 |
---|---|
脚本功能 | 扩展Nmap基础能力,支持漏洞检测、暴力破解、网络发现等任务 |
脚本分类 | safe (稳定无风险)、vuln (漏洞检测)、intrusive (可能造成服务崩溃)等 |
关键依赖 | 需配合版本检测 (-sV ) 获取服务信息,否则漏洞检测无效 |
⚠️ 注意事项 :
intrusive
类脚本破坏目标系统 !务必通过script.db
或官方文档确认脚本分类后再执行。
Nmap(NSE)在漏洞扫描中的定位
使用场景 | 价值体现 |
---|---|
无专业扫描器时使用NSE | 轻量化漏洞验证工具 |
补充商业扫描器结果 | 快速验证特定漏洞 |
敏感环境扫描 | 低网络影响,避免触发防护系统 |
定制化检测需求 | 灵活集成专用检测逻辑 |
✨ 最佳实践 :将专用NSE脚本与
vulners
结合使用
- 先用
vulners
发现潜在漏洞 → 再用专用脚本精准验证高危CVE
1.2.1.2 NSE脚本管理
组件 | 路径/命令 | 作用 |
---|---|---|
脚本目录 | /usr/share/nmap/scripts/ |
存储所有 .nse 脚本文件 |
脚本索引 | script.db |
记录脚本名称、分类的数据库文件 |
核心脚本 | vulners.nse |
集成Vulners漏洞数据库,提供实时CVE数据 |
vulners
脚本优势 :
✅ 自动匹配服务版本与CVE漏洞
✅ 标注CVSS风险评分(例:CVSS 4.3 )
✅ 标记可利用漏洞(*EXPLOIT*
标签)
✅ 提供漏洞详情链接(如 [CVE-2021-41773]
)

1.2.1.3 漏洞扫描实战命令
bash
kali@kali:~$ sudo nmap -sV -p 443 --script "vuln" 192.168.50.124
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org )
...
PORT STATE SERVICE VERSION
443/tcp open http Apache httpd 2.4.49 ((Unix))
...
| vulners:
| cpe:/a:apache:http_server:2.4.49:
...
https://vulners.com/githubexploit/DF57E8F1-FE21-5EB9-8FC7-5F2EA267B09D
*EXPLOIT*
| CVE-2021-41773 4.3 https://vulners.com/cve/CVE-2021-41773
...
|_http-server-header: Apache/2.4.49 (Unix)
MAC Address: 00:0C:29:C7:81:EA (VMware)
参数 | 作用 |
---|---|
-sV |
启用服务版本检测(漏洞扫描必备) |
-p 443 |
限定扫描目标端口 |
--script "vuln" |
调用所有vuln 分类脚本 |
输出解析:
-
服务版本检测
-
Nmap通过
-sV
参数成功识别目标服务为 Apache 2.4.49 -
版本检测是漏洞扫描的基础前提(无版本信息则无法匹配CVE)
-
-
漏洞脚本执行
-
使用
--script "vuln"
调用所有**漏洞类别(vuln)**的NSE脚本 -
脚本自动匹配检测到的服务版本与已知漏洞数据库
-
-
漏洞信息展示内容
-
✅ CVE编号 (如检测到的
CVE-2021-41773
) -
✅ CVSS风险评分 (例如显示的
4.3
分) -
✅ 漏洞详情链接(直接跳转至漏洞权威说明页面)
-
⚠️ 高危漏洞标记 (对可被利用的漏洞标注
*EXPLOIT*
警告标签)
-
-
关键依赖条件
-
必须成功检测服务版本(
-sV
参数必需) -
若服务识别失败,
vulners
脚本不会输出任何结果 -
示例中因精确识别Apache 2.4.49,才能匹配CVE-2021-41773
-
1.2.2 专用NSE脚本集成指南
1.2.2.1 专用脚本 vs 通用脚本
对比维度 | vulners 通用脚本 |
专用CVE脚本(如http-vuln-cve2021-41773 ) |
---|---|---|
覆盖范围 | 所有匹配CVE | 单一特定CVE |
输出精度 | 信息量大需筛选 | 针对性强,直接验证指定漏洞 |
验证深度 | 仅数据库匹配 | 执行针对性检测逻辑 |
适用场景 | 初步全面扫描 | 关键漏洞专项验证 |
💡 核心价值 :专用脚本提供精准漏洞验证,避免通用脚本的信息过载问题
1.2.2.2 专用脚本集成流程

关键操作步骤:
-
脚本搜索:
Google搜索:"CVE-2021-41773 nse"
→ 定位GitHub等代码库 -
脚本保存
路径:
/usr/share/nmap/scripts/
命名规范:
http-vuln-cve2021-41773.nse
(保持语法统一) -
数据库更新
bashkali@kali:~$ sudo nmap --script-updatedb [sudo] password for kali: Starting Nmap 7.92 ( https://nmap.org ) NSE: Updating rule database. NSE: Script Database updated successfully. Nmap done: 0 IP addresses (0 hosts up) scanned in 0.54 seconds
-
专项扫描
bashkali@kali:~$ sudo nmap -sV -p 443 --script "http-vuln-cve2021-41773" 192.168.50.124 Starting Nmap 7.92 ( https://nmap.org ) Host is up (0.00069s latency). PORT STATE SERVICE VERSION 443/tcp open http Apache httpd 2.4.49 ((Unix)) | http-vuln-cve2021-41773: | VULNERABLE: | Path traversal and file disclosure vulnerability in Apache HTTP Server 2.4.49 | State: VULNERABLE # 脆弱的,易被攻击的 | A flaw was found in a change made to path normalization in Apache HTTP Server 2.4.49. An attacker could use a path traversal attack to map URLs to files outside the expected document root. If files outside of the document root are not protected by "require all denied" these requests can succeed. Additionally this flaw could leak the source of interpreted files like CGI scripts. This issue is known to be exploited in the wild. This issue only affects Apache 2.4.49 and not earlier versions. | | Disclosure date: 2021-10-05 | Check results: | | Verify arbitrary file read: https://192.168.50.124:443/cgibin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd ... Nmap done: 1 IP address (1 host up) scanned in 6.86 seconds
🔐 安全准则:
1.永不直接运行来源未知的.nse文件
2.生产环境前必须在测试环境验证
3.定期审计自定义脚本代码
创作不易~感谢您的++++点赞、关注、收藏、分享++++ ~
您的支持是我创作最大的动力!