Fortify漏洞之XML External Entity Injection(XML实体注入)
继续对Fortify的漏洞进行总结,本篇主要针对 XML External Entity Injection(XML实体注入) 的漏洞进行总结,如下:
1.1、产生原因:
XML External Entities 攻击可利用能够在处理时动态构建文档的 XML 功能。XML 实体可动态包含来自给定资源的数据。外部实体允许 XML 文档包含来自外部 URI 的数据。除非另行配置,否则外部实体会迫使 XML 解析器访问由 URI 指定的资源,例如位于本地计算机或远程系统上的某个文件。这一行为会将应用程序暴露给 XML External Entity (XXE) 攻击,从而用于拒绝本地系统的服务,获取对本地计算机上文件未经授权的访问权限,扫描远程计算机,并拒绝远程系统的服务。
下面的 XML 文档介绍了 XXE 攻击的示例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///dev/random"
>]><foo>&xxe;</foo>
如果 XML 解析器尝试使用 /dev/random 文件中的内容来替代实体,则此示例会使服务器(使用 UNIX 系统)崩溃。
例:

图1.1.1:未对XML实体解析方法做安全配置的实例
1.2、修复方案:
应对 XML unmarshaller 进行安全配置,使它不允许将外部实体包含在传入的 XML 文档中。为了避免 XXE injection,请勿将直接处理 XML 源的 unmarshal 方法用作
java.io.File、java.io.Reader 或 java.io.InputStream。使用安全配置的解析器解析文档并使用将安全解析器作为 XML 源的 unmarshal 方法,如下面的示例所示:
例:

图1.2.1:对XML实体解析方法做安全配置的实例
Fortify漏洞之XML External Entity Injection(XML实体注入)的更多相关文章
- XXE (XML External Entity Injection) 外部实体注入漏洞案例分析
ENTITY 实体 在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它. XML定义了两种类型的ENTIT ...
- XXE(XML External Entity attack)XML外部实体注入攻击
导语 XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击.由于程序在解析输入的XML数据时,解析了攻击者 ...
- 【译】Attacking XML with XML External Entity Injection (XXE)
原文链接:Attacking XML with XML External Entity Injection (XXE) XXE:使用XML外部实体注入攻击XML 在XML中,有一种注入外部文件的方式. ...
- 4.XXE (XML External Entity Injection)
XXE (XML External Entity Injection) 0x01 什么是XXE XML外部实体注入 若是PHP,libxml_disable_entity_loader设置为TRUE可 ...
- Microsoft Internet Explorer v11 XML External Entity Injection 0day
[+] Credits: John Page (aka hyp3rlinx) [+] Website: hyp3rlinx.altervista.org[+] Source: http://hyp3 ...
- XML External Entity Injection(XXE)
写在前面 安全测试fortify扫描接口项目代码,暴露出标题XXE的问题, 记录一下.官网链接: https://www.owasp.org/index.php/XML_External_Entity ...
- Microsoft Compiled HTML Help / Uncompiled .chm File XML External Entity
[+] Credits: John Page (aka hyp3rlinx) [+] Website: hyp3rlinx.altervista.org[+] Source: http://hyp3 ...
- Portswigger web security academy:XML external entity (XXE) injection
Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...
- XML External Entity attack/XXE攻击
XML External Entity attack/XXE攻击 1.相关背景介绍 可扩展标记语言(eXtensible Markup Language,XML)是一种标记语言,被设计用来传输和存 ...
随机推荐
- TeslaManage 2.0编译日志
1>------ 已启动全部重新生成: 项目: TeslaManage, 配置: Debug x64 ------1> Moc'ing teslamanage.h...1> Uic' ...
- osg创建灯光
添加光照 osg::ref_ptr<osg::Node> MyOSGLoadEarth::CreateNode() { osg::ref_ptr<osg::Group> _ro ...
- IoAllocateMdl,MmProbeAndLockPages的用法
转载地址:https://blog.csdn.net/wdykanq/article/details/7752909 IoAllocateMdl,MmProbeAndLockPages的用法 第一,M ...
- MyBatis的学习总结:调用存储过程【参考】
一.创建存储过程 存储过程的目的:统计edi_test_task 正在运行的任务和非运行的任务 CREATE DEFINER=`root`@`%` PROCEDURE `edihelper`.`SP_ ...
- ABAP DEMO so批量导入
*&---------------------------------------------------------------------* *& Report YDEMO_015 ...
- LeetCode_342. Power of Four
342. Power of Four Easy Given an integer (signed 32 bits), write a function to check whether it is a ...
- LODOP判断没成功发送任务-重打一下
一般情况下打印执行了PRINT()或PRINTA(),就会加入打印机队列,如果打印机脱机,就会在队列里排队,当打印机连上并取消脱机的时候,正在排队的任务就会打出,所以一般建议用是否加入队列来判断打印成 ...
- sudo启动程序引发的进程个数不对
这几天把自己负责的服务改成了多进程模型,然后使用sudo来启动进程,示例程序如下: int main(void) { fork(); while(1); } 编译: `gcc ...
- 通过iis启动服务,会产生C:/inetpub/logs/logsFile产生大量的日志,定期清理
[转]https://www.cnblogs.com/Martianhh/p/5312495.html bat文件内容如下,加入到计划任务执行 :: 清理IIS日志文件 :: 备份MySql数据库 @ ...
- iOS底层框架浅析
1.简介 IOS是由苹果公司为iPhone.iPod touch和iPad等设备开发的操作系统. 2.知识点 iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设 ...