【文件读写】绕过验证下

.htaccess

在Apache服务器的运行体系中,.htaccess文件作为目录级别的配置载体,具备对上级配置进行局部覆盖的能力,其优先级高于全局配置文件,且修改后无需重启服务即可即时生效。攻击者正是利用这一特性,通过上传经恶意构造的.htaccess,使服务器在加载当前目录资源时误以为指定文件类型具备脚本执行权限,从而将原本受限的后缀名绕过校验,达成WebShell的解析与触发,实现对访问控制策略的隐蔽突破。

httpd-conf

httpd-conf作为统摄整站的全局配置文件,虽然规定了服务器的基本行为与安全基线,却因优先级较低且需重启才能生效,难以对目录级的动态篡改作出即时响应。防御方若仅依赖全局策略而忽视对目录级配置的强制校验,便会在文件上传与解析环节留下可被利用的缝隙;攻击者借此在特定目录内重新定义文件类型与执行权限,使防御体系在局部失效,最终完成针对上传限制的策略绕过,凸显出局部配置动态覆盖全局策略所带来的潜在风险。

绕过路径 被屏蔽的关键环节 具体屏蔽效果 对后续防御链的影响
.htaccess 目录级篡改 文件落地可见性与解析控制权 即时把".jpg/.txt"等无害后缀重映射为 PHP/CGI 执行入口,传统后缀黑白名单、MIME 校验、杀软静态扫描全部失效 上传-解析-审计链路失去对恶意脚本存在感的感知,纵深防御因源头失真而瘫痪
httpd-conf 全局级篡改 上传目录整体执行权限标记 将整站或指定目录设为"脚本可执行区",Webshell 查杀、RASP 注入监控失去定位锚点 文件已落地却难以删除、脚本已运行却无日志可追,形成持续盲区

user.ini

user.ini 是 PHP 为用户或目录量身定制的"小宪法",只要被扔进站点根目录,无需重启服务即可立刻覆盖 php.ini 的全局条款;攻击者把 auto_prepend_file、open_basedir 等关键指令悄悄改写后,就能让同目录下的任意后缀伪装成合法脚本,从而把传统依赖后缀白名单、MIME 校验和静态查杀的"上传即第一道关"变成"上传即放行"的真空地带。

php.ini 虽然统摄整个 PHP 运行环境,却因优先级低且需进程重启方可生效,对目录级动态篡改反应迟缓;一旦防御方仅把住主配置文件却未禁止用户级 ini 的写入权限,便等于在局部为攻击者开启"绿色通道",使后续 Webshell 查杀、RASP 行为监控因源头失真而陷入"文件已落地却无人敢删、脚本已运行却无日志可追"的盲区,整条"上传-解析-审计"链路随之瘫痪。

用靶场来示范,首先在upload下创建一个.user.ini的文件,内容的意思就是包含1.txt。意味着所有php文件都会包含1.txt, 1.txt文件可以放木马文件

<?php

@eval($_POST['a']);

echo "123"; #1.txt内容

?>

这段代码是一句话木马,用于远程执行 PHP 命令

在创建一个readme.php,用于读写生成的内容

<?php

header('Content-Type: text/html; charset=utf-8');

echo "该目录是上传文件保存,该文件为系统说明文件,请勿删除!";

?>

先上传.user.ini (没有任何反应) -->再上传1.txt(也没反应),验证一下,打开readme.php文件。发现读写了.user.ini文件并且包含了1.txt的内容

大小写绕过

由于 Windows 对文件名大小写不敏感,后台黑名单仅以小写形式拦截 .php 时,只需把后缀改为大写 .PHP 即可骗过校验、顺利落地文件;服务器依旧按 PHP 脚本解析,一举实现 WebShell 上传与执行。

空格绕过

Windows 会自动忽略文件名末尾的空格,但 PHP 黑名单检测不会;于是在 .php 后加个空格写成 shell.php 即可躲过校验、成功保存,系统仍按 PHP 解析执行。

加空格forward过去

末尾单点绕过

Windows 会丢弃文件名结尾的"点",但 PHP 只删一次点且不再循环 trim;把 Shell 命名成 shell.php. 即可让黑名单判定为 .(不在列表)而放行,落盘时系统自动去掉末尾点,最终生成 shell.php 并被解析。

ADS 特殊流绕过

NTFS 允许用"文件名::DATA"访问备用数据流,上传'test.php::DATA时 Windows 实际写入的是test.php,PHP 因 str_ireplace('::$DATA','')仅把字符串删掉而保留.php`,文件既保存成功又能被当成 PHP 执行,从而绕过对主数据流的黑名单检查。

原理:Windows 系统下,若上传文件名为 test.php:$DATA,服务器会生成一个 test.php 文件,内容与上传文件相同,并可被解析执行。

用notepad查看2.txt的数据流

生成一个3.php,服务器只生成一个 3.php 文件

发送回去,新标签打开去掉后面的::$DATA,能看到解析出来了,蚁剑连接也能成功

字节标识绕过

  • JPEG/JFIF0xFF 0xD8

  • PNG0x89 0x50

  • GIF0x47 0x49

  • BMP0x42 0x4D

服务器靠"文件头魔数"判断上传内容是否为真实图片,但只验头几个字节 ,后面数据不再检查。攻击者把 PHP 一句话附在合法图片头之后,形成"图马"------前端通过头字节检验,后端保存为 .jpg;再借助解析漏洞(Apache 多后缀、文件包含、.user.ini 等)让服务器把图片当成 PHP 执行,从而拿到 WebShell

保存为后缀为.php的文件上传到upload14关

图片二次渲染

在上传后重新压缩/绘制图像,使原始内容(包括一句话木马)被丢弃,只有重新把 PHP 代码插入到 经渲染后仍保持不变的位置(如 JPEG 注释段、PNG IDAT 压缩数据或 GIF 帧调色板)才能绕过检查并保留执行点。

比较两张图片的格式,可以看到很多都被重写了,在匹配这里插入一句木马,绕过就可以上传

相关推荐
wxin_VXbishe12 小时前
springboot在线课堂教学辅助系统-计算机毕业设计源码07741
java·c++·spring boot·python·spring·django·php
墨倾许12 小时前
《Windows 11 + Docker:极简DVWA靶场搭建全记录》—— 附详细排错指南与最终解决方案
windows·笔记·网络安全·docker·容器·靶场
苏琢玉13 小时前
被问性能后,我封装了这个 PHP 错误上报工具
php·composer
芯盾时代13 小时前
中国发行稳定币对金融行业网络安全布局的影响及新的业务增长点分析
安全·网络安全·金融
郑州光合科技余经理14 小时前
乡镇外卖跑腿小程序开发实战:基于PHP的乡镇同城O2O
java·开发语言·javascript·spring cloud·uni-app·php·objective-c
Pure_White_Sword14 小时前
Bugku-Web题目-文件包含
web安全·网络安全·ctf·文件包含
hzbigdog15 小时前
php的CSV大数据导入导出的通用处理类
大数据·后端·php
Whoami!16 小时前
⸢ 拾肆-Ⅰ⸥⤳ 实战检验应用实践(上):制定规范 & 开展演练
网络安全·信息安全·红蓝对抗·实战演练
bl4ckpe4ch17 小时前
mac安装burpsuite专业版2025中文教程
macos·网络安全·抓包·burpsuite
hcja66620 小时前
Wordpress Advanced Ads插件漏洞CVE-2025-10487复现
安全·web安全·网络安全