热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python解析外部实体_XXE外部实体注入漏洞

XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分

XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。XXE漏洞全称XML External Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

与html区别:

Xml:被设计为传输和存储数据,其焦点是数据的内容

Html:是为了显示数据,焦点是外观

Html旨在显示信息,xml旨在传输信息。

Xml典型代码:

]]]>

Dave

Tom

各脚本支持的协议;

存在xxe的情况下:

#玩法-读文件

]>

&xxe; &xxe;

//xxe为变量,读取test.txt

//打印出来

用file协议读指定路径的文件

显示结果:

#玩法-内网探针或攻击内网应用(触发漏洞地址)内网探针

]>

&rabbit;

#引入外部实体dtd,dtd就是xml的后缀,识别为xml格式

如果设置了禁止外部实体引用,将会失效

%file;

]>

&send;

可以在远程服务器evil2.dtd写上:

#无回显-读取文件

%dtd;

%send;

]>

Base64加密是反正传输中乱码,传输失败。

本地192.168.0.103上构造:

test.dtd:

""

>

%payload;

开启日志,看日志就可以看到test.txt数据了。

#协议-读文件(绕过)

参考:https://www.cnblogs.com/20175211lyz/p/11413335.html

]>

&f;

如何检测:

数据格式类型

如果发现有testMikasa  类型

抓包发现  content-type中是  text/xml  或者 application/xml

盲猜:更改content-type值application/xml看返回

burp上抓包 右键

do an active scan:扫描漏洞

Send to spider:爬行

利用爬行,找到有xml,把xml代码拷贝到post上既可以利用

CTF-Vulnhub-XXE安全真题复现

例子:

扫描IP及端口->扫描探针目录->抓包探针xxe安全->利用xxe读取源码->flag指向文件->base32 64解密->php运行->flag

xxe安全漏洞自动化注射脚本工具-XXEinjector(Ruby)

https://www.cnblogs.com/bmjoker/p/9614990.html

xxe_payload_fuzz

很多靶场镜像的网站:

#xxe漏洞修复与防御方案-php,java,python-过滤及禁用

#方案1-禁用外部实体

PHP:

libxml_disable_entity_loader(true);

JAVA:

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);

Python:

from lxml import etreexmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

#方案2-过滤用户提交的XML数据

过滤关键词:!ENTITY,或者SYSTEM和PUBLIC

涉及资源:



推荐阅读
author-avatar
祗想抱著伱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有