本次复现是跟着这篇博客来的:https://xz.aliyun.com/t/3357#toc-11
跟着它的复现步骤,进一步理解XXE
实验一:有回显读本地敏感文件(Normal XXE)
在服务能接收并解析 XML 格式的输入并且有回显的时候,我们就能输入我们自定义的 XML 代码,通过引用外部实体的方法,引用服务器上面的文件
本地代码:
然后POST数据,可以看到返回了相应系统文件
因为这个文件没有什么特殊字符,所以一些错误没有触发,下面改为另外一个文件
可以看到,报出了很多warning
为了能读取文件的特殊字符,用上一个CDATA(主题用法不再阐述,读者可以自己去看看),然后加上CDATA再试试
可以看到,warning减少了,但是还是读不出文件,不能再XML内部拼接字符串,所以改用参数实体,在参数实体里面拼接
然后再次读取,成功
实验二:无回显读取本地敏感文件(Blind OOB XXE)
先把源码去掉echo那两句
这次改用filter协议读取数据然后发送到指定IP上
然后POST数据上去,在另一个机器监听9999端口
这里我用nc监听出了点问题,没连上,但是抓包时候能看到,已经取到文件内容的base64编码了,进行解码,验证一下,没问题
其它的具体XXE的应用就不复现了,看一看背一背好了