15 常见漏洞 xxe漏洞

xxe漏洞我去年7月份就有接触到的

当时好像听的也是月师傅的课来着

不过听的是2020年的

但是不知道为啥2021年的xxe漏洞我死活复现不出来

 

我借助月师傅的笔记简单的总结一下

首先xxe漏洞的条件不算太苛刻

libXML < libxml2.9即可

若是PHP版本过高,库的版本超过2.9了,则即使可以引用外部实体也是无法执行代码的

 

XML是用于标记电子文件使其具有结构性的标记语言

常见的XML语法结构如下

内部声明 DTD 格式:<!DOCTYPE 根元素 [元素声明]>。
引用外部 DTD 格式:<!DOCTYPE 根元素 SYSTEM “文件名”>。

 

 上面是面对不同的语言和环境下能够执行的协议

 

xxe常见的利用方式

1、 读取敏感文件

<?xml version="1.0"?><!DOCTYPE a [<!ENTITY b SYSTEM "file:///etc/passwd">]><c>&b;</c>
若是通过get传输要记得url编码
因为有的字符url是不编码的,所以需要通过burp编码来
 
2、使用php伪协议php://filter读取文件
该伪协议的利用方式和文件包含中我觉得有些类似的
 
3、 扫描内网和端口
通过扫描ip和端口确定内网机器的ip和端口开放情况,访问端口会获取banner信息
 
4、执行命令
若开启expect扩展
http://webpenter.com/xxe.php?xml=<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY test SYSTEM "expect://whoami">
]>
<abc>&test;</abc>
 
无回显的情况下
和之前的rce无回显的思路是一样的
使用OOB(Out Of Band)即数据外带的方法
月师傅的OOB方法有些原始
即编写一个xml网页和记录php

 

 这里将访问到的file信息通过remote 发送到 http://192.168.0.107/evil.xml上

 

 下面那句是1.php的内容

evil.xml则将所得到的信息再次发送到1.php里,1.php则将得到的信息做一个本地保存

这就实现了一个简易的外带通道

 

然鹅

https://github.com/joernchen/xxeserve

我们在了解了基本的原理后,能用工具还是用工具

没用工具再自己造轮子

这个工具是基于ruby的,可以将这个工具丢到kali上跑

虽然kali是处于咱一个内网

但是咱可以使用frp反向代理进行连接,这里只提供一个思路,因为我具体也没有操作过

使用xxeserve进行监听我们可以很好的得到xxe执行的数据

https://www.freebuf.com/vuls/194112.html 这是我再freebuf上看到的文章

工具的地址请自行扶梯子去登录

 
posted @ 2022-03-08 23:30  r0nGer  阅读(244)  评论(0)    收藏  举报