Web渗透-文件上传漏洞-上篇

本文涉及的产品
多模态交互后付费免费试用,全链路、全Agent
简介: 文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。

一、概述

文件上传漏洞可以说是日常渗透测试中用得最多的一个漏洞,用它获得服务器权限最快最直接。在web程序中,经常需要用到文件上传的功能。如用户或者管理员上传图片,或者其它文件。如果没有限制上传类型或者限制不严格被绕过,就有可能造成文件上传漏洞。如果上传了可执行文件或者网页脚本,就会导致网站被控制基至服务器论陷。,复杂一点的情况是配合webserver的解析漏洞来获取控制权或结合文件包含漏洞。

靶场搭建

github地址:https://github.com/c0ny1/upload-labs

下载解压完整后,放入Apache服务www根目录中

访问网址:http://localhost/upload-labs/

二、文件上传前端检测绕过

漏洞利用方式

1. 一句话木马
<?php @eval($_POST['cmd']);?>
2. 前端检测绕过-Pass-01
  1. 分析
  1. 使用JS进行编写
  2. 文件验证代码编写在前端
  1. 上传一句话木马
  1. 步骤:编写好一句话木马文件,现将木马修改为可以验证通过的文件文件格式,在进行抓包。
  2. 修改前:

  1. 修改后并放行

  1. 访问地址:http://10.196.93.67/upload-labs/upload/3.php
  1. 使用中国蚂剑连接webShell
  1. 打开软件》鼠标右键添加数据》输入信息》点击添加

  1. 连接成功

三、文件上传mime类型检测绕过

简介

常见的mime类型对比网址:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

示例:Pass-02

  1. 分析
  1. 第二关可以采用第一关方法进行获取webshell
  2. 第二关主要是后端的mime类型验证,并没有进行前端验证
  3. 通关方法:通过抓包获取到后端的mime类型,将其修改为自己想要的格式既可。
  1. 步骤:
  1. 先将a.php中包含的一句话木马上传的服务中,并抓包

  1. 修改Content-Type值为服务器需要的值既可。

四、黑名单绕过

说明

黑名单通常是在后端中定义了一个文件类型的数组,当用户上传文件后,后端会将上传的文件名进行过滤和格式化等操作,最后判断文件名后缀是否存在于文件后缀中,若存在则限制上传。

# 示例代码
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array('.asp','.aspx','.php','.jsp');
        $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)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;            
            if (move_uploaded_file($temp_file,$img_path)) {
                 $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}
?>

示例:Pass-3

  1. 修改Apache的配置文件:httpd.conf,并重启服务
AddType application/x-httpd-php .php .phtml .php3 .php3

  1. 绕过方式:将上传的木马文件后缀修改为以前老版本可以识别(大概率成功)。如(php3,php4,phtml......)
  1. 验证
  1. 文件路径:http://10.196.93.67/upload-labs/upload/202406210044594306.php3

五、.htaccess绕过

简介

.htaccess是一个配置文件,用于运行Apache网络服务器软件的网络服务器上。当.htaccess文件被放置在一个 "通过Apache Web服务器加载 "的目录中时,.htaccess文件会被Apache Web服务器软件检测并执行。这些.htaccess文件可以用来改变Apache Web服务器软件的配置,以启用/禁用Apache Web服务器软件所提供的额外功能和特性。

示例:Pass-4

  1. 创建一个.htaccess文件并编写内容

# AddType application/x-httpd-php .php .phtml .php3 .php3
# 表示: 将jpg文件当做php文件解析
AddType application/x-httpd-php .jpg
  1. 第一步上传.htaccess文件

  1. 第二步上传包含一句话木马的jpg文件

  1. 验证
  1. 文件地址:http://10.196.93.67/upload-labs/upload/3.jpg

六、空格绕过

示例:Pass-6

操作步骤:

  1. 第一步:在本地创建一个a.php 的文件
  2. 第二步:正常上上传并抓包
  1. 正常结果:

  1. 添加空格
  1. 添加空格

七、::$data绕过

介绍

在普通情况下,我们使用的文件只有一个默认的数据流,可以通过文件名访问。但是,在windows NT文件系统(NTFS)支持在文件内部创建额外的数据流,以存储其他信息。这些额外的数据流可以通过在文件名后面添加::$DATA来访问。

示例:Pass-8

八、点空点绕过

猜测后端只过滤一次,所以多写一次注入文件,从而达到需要效果。

示例:Pass-9

九、双写绕过

函数讲解

str_ireplace(['php'],"","pphphp")
# 结果:php

示例:Pass-10

上传将php后缀修改为:pphphp既可。

目录
相关文章
|
21天前
|
安全 PHP 开发工具
Web渗透信息收集进阶
网站敏感目录与文件指易被恶意扫描利用的路径,如后台管理、.git、.svn等,可能导致源码泄露或权限入侵。常用工具如御剑、Dirbuster、Dirsearch可探测此类信息,需加强安全防护。
377 58
Web渗透信息收集进阶
|
20天前
|
安全 网络协议 NoSQL
Web渗透-常见的端口及对其的攻击思路
本文介绍了常见网络服务端口及其安全风险,涵盖FTP、SSH、Telnet、SMTP、DNS、HTTP、SMB、数据库及远程桌面等20余个端口,涉及弱口令爆破、信息泄露、未授权访问、缓冲区溢出等典型漏洞,适用于网络安全学习与渗透测试参考。
382 59
|
21天前
|
存储 JavaScript 安全
Web渗透-XSS漏洞深入及xss-labs靶场实战
XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。
372 1
Web渗透-XSS漏洞深入及xss-labs靶场实战
|
21天前
|
安全 中间件 应用服务中间件
WEB渗透-文件上传漏洞-下篇
本文详解文件上传安全漏洞,涵盖白名单绕过(如00截断、条件竞争)、图片木马制作与利用、以及IIS、Apache、Nginx等常见解析漏洞原理与防御。结合实战案例,深入剖析攻击手法与修复方案。
78 0
|
21天前
|
安全 测试技术 程序员
web渗透-文件包含漏洞
文件包含漏洞源于程序动态包含文件时未严格校验用户输入,导致可加载恶意文件。分为本地和远程包含,常见于PHP,利用伪协议、日志或session文件可实现代码执行,需通过合理过滤和配置防范。
297 0
web渗透-文件包含漏洞
|
5月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
12月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
635 3
|
7月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
1236 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
7月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
11月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
440 67