No.20 笔记 | WEB安全 - 任意文件操作详解 part 2

一、文件后缀名验证

(一)验证方式分类

  1. 基于白名单验证:只允许上传白名单中指定后缀名的文件。
  2. 基于黑名单验证:只允许上传黑名单中未包含后缀名的文件。

(二)实验准备

  1. 修改 Apache 的 httpd - conf 文件。
  2. 运行 phpStudy,并确保 Apache 和 MySQL 处于启动状态。

(三)基于黑名单验证代码分析

以下是一段常见的黑名单验证代码示例:

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("::SDATA", "", $file_ext); //去除字符串::SDATA$file_ext = trim($file_ext); //收尾去空if (!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH. '/'. date("YHis"). rand(1000, 9999). $file_ext;} else {if (move_uploaded_file($temp_file, $img_path)) {$msg = '上传出错!';$is_upload = true;}}} else {$msg = UPLOAD_PATH. '文件夹不存在,请手工创建!';}
}

从这段代码可以看出,它对黑名单中的后缀名进行了筛选。

二、绕过黑名单验证的方法

(一)利用 Burpsuite 工具

  1. 原理
    • 截断 HTTP 请求,利用 Intruder 模块进行枚举后缀名,寻找黑名单中没有过滤的后缀名。
  2. 操作示例
    • 以上传一个包含恶意代码<?php @eval($_POST["cmd"]);?>的文件为例,假设文件名为ebshell.phtm(这里的.phtm可能不在黑名单中)。
    • 通过 Burpsuite 截断请求后,在 Intruder 模块中尝试不同的后缀名组合,找到可以绕过验证的后缀名并上传文件。

(二).htaccess 文件

  1. .htaccess 文件介绍
    • 它是 Apache 服务器中的一个配置文件,负责相关目录下的网页配置。
    • 可以实现网页 301 重定向、自定义 404 错误页面、改变文件扩展名、允许 / 阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
  2. 利用.htaccess 绕过黑名单验证
    • 审计黑名单过滤代码时发现,有些情况下黑名单中没有对.htaccess 进行过滤。
    • 可以直接上传.htaccess 文件,文件内容设置为SetHandler application/x - httpd - php,这样当前目录所有文件都将使用 PHP 解析,无论上传什么文件,只要内容符合 PHP 语言代码规范,就会被当作 PHP 执行。
    • 例如制作一个图片 phpinfo 探针,将以下代码保存为 1.jpg 并上传:
<?php
phpinfo();
?>

在.htaccess 文件作用下,1.jpg 会被解析为 PHP 文件并执行。

(三)大小写绕过

  1. 原理
    • 在 Windows 系统下,对于文件名中的大小写不敏感。例如:test.php 和 TeSt.PHP 是一样的。而在 Linux 系统下,对于文件名中的大小写敏感。
  2. 基于黑名单验证代码分析及利用
    • 分析黑名单验证代码时发现,有些代码可能缺少对上传文件名获取的小写转换。
    • 例如,如果黑名单中增加了.htaccess 的验证,但没有进行小写转换,就可以直接修改文件后缀名如 PhP(大写)进行上传,可能会绕过验证。

(四)直接修改后缀名上传

  1. 方法介绍
    • 文件后缀名不一定必须在 Burpsutie 截断的 HTTP 请求中修改,可以直接修改文件后缀名进行上传。
  2. 示例
    • 如将文件后缀名修改为 PhP 后上传到http://127.0.0.1/ileupload/upload//201812031006544907.PhP

学习感想

学习 Web 安全中的任意文件操作知识,让我深刻认识到网站安全的重要性和复杂性。在文件上传这个看似简单的功能背后,隐藏着许多潜在的安全风险。

通过了解不同的验证方式以及绕过黑名单验证的各种方法,我意识到黑客可能会利用这些漏洞进行攻击。这也提醒我在开发网站时,要更加严谨地对待文件上传功能的设计和验证。

同时,学习这些知识也让我明白,安全是一个动态的过程,需要不断地学习和更新知识,以应对不断变化的网络安全威胁。只有深入了解这些攻击手段,才能更好地采取措施进行防范,确保网站的安全稳定运行。

希望这些笔记能够帮助其他小白更好地理解和掌握 Web 安全中的任意文件操作知识,共同提高网站的安全防护能力。

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

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

相关文章

uni-app写的微信小程序如何体积太大如何处理

方法一&#xff1a;对主包进行分包处理&#xff0c;将使用url: /pages/components/equipment/equipment跳转页面的全部拆分为分包&#xff0c;如url: /pagesS/components/equipment/equipment 在pages.json中添加 "subPackages": [{ "root"…

2024年五一杯数学建模C题煤矿深部开采冲击地压危险预测求解全过程论文及程序

2024年五一杯数学建模 C题 煤矿深部开采冲击地压危险预测 原题再现&#xff1a; “煤炭是中国的主要能源和重要的工业原料。然而&#xff0c;随着开采深度的增加&#xff0c;地应力增大&#xff0c;井下煤岩动力灾害风险越来越大&#xff0c;严重影响着煤矿的安全高效开采。在…

transient关键字详解

今天没打算写blog&#xff0c;在看一篇关于多线程环境下SimpleDateFormat线程不安全的问题&#xff0c;一般我们都知道多线程下这个是不安全&#xff0c;但是为什么不安全不太清楚&#xff0c;我在看的这篇文章讲的比较透彻&#xff0c;我根据文章中讲结合SimpleDateFormat源码…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十五集:制作更多地图,更多敌人,更多可交互对象

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、第一个代表性场景 1.制作更多敌人2.制作更多可交互对象二、第二个代表性场景 1.制作更多敌人2.制作更多可交互对象三、第三个代表性场景 1.制作更多敌人2.制…

苹果手机照片误删还能恢复吗?3款数据恢复工具推荐

照片是人们记录生活点滴与美好回忆的重要方式之一。而苹果手机则具备了较强的拍照功能&#xff0c;深受市场欢迎&#xff0c;但其也存在误删照片并难以恢复的难题。现在市面上也又很多照片恢复软件&#xff0c;其功能参差不齐。今天&#xff0c;小编为您找到了3款高效且可靠的苹…

猫咪掉毛上岸!一招解决清理难题——好用的宠物空气净化器

养宠前就知道猫咪有换毛季&#xff0c;我了解的是一年有两次&#xff0c;养宠后才知道&#xff0c;一次是半年...秋天风大的时候更加严重&#xff0c;直接就是一只“蒲公英”&#xff0c;随时散落一地的猫毛。早晚给它梳毛&#xff0c;每次都能收获巨大一张猫饼。 家里的地板上…

高标准农田信息化推动农业产业链升级

在当前全球农业转型的关键时期&#xff0c;高标准农田信息化作为现代农业发展的核心驱动力之一&#xff0c;正深刻地影响并推动着农业产业链的全面升级。这一进程不仅关乎粮食安全与质量的提升&#xff0c;更是实现农业可持续发展、促进农村经济繁荣的重要途径。 技术应用&…

TCL中环开工率下滑,员工集体要求解约赔偿

“ 尽管中环的市占率有所提高&#xff0c;但是高开工率也带来了巨量硅片库存&#xff0c;严重拖累了公司业绩。 ” 转载&#xff1a;科技新知 原创 作者丨依蔓 编辑丨蕨影 因大幅下调开工率&#xff0c;光伏硅片龙头TCL中环疑似遭遇员工“离职潮”&#xff1f; 近日&…

Java EE规范

1、简介 Java EE的全称是Java Platform, Enterprise Edition。早期Java EE也被称为J2EE&#xff0c;即Java 2 Platform Enterprise Edition的缩写。从J2EE1.5以后&#xff0c;就改名成为Java EE。一般来说&#xff0c;企业级应用具备这些特征&#xff1a;1、数据量特别大&…

curl支持ssl报错:SSL certificate problem: unable to get local issuer certificate

1. 说明 在使用curl时返回CURLE_OUT_OF_MEMORY&#xff0c;猜想可能是ssl的问题&#xff0c;用curl命令做实验发现访问http没问题&#xff0c;访问https会有问题&#xff0c;根据打印log判断是缺少证书&#xff0c;需要下载证书并声明证书路径。 1.1 curl访问http 访问正常&…

计算机网络基础进阶

三次握手四次挥手 三次握手 1------建立连接----------------------2 ACK1&#xff0c;seq0 2------传输数据&#xff0c;建立连接---------1 1------传输数据&#xff0c;建立连接---------2 三次握手用于建立TCP连接&#xff0c;确保通信双方都准备好进行数据传输。整个…

Gin 协程mysql客户端

一、Gin框架 mysql配置 这里选择yaml文件配置 二、配置读取 viper 读取yaml文件中对应配置 三、mysql 的协程客户端 文件位置 package databaseimport ("database/sql""fmt""github.com/spf13/viper""log""net/http"&quo…

鸿蒙_基础

HarmonyOS基础 页面跳转 import { router } from kit.ArkUIButton(去首页).onClick(()>{router.pushUrl({ // 普通跳转&#xff0c;可以返回url:pages/Index}) }) Button(登录).onClick(()>{router.replaceUrl({ // 替换跳转&#xff0c;无法返回&#xff0…

Zabbix进阶实战!将告警推送到Syslog服务器详细教程

需求场景&#xff1a; 用户需要将zabbix产生的告警事件推送给rsyslog服务器&#xff0c;syslog服务器再对事件日志进行分析处理. 环境配置信息 服务器 IP地址 ZabbixServer 192.168.200.195 Rsyslog服务器 192.168.200.128 *Rsyslog服务器防火墙需要放通 UDP/514端口 推送脚本…

C#描述-计算机视觉OpenCV(7):MSER特征检测

C#描述-计算机视觉OpenCV&#xff08;7&#xff09;&#xff1a;MSER特征检测 基本概念操作实例效果优化 基本概念 前文C#描述-计算机视觉OpenCV&#xff08;6&#xff09;&#xff1a;形态学描述了如何对图像的前后景特征形态进行检测与运算&#xff0c;本篇将分析基于形态的…

CANoe与C#联合仿真方案

引言 CANoe作为一款强大的网络仿真工具,能够模拟各种通信协议,尤其是在汽车领域的CAN、LIN、Ethernet等协议。而C#作为一种广泛使用的编程语言,能够为CANoe提供灵活的用户界面和逻辑控制。本文将探讨如何将CANoe与C#结合,实现高效的联合仿真方案。 1. 系统架构 联合仿真…

秋招突击——8/6——万得数据面试总结

文章目录 引言正文面经整理一1、讲一下java的多态&#xff0c;重载&#xff0c;重写的概念&#xff0c;区别2、说一下Java的数组&#xff0c;链表的结构&#xff0c;优缺点3、创建java线程的方式有哪些&#xff0c;具体说说4、创建线程池呢、每个参数的意义5、通过那几种方式保…

软件测试工程师:如何写出好的测试用例?

软件测试用例(Test Case)是软件测试过程中的一种详细文档或描述&#xff0c;用于描述在特定条件下&#xff0c;对软件系统或组件进行测试的步骤、输入数据、预期输出和预期行为。编写高质量的测试用例是确保软件质量的关键步骤之一。以下是一些编写优秀测试用例的建议&#xff…

如何快速解决谷歌网站页面收录难题?

在外贸网站的运营中&#xff0c;页面无法被谷歌收录是一个常见的困扰。即便你的内容再优秀&#xff0c;如果搜索引擎的爬虫无法抓取到你的页面&#xff0c;那一切努力都将白费。而GPC爬虫池服务可以帮助你快速解决网站页面的收录问题。它通过千万级的爬虫池资源&#xff0c;强力…

数据结构与算法:贪心算法与应用场景

目录 11.1 贪心算法的原理 11.2 经典贪心问题 11.3 贪心算法在图中的应用 11.4 贪心算法的优化与扩展 总结 数据结构与算法&#xff1a;贪心算法与应用场景 贪心算法是一种通过选择当前最佳解来构造整体最优解的算法策略。贪心算法在很多实际问题中都取得了良好的效果&am…