用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。——鲁迅
前言:靶场的第三关和第四关是通过修改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
文件
蚁剑连接成功
无情的广告时间
哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊
,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!