[GXYCTF2019]BabyUpload

这是一道文件上传题,我们如果上传一个真正的图片就能成功上传,但是一旦上传的是一个包含一句话木马的文件都会返回"这是一个PHP文件"

我们加上图片的头(GIF89a)文件后还是如此

同时发现把文件后缀名改为PHP和phtml时会报错"后缀名不能有ph"此时我们想到先使用.htaccess文件

在文件上传漏洞的利用中,先上传一个 .htaccess 文件,可以"重写"服务器的解析规则,从而绕过上传功能对文件扩展名的严格限制(如黑名单),让一个本应被视为"无害"的文件(如 .jpg、.png)被服务器当作可执行的脚本(如 PHP)来运行

许多文件上传功能会使用黑名单来阻止危险扩展名(如 .php),但往往忽略了对 .htaccess 这类配置文件的过滤。.htaccess 是 Apache 服务器的目录级配置文件,该目录及其子目录下的所有文件都受其指令控制

攻击者正是利用这一点,上传一个精心构造的 .htaccess 文件,在不触碰系统核心配置的情况下,仅仅为当前上传目录"局部"地修改解析规则。这条新规则会覆盖服务器原有的设定,指示 Apache:"在这个目录里,请把 .jpg 文件也当作 PHP 脚本来处理

apache 复制代码
<FilesMatch "MM.jpg">
    SetHandler application/x-httpd-php
</FilesMatch>

只有当访问的文件名精确匹配 MM.jpg 时,才会触发 PHP 解析

首先,将一个内容为上述指令的 .htaccess 文件上传到目标服务器的可写目录(通常是上传目录)。由于 .htaccess 这个文件名本身可能不在黑名单中,因此上传常常能够成功

此时木马已经成功上传,我们用蚁剑连接该网站就可以获取该网站的信息

最后找到flag

这种攻击并非在所有环境下都能成功,它依赖于几个特定的条件:

复制代码
Web 服务器为 Apache:.htaccess 是 Apache 的特性

服务器配置允许 .htaccess 生效:Apache 主配置中的 AllowOverride 指令必须被设置为 All 或至少包含 FileInfo,否则 Apache 会忽略该文件。

上传功能未对 .htaccess 进行拦截:这是攻击能够发起的直接原因,即黑名单不完整或白名单未包含对配置文件的检查
相关推荐
叼烟扛炮12 小时前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain
且从容.13 小时前
VUE3学习笔记(根据黑马教程总结)
笔记·学习
蒸蒸yyyyzwd14 小时前
关于 AI 开发相关的一些面经。
笔记·学习
2603_9696948516 小时前
JDBC 基础学习笔记:API 核心原理解析与 CRUD 代码实操
数据库·笔记·mysql·学习方法·database·sql注入
迪康coolmu16 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
无咎.lsy20 小时前
《机器学习》笔记
笔记·机器学习
坤坤子吖21 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
蒸蒸yyyyzwd1 天前
后端相关学习笔记。
笔记·学习
旖旎夜光1 天前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
Oll Correct1 天前
Adobe illustrator 案例十二:视频播放(Media & Video)图标绘制
笔记·ui·adobe·illustrator