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

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

前言:靶场的第三关和第四关是通过修改Apache的配置文件,从而实现文件上传绕过。局限比较大。

知识补给库

学习内容:.htaccess绕过
.htaccess 文件是一个用于在 Apache 服务器的目录级别上进行配置的文件,允许用户在没有直接访问主配置文件的情况下,对目录的访问权限、重写规则、文件处理等进行局部配置。

  • .htaccesshttpd.conf一样,均为appache的配置文件,最大区别是权限不同

.htaccess与httpd.conf的区别

httpd.conf 是全局配置文件,由服务器管理员管理,适用于整个服务器的统一配置。

  • 只要网站管理员才可以修改
  • 修改后重启Apache服务才会生效

.htaccess 文件 是目录级配置文件,由用户管理,适用于在局部目录中进行灵活配置,但性能开销较大且受主配置文件的权限控制。

  • 网站用户即可使用,不需要管理员权限
  • 受限:必须在htpd.conf中设置允许执行.htaccess文件

修改apache配置文件

在Apache HTTP服务器的配置文件(通常是httpd.confapache2.conf)中
配置文件所在位置:PHPTutorial\Apache\conf
在这里插入图片描述

AllowOverride指令用于控制.htaccess文件的使用权限。.htaccess文件允许用户在没有直接访问主配置文件的情况下,对目录的配置进行局部修改。

  • 如果AllowOverride的值为None,则需要修改为All
  • 如果为All,则不需要改动

在这里插入图片描述

修改目的:允许用户使用.htaccess文件修改Apache配置

AllowOverride的作用

AllowOverride指令用于指定在特定目录中,.htaccess文件可以覆盖哪些类型的配置指令。它提供了对服务器安全性和性能的控制,因为允许过多的.htaccess配置可能会导致性能下降或安全问题。

AllowOverride的语法

AllowOverride [All|None|directive-type ...]
  • All:允许.htaccess文件覆盖所有类型的指令。这是最宽松的设置,允许用户通过.htaccess文件修改几乎所有配置。
  • None:不允许.htaccess文件覆盖任何指令。这是最严格的设置,完全禁用了.htaccess文件的使用。
  • directive-type:允许覆盖特定类型的指令。常见的类型包括:
    • Options:允许覆盖与目录选项相关的指令(如IndexesFollowSymLinks等)。
    • FileInfo:允许覆盖与文件处理相关的指令(如AddHandlerAddType等)。
    • AuthConfig:允许覆盖与认证和授权相关的指令(如AuthTypeRequire等)。
    • Limit:允许覆盖与访问控制相关的指令(如RequireAllowDeny等)。

代码审计

打开第四节的源码
在这里插入图片描述

  • deny_ext是数组,也就是前面说的黑名单。
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空
  • 上面这段代码是对文件名和后缀进行处理
  • if (!in_array($file_ext, $deny_ext)):将文件后缀名与黑名单匹配

靶场实战

前提要求

php版本使用非nts版本(多线程安全版本),原因就是靶场版本老,不然无法连接木马文件。

创建.htaccess文件

创建.htaccess文件,文件内容为:AddType application/x-httpd-php .png

  • 文件内容含义:让Apaceh将后缀为png的文件作为php文件进行解析

在这里插入图片描述

上传.htaccess文件

上传.htaccess文件的目的是:修改Apaceh的配置,使网站可以将jpg文件作为php文件进行解析。
在这里插入图片描述

发现可以上传成功
在这里插入图片描述

上传图片马

muma.php的后缀名改为muma.jpg,然后进行上传操作。
在这里插入图片描述

点击上传按钮之后,可以看到图片马上传成功。
在这里插入图片描述

PS:由于靶场过于老旧和小皮版本问题,图片马无法使用蚁剑进行连接。这里了解思路即可。

图片马的制作方法

如果不使用修改后缀的方式,也可以制作一个图片马进行上传
使用命令:copy muma.php + upload_test.png/b muma.png

  • copy a+b cab文件合并为c文件
  • /b表示以二进制的形式

在这里插入图片描述

思路总结

  • 代码审计之后,发现存在黑名单,但是.htaccess文件没有被过滤
  • 上传.htaccess文件修改Apache的配置信息。将Apache设置为可以将png文件当作php文件进行解析。
  • 最后上传木马文件,实现远程控制服务器的目的。

连接图片马

将图片马的URL放入到蚁剑中进行连接,可以看到URL的后缀为png,而不是php

  • 前面的.htaccess文件已经修改了Apache的配置,可以将png文件作为php文件进行解析
  • 上传的png文件也不是真正的图片文件,而是改了后缀的php文件

在这里插入图片描述

蚁剑连接成功
在这里插入图片描述

无情的广告时间

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道人禅(armey)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值