用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。——鲁迅
前言:靶场的第三关和第四关是通过修改Apache的配置文件,从而实现文件上传绕过。局限比较大。
知识补给库
学习内容:.htaccess绕过
.htaccess 文件是一个用于在 Apache 服务器的目录级别上进行配置的文件,允许用户在没有直接访问主配置文件的情况下,对目录的访问权限、重写规则、文件处理等进行局部配置。
.htaccess与httpd.conf一样,均为appache的配置文件,最大区别是权限不同。
.htaccess与httpd.conf的区别
httpd.conf 是全局配置文件,由服务器管理员管理,适用于整个服务器的统一配置。
- 只要网站管理员才可以修改
- 修改后重启
Apache服务才会生效
.htaccess 文件 是目录级配置文件,由用户管理,适用于在局部目录中进行灵活配置,但性能开销较大且受主配置文件的权限控制。
- 网站用户即可使用,不需要管理员权限
- 受限:必须在
htpd.conf中设置允许执行.htaccess文件
修改apache配置文件
在Apache HTTP服务器的配置文件(通常是httpd.conf或apache2.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:允许覆盖与目录选项相关的指令(如Indexes、FollowSymLinks等)。FileInfo:允许覆盖与文件处理相关的指令(如AddHandler、AddType等)。AuthConfig:允许覆盖与认证和授权相关的指令(如AuthType、Require等)。Limit:允许覆盖与访问控制相关的指令(如Require、Allow、Deny等)。
代码审计
打开第四节的源码

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 c将a和b文件合并为c文件/b表示以二进制的形式

思路总结
- 代码审计之后,发现存在黑名单,但是
.htaccess文件没有被过滤 - 上传
.htaccess文件修改Apache的配置信息。将Apache设置为可以将png文件当作php文件进行解析。 - 最后上传木马文件,实现远程控制服务器的目的。
连接图片马
将图片马的URL放入到蚁剑中进行连接,可以看到URL的后缀为png,而不是php。
- 前面的
.htaccess文件已经修改了Apache的配置,可以将png文件作为php文件进行解析 - 上传的
png文件也不是真正的图片文件,而是改了后缀的php文件

蚁剑连接成功

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

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



