XXE基本原理

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: XXE基本原理

一、XXE漏洞与xml:

1、XXE漏洞的概念与基本原理:

XXE漏洞,全称:"XML External Entity Injection"。

这种漏洞发生在应用程序解析XML输入数据时,如果没有禁止或限制对外部实体的引用和加载,那么攻击者可以上传含有恶意构造的外部实体的XML文件。这些恶意的外部实体可以被设计为访问服务器上的敏感文件、执行系统命令、扫描内网端口等,从而泄露信息或造成服务拒绝。

简而言之,XXE漏洞类似于其他注入类攻击(如SQL注入、XSS),都是利用了外部输入数据未被充分验证和过滤的安全缺陷。要防御XXE漏洞,可以在解析XML文档时禁止使用外部实体,确保所有XML输入都经过适当的验证和清理程序。

2、XML介绍:

XML是一种非常流行的标记语言,在解析外部实体的过程中,XML解析器可以根据URL中指定的方案(协议)来查询各种网络协议和服务(DNS,FTP,HTTP,SMB等)。 外部实体对于在文档中创建动态引用非常有用,这样对引用资源所做的任何更改都会在文档中自动更新。 但是,在处理外部实体时,可以针对应用程序启动许多攻击。 这些攻击包括泄露本地系统文件,这些文件可能包含密码和私人用户数据等敏感数据,或利用各种方案的网络访问功能来操纵内部应用程序。 通过将这些攻击与其他实现缺陷相结合,这些攻击的范围可以扩展到客户端内存损坏,任意代码执行,甚至服务中断,具体取决于这些攻击的上下文。

关于XML的具体语法参考下面一片文章,附上链接:

浅析无回显XXE(Blind XXE)


二、靶场漏洞复现(Pikachu):

1、有回显XXE漏洞复现:

有回显XXE漏洞后端代码示例,如下图:

正是 echo $creds; 将响应结果打印出来,构成了回显,显示在我们的前端页面上。

进入靶场,页面如下:

根据题目得知,输入框为接收xml数据的api,我们首先要判断是否有回显。

首先在输入框中提交以下XML代码:

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe "XXE漏洞有回显">
]>
<root>&xxe;</root>

将代码提交后,页面如下:

我们可以看到页面出现了回显,那么我们就可以修改实体xxe的内容,将回显目标改为一些敏感目录,比如win.ini。

修改payload如下:

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///C:/windows/win.ini">
]>
<root>&xxe;</root>

代码提交后,页面如下图所示:

可以看到敏感目录中的内容成功在页面上回显,漏洞复现成功。

相关文章
|
1月前
|
SQL 监控 安全
SQL注入公鸡分类及原理
SQL注入公鸡分类及原理
|
2月前
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
113 3
|
3月前
|
监控 安全 数据安全/隐私保护
Rootkit工作原理及其检测方法
【8月更文挑战第31天】
119 0
|
12月前
|
机器学习/深度学习 人工智能 安全
【网安AIGC专题10.11】①代码大模型的应用:检测、修复②其安全性研究:模型窃取攻击(API和网页接口) 数据窃取攻击 对抗攻击(用途:漏洞隐藏) 后门攻击(加触发器+标签翻转)(下)
【网安AIGC专题10.11】①代码大模型的应用:检测、修复②其安全性研究:模型窃取攻击(API和网页接口) 数据窃取攻击 对抗攻击(用途:漏洞隐藏) 后门攻击(加触发器+标签翻转)
255 1
|
12月前
|
自然语言处理 安全 API
【网安AIGC专题10.11】①代码大模型的应用:检测、修复②其安全性研究:模型窃取攻击(API和网页接口) 数据窃取攻击 对抗攻击(用途:漏洞隐藏) 后门攻击(加触发器+标签翻转)(上)
【网安AIGC专题10.11】①代码大模型的应用:检测、修复②其安全性研究:模型窃取攻击(API和网页接口) 数据窃取攻击 对抗攻击(用途:漏洞隐藏) 后门攻击(加触发器+标签翻转)
362 0
|
安全 网络安全 PHP
网络安全实验十四 文件上传与注入攻击
网络安全实验十四 文件上传与注入攻击
133 1
|
XML 安全 Java
XXE从入门到放弃
XXE全称XML External Entity Injection,也就是XML外部实体注入攻击,是对非安全的外部实体数据进行处理时引发的安全问题。要想搞懂XXE,肯定要先了解XML语法规则和外部实体的定义及调用形式。 XML基础知识
|
SQL 安全 测试技术
[网络安全]SQL注入原理及常见攻击方法简析
一般而言,登录验证逻辑语句为: select * from 表名 where name(用户名)='$输入' and pass(密码)='$输入' 当数据表中同时存在输入的name和pass字段时,页面将回显登录成功。
751 0
|
XML 安全 JavaScript
WEB常见漏洞之XXE(基础原理篇)
WEB常见漏洞之XXE(基础原理篇)
196 0
|
安全 网络协议 NoSQL
WEB常见漏洞之SSRF(基础原理篇)
WEB常见漏洞之SSRF(基础原理篇)
178 0