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上看到的文章
工具的地址请自行扶梯子去登录

浙公网安备 33010602011771号