作者:小刚
一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
本实验仅用于信息防御教学,切勿用于其它用途
XXE漏洞
XXE :Xml External Entity 外部实体注入攻击
是利用一种xml的语言进行的注入攻击
XXE漏洞原理就不详解了,一搜一大把
危害
- 可以读取系统文件
- 获取源代码
- 进行SSRF
- 进行Phar触发反序列化
CTF案例
本文主要是针对一个CTF题https://buuoj.cn/challenges#[NCTF2019]True%20XML%20cookbook,
利用XXE漏洞进行SSRF攻击,探测内网主机
1.打开CTF题目
发现类似大佬的一个XXE-lab的题目
进行登录操作,用户名admin密码admin,抓包发现发送的是xml数据
那就尝试一下XXE攻击
2.尝试XXE攻击,线判断有没有回显点
<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY b "abc">
]>
<user><username>&b;</username><password>admin</password></user>
3.发现有回显点
开始构造代码,读取各种文件
外部引用可支持http,file等协议,
不同的语言支持的协议不同,但存在一些通用协议
php: file,http,ftp,php,compress.zlib,compress.bzip2,data,glob,phar
java: http,https,ftp,file,jar,netdoc,mailto,gopher
libxml2: file ,http,ftp
.net: file,http,https,ftp
这里可以利用file://,php://等伪协议进行获取文件
(获取代码最好使用php://filter进行base64转码)
先看看有flag文件没,发现并没有
就随意读取读取各种配置文件
/etc/hosts 储存域名解析的缓存
/etc/passwd 用户密码
/proc/net/arp 每个网络接口的arp表中dev包
最后在 /etc/hosts 发现内网地址
<?xml version="1.0"?>
<!DOCTYPE a[
<!ENTITY b SYSTEM "file:///etc/hosts">
]>
<user><username>&b;</username><password>admin</password></user>
4.针对内网进行扫描
利用burp的爆破模块,快速扫描内网主机
最后在173.39.136.12成功找到flag