发帖
 找回密码
 立即注册
搜索
0 1

分享 WEB渗透系统班-文件上传漏洞(4)+文件上传漏洞(5)

技术分享 1190 0 2025-7-4 16:26:33
WEB渗透测试工程师系统班250303期
第30节课作业
1. 实操课程内文件上传靶场案例
Less-12
原码及解析:
$is_upload = false;
$msg = null;
//是否接收到submit的提交
if (isset($_POST['submit'])) {
//使⽤file_exists 检查⽂件或⽬录(upload/)是否存在
if (file_exists(UPLOAD_PATH)) {
//数组⿊名单
$deny_ext =
array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","js
w","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htacces
s");
// 获取保存的⽂件名 1.php/.
$file_name = $_POST['save_name'];
// 获取⽂件后缀名 1.txt-->txt 1.php/.--->"php/."
$file_ext = pathinfo($file_name,PATHINFO_EXTENSION);
// 判断⽂件类型是否被禁⽌
if(!in_array($file_ext,$deny_ext)) {
// 如果不是⿊名单的后缀,则获取上传的临时⽂件
$temp_file = $_FILES['upload_file']['tmp_name']; //1.png
// 拼接图⽚的保存路径
$img_path = UPLOAD_PATH . '/' .$file_name; //upload/1.php
// 移动上传的⽂件到指定路径
if (move_uploaded_file($temp_file, $img_path)) {
// 上传成功
$is_upload = true;
}else{
// 上传失败
$msg = '上传出错!';
}
}else{
// 上传⽂件类型被禁⽌
$msg = '禁⽌保存为该类型⽂件!';
}
} else {
// 上传路径不存在
$msg = UPLOAD_PATH . '⽂件夹不存在,请⼿⼯创建!';
}
原理:
因为知道他验证的是save_name
那么save_name的值⼜等于 1.php
那么他路径的拼接应该是
UPLOAD_PATH . '/' .$file_name;
upload / 1.php
使⽤
uplpad / 1.php/. 进⾏绕过
因为他在进⾏验证的时候格式是php/. 那么他原来的过滤是php 正巧是因为我们加了这个/.不在⿊名单中
绕过了他的验证,
move_uploaded_file() 有这么⼀个特性,会忽略掉⽂件末尾的 /. 但是最终⽂件在保存的时候输⼊的
uplpad/1.php/.就强制保存成upload/1.php 此时就变成了php的格式了。:



apache 解析漏洞[CVE-2017-15715]
Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
此漏洞的出现是由于 apache 在修复第一个后缀名解析漏洞时,用正则来匹配后缀。在解析 php 时 xxx.php\x0A 将被按照 php 后缀进行解析,导致绕过一些服务器的安全策略


Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。
那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。


解析⽅案案例1-执⾏权限
⽂件上传后存储⽬录不给执⾏权限
未做防御,可以上传并执行1.php(作用是生成xiao.php这个木马)
做了防御后,无法执行1.php,并生成xiao.php

解析⽅案案例2-解码还原(⾮图⽚⽂件上传)
数据做存储,解析固定(⽂件后缀名⽆关)
1.png--->服务器
1.png--->abcdefg123456
php脚本--》eval(***)---》qbcd1234
固定协议(图⽚格式)
图⽚在上传时,将图⽚转换为编码的字节流数据传输到服务器,服务器通过对应的固定协议进⾏字节流解
码,从⽽还原图⽚。
因为解析格式被固定为了图⽚格式,所以脚本语⾔也会被强制解析为图⽚,没有办法进⾏执⾏
图片转换为字节流数据
传输脚本⽂件被解析成图⽚,⽆法正常解析

分站存储⽅案-实际案例
存储的⽬标和测试的⽬标不在同⼀台服务器(不在同⼀个路径),并且采⽤分站存储的⽹站,⼀般会限制⽬
录执⾏权限
分站存储技术:
图⽚编码字节流传输技术:更新头像后会将图⽚转为字节流传输

OSS云存储⽅案
通俗理解就是云⼚商给你指定地区开了⼀个⽹盘,上传的任何⽂件都会放在这个⽹盘内,它只能提供资源的
上传和下载,⽆法解析上传的内容
安全问题 key 泄露:https://www.anquanke.com/post/id/298882

2. 文件上传的防御方式有哪些?
防御/修复⽅案
对于上传的⽂件,验证程序要做严格验证,使⽤服务器端校验,⽽不能仅⽤前端javascript验证。
1.建议严格限制上传⽂件类型和上传⽂件名及后缀。
2.检查⽂件头和⽂件内容,对上传⽂件⽬录的运⾏权限进⾏严格限制。
3.及时排查、删除服务器⽊⻢⽂件。
4.上传⽂件的存储⽬录禁⽤执⾏权限
5.⽂件的后缀⽩名单,注意0x00截断攻击
6.不能有本地⽂件包含漏洞
7.及时修复web上的代码
8.升级web server
9.后端验证:采⽤服务端验证模式
10.后缀验证:基于⽩名单,⿊名单过滤
11.MIME验证:基于上传⾃带类型艰检测
12.内容检测:⽂件头,完整性检测
13.⾃带函数过滤
14.WAF防护软件:宝塔、云盾等

一、笔记标题:WEB渗透系统班-文件上传漏洞(4)+文件上传漏洞(5)

二、文章内容:

1. 课程内容概要

        主要知识点1:Less-12
                             move_uploaded_file() 有这么⼀个特性,会忽略掉⽂件末尾的 /. 但是最终⽂件在保存的时候输⼊的uplpad/1.php/.就强制保存成upload/1.php 此时就变成了php的格式了。
        主要知识点2:apache 解析漏洞
                             换⾏解析、多后缀解析
        主要知识点3:防御/修复方案

2.重点知识与细节

        概念解析
        概念1: 无
        概念2:
        关键步骤
        步骤1:执行权限
        步骤2:解码还原
        步骤3:分站存储技术和图⽚编码字节流传输技术
        相关代码

3.实操练习 和 解析

vul靶场的搭建需要注意docker版本不能太高,vulfocus靶场不太稳定

4.个人总结

        本节课最大的收获是:比较全面的学习了文件上传漏洞
        仍然存在疑问的地方:云服务器的相关知识
        需要课后深入学习的内容:暂无

──── 1人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回