WEB渗透学习|安全渗透学习- Pikachu(XXE)
XXE(XML External Entity Injection) XML外部实体注入
与SQL注入相对应,XXE就是在可以解析XML的地方(比如一个输入框等处)只要可以解析XML语言的代码就可以,在这种地方提交XML的恶意代码来执行。
XXE漏洞主要也是因为没有对用户输入(用户提交的数据,比如你在输入框输入这个XML恶意代码)并没有合理检测与过滤,将用户提交的数据当XML来执行,造成XXE(XML外部实体注入),最简单的利用方法其实就是用hackbar V2里的XXE选项,它自带了XXE的payload生成功能,直接复制然后放到输入框(可以解析XML代码的地方)就可以了。
所以要了解XXE漏洞,首先需要学习了解XML的组成
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 (就是如果数据都放到html中的话整个html就会显得特别臃肿,由此,html只用来展示网页的页面,而XML则用来负责存储和传输相关的数据,各司其职)
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素
XXE漏洞的话主要是因为DTD的部分出了问题
常见的XML语法结构如下所示
文章图片
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
DTD 可以在 XML 文档内声明,也可以外部引用。
DTD(Document Type Definition,文档类型定义),用来为 XML 文档定义语法约束,可以是内部申明也可以使引用外部DTD现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。
内部申明DTD格式
外部引用DTD格式
引用公共DTD格式
pakachu靶场安装:
直接利用docker安装
sudo docker run -d -p 8000:80 area39/pikachu:latest
然后 docker ps -a查看运行镜像
然后ip:8000端口直接访问
文章图片
构造payload
]>
【WEB渗透学习|安全渗透学习- Pikachu(XXE)】
文章图片
外部实体引用Payload 查看服务器文件
]>
文章图片
防御办法
使用开发语言禁用外部实体;
过滤SYSTEM、PUBLIC等关键字;
xxe-lab地址:https://github.com/c0ny1/xxe-lab
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习
- 【韩语学习】(韩语随堂笔记整理)
- 焦点学习田源分享第267天《来访》