当前位置: 首页 > article >正文

【THM-课程内容答案】:Web Hacking Fundamentals-Upload Vulnerabilities-Filtering

迄今为止我们几乎完全忽视了网页开发者用于防御文件上传漏洞的反制措施。在THM里你成功攻击过的每一个网站都毫无安全性可言。是时候做出改变了。接下来我们将探讨一些用于阻止恶意文件上传的防御机制以及如何绕过这些机制。首先我们来探讨客户端过滤与服务器端过滤的区别。当我们讨论脚本是“客户端”的时候在Web应用的语境下指的是该脚本运行在用户浏览器中而非Web服务器本身。JavaScript几乎是客户端脚本语言的通用选择尽管也存在其他替代方案。无论使用何种语言客户端脚本都会在你的浏览器中运行。在文件上传的场景中这意味着过滤动作会在文件上传至服务器之前完成。理论上这看似合理对吧在理想情况下确实如此但如果过滤这个动作发生在本地计算机上那就极易绕过。因此仅靠客户端过滤本身是一种极不安全的验证方法无法确保上传文件不包含恶意内容。相反正如您可能猜到的那样服务器端脚本将在服务器上运行。传统上PHP是主要的服务器端语言微软的IIS ASP紧随其后然而近年来其他选项C#、Node.js、Python、Ruby on Rails等的使用越来越广泛。服务器端的过滤往往更难绕过因为你面前没有代码代码是在服务器上执行的所以在大多数情况下也不可能完全绕过过滤器。因此我们必须形成一个适用现有过滤器的有效载荷让它仍然允许我们执行代码。考虑到这一点让我们来看看一些不同类型的过滤。扩展验证文件扩展名用于标识文件的内容。在实践中它们很容易改变所以实际上意义不大然而MS Windows仍然使用它们来识别文件类型尽管基于Unix的系统往往依赖于其他方法我们将在稍后介绍。检查扩展名的过滤器有两种工作方式他们要么将扩展名列入黑名单即列出不允许的扩展名要么将扩展列为白名单即列明允许的扩展并拒绝其他所有扩展名。文件类型筛选与扩展验证类似但更密集的是文件类型过滤再次验证文件的内容是否可以上传。我们将研究两种类型的文件类型验证MIME验证MIMEMultipurpose Internet Mail Extension 多用途互联网邮件扩展类型被用作文件的标识符——最初是在用在电子邮件作的附件传输时进行标识但现在也是在通过HTTPS传输文件时进行标识。文件上传的MIME类型附加在请求的头部看起来像这样MIME类型遵循type/subtype格式。在上面的请求中您可以看到图像“spaniel.jpg”已上传到服务器。作为合法的JPEG图像此上传的MIME类型为“image/JPEG”。可以在客户端和/或服务器端检查文件的MIME类型然而由于MIME基于文件的扩展名因此很容易绕过。幻数验证幻数是确定文件内容的更准确的方法尽管如此它们绝不是不可能伪造的。文件的“幻数”是文件内容开头的一串字节用于标识内容。例如PNG文件的最顶部将有这些字节89 50 4E 47 0D 0A 1A 0A。与Windows不同Unix系统使用幻数来标识文件然而在处理文件上传时可以检查上传文件的幻数以确保可以安全地接受。这绝不是一个有保证的解决方案但它比检查文件的扩展名更有效。文件长度筛选文件长度过滤器用于防止大型文件通过上传表单上传到服务器因为这可能会使服务器资源不足。在大多数情况下当我们上传shell时这不会给我们带来任何问题然而值得注意的是如果上传表单只期望上传一个非常小的文件那么可能会有一个长度过滤器来确保遵守文件长度要求。例如我们在上一个任务中成熟的PHP反向shell是5.4Kb大相对较小但如果表单期望的最大值为2Kb那么我们需要找到一个替代shell来上传。文件名筛选如前所述上传到服务器的文件应该是唯一的。通常这意味着在文件名中添加一个随机方面但是另一种策略是检查服务器上是否存在同名文件如果存在则向用户发出错误。此外文件名应在上传时进行消毒以确保它们不包含任何“可疑字符”这可能会在上传时对文件系统造成问题例如Linux上的空字节或正斜杠以及控制字符如和可能的unicode字符。这对我们来说意味着在管理良好的系统上我们上传的文件不太可能与上传前的已存的文件的名称相同所以请注意如果你设法绕过内容过滤你可能不得不寻找你的shell。文件内容筛选更复杂的过滤系统可能会扫描上传文件的全部内容以确保它不会欺骗其扩展名、MIME类型和幻数。这是一个比大多数基本过滤系统所采用的过程复杂得多的过程因此本节课将不涉及。值得注意的是这些过滤器本身都不是完美的——它们通常会相互结合使用提供多层过滤器从而显著提高上传的安全性。这些过滤器中的任何一个都可以应用于客户端、服务器端或两者。同样不同的框架和语言都有自己固有的过滤和验证上传文件的方法。因此可能会出现特定语言的漏洞例如在PHP主版本5之前可以通过向恶意.PHP文件附加一个空字节后跟一个有效的扩展名来绕过扩展名过滤器。最近还可以将PHP代码注入到其他有效图像文件的exif数据中然后强制服务器执行它。如果您感兴趣欢迎您进一步研究这些内容。【题目答案】传统上占主导地位的服务器端脚本语言是什么 What is the traditionally predominant server-side scripting language?PHP当按文件扩展名进行验证时您会称之为可接受的扩展名列表服务器拒绝列表中没有的任何扩展名吗 When validating by file extension, what would you call a list of accepted extensions (whereby the server rejects any extension not in the list)?Whitelist[研究]上传CSV文件时您希望看到什么MIME类型 [Research] What MIME type would you expect to see when uploading a CSV file?text/csv

相关文章:

【THM-课程内容答案】:Web Hacking Fundamentals-Upload Vulnerabilities-Filtering

迄今为止,我们几乎完全忽视了网页开发者用于防御文件上传漏洞的反制措施。在THM里,你成功攻击过的每一个网站都毫无安全性可言。是时候做出改变了。接下来,我们将探讨一些用于阻止恶意文件上传的防御机制,以及如何绕过这些机制。首…...

Input Leap:5分钟快速上手,免费开源KVM软件跨平台键鼠共享终极指南

Input Leap:5分钟快速上手,免费开源KVM软件跨平台键鼠共享终极指南 【免费下载链接】input-leap Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/in/input-leap 你是否厌倦了在桌面上摆满多套键盘鼠标,只为控制不…...

【THM-课程内容答案】:Web Hacking Fundamentals-Upload Vulnerabilities-Remote Code Execution

覆盖服务器上存在的文件很好。这对维护网站的人来说很麻烦,可能会导致一些漏洞,但让我们更进一步;让我们去RCE吧! 远程代码执行(顾名思义)将允许我们在web服务器上任意执行代码。虽然这可能是一个低权限的…...

3步快速修复损坏MP4视频:Untrunc终极指南免费恢复珍贵回忆

3步快速修复损坏MP4视频:Untrunc终极指南免费恢复珍贵回忆 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否遇到过珍贵的家庭录像、重要会议记录或…...

Ragas评估框架:3分钟学会AI应用质量保障的终极指南

Ragas评估框架:3分钟学会AI应用质量保障的终极指南 【免费下载链接】ragas Supercharge Your LLM Application Evaluations 🚀 项目地址: https://gitcode.com/gh_mirrors/ra/ragas 你是否正在为LLM应用的质量评估而烦恼?想要一个简单…...

哈佛大学2013年普林斯顿评论排名解析

1. 哈佛大学在2013年普林斯顿评论中的排名解析作为全球最具影响力的高等教育机构之一,哈佛大学在各个权威排名中的表现一直备受关注。2013年普林斯顿评论(The Princeton Review)发布的"梦想大学"(Dream College&#xf…...

告别天价授权!手把手教你用TwinCAT 3搭建EtherCAT主站(Windows平台保姆级教程)

零成本玩转EtherCAT:TwinCAT 3免费试用全攻略 在工业自动化领域,EtherCAT以其卓越的实时性能和灵活的拓扑结构,正成为越来越多工程师的首选总线协议。然而,对于个人开发者和小型团队而言,动辄数万元的主站授权费用常常…...

全国县域数据库(2000-2022年)

01、数据介绍全国县域数据库5.0是一个综合性的数据资源,它涵盖了全国范围内各个县域的多种信息,为政府决策、学术研究、商业分析等领域提供了重要的数据支持。全国县域数据库是一个重要的数据资源,它对于推动县域经济社会的发展、促进区域协调…...

网络篇13-网络收发包过程中的路由原理

2026-04-24 本文的图片均来自于张彦飞内功修炼,博文为作者的学习笔记 一 、Linux中的路由表 路由表可以理解为一种网络命名空间级别的资源。每个 net namespace 都会有自己独立的一套网络栈资源,包括: IPv4/IPv6 协议栈相关状态路由表&…...

ESP8266项目功耗太高?手把手教你用INA226模块精准测量并优化(从接线到数据分析)

ESP8266项目功耗优化实战:用INA226实现精准测量与深度调优 在物联网设备开发中,电池供电设备的续航能力往往决定了产品的成败。ESP8266作为一款高性价比的Wi-Fi芯片,其功耗特性直接影响着设备的运行时间。本文将带你从硬件连接到数据分析&…...

告别手动MIRO:用SAP ERS实现采购到付款自动化,提升财务效率的完整指南

告别手动MIRO:用SAP ERS实现采购到付款自动化,提升财务效率的完整指南 在数字化转型浪潮中,企业财务部门正面临前所未有的效率挑战。传统采购到付款(P2P)流程中,手动发票校验(MIRO)不…...

从‘人工调参’到‘AI自优化’:储能EMS的算法演进与国产化实践(以RK3588平台为例)

从‘人工调参’到‘AI自优化’:储能EMS的算法演进与国产化实践(以RK3588平台为例) 在新能源革命的浪潮中,储能系统正经历着从"被动响应"到"主动决策"的智能化跃迁。作为储能系统的神经中枢,能量管…...

别再只会用/bin/bash了!Docker容器报错‘OCI runtime exec failed’的三种排查思路与终极解决方案

突破思维定式:当Docker容器报错"OCI runtime exec failed"时的深度解决方案 凌晨三点,CI/CD流水线突然中断,你盯着屏幕上刺眼的红色报错信息——"OCI runtime exec failed: exec failed: unable to start container process: …...

SemScore:基于语义相似度的大语言模型评估方法

1. 项目概述SemScore是一种基于语义相似度的新型大语言模型(LLM)评估方法。在自然语言处理领域,传统的评估指标如BLEU、ROUGE等主要关注词汇层面的匹配程度,而SemScore则深入挖掘文本的语义内涵,通过计算生成文本与参考文本在语义空间中的相似…...

强化学习策略熵动态与基准精度优化实践

1. 强化学习中的熵动态与基准精度优化在强化学习训练过程中,策略熵(Policy Entropy)的动态变化直接影响着智能体的探索(Exploration)与利用(Exploitation)平衡。策略熵的计算公式为:…...

动态规划进阶:多维状态设计与竞赛级优化

1. 动态规划问题难度升级方法论动态规划(DP)作为算法设计的核心方法,其本质是通过状态转移方程将复杂问题分解为相互关联的子问题。在竞赛编程领域,DP问题的难度升级通常遵循"维度扩展约束叠加"的基本范式。下面我们通过…...

Python函数参数的封包与拆包

当自定义函数有大量参数或者参数数量不定时,可以使用参数封包;当调用的函数有大量参数或者参数数量不定时,可以使用参数拆包。 1 函数参数的封包 在《Python自定义函数的位置参数和关键字参数》中提到,python函数的参数主要分为…...

BilibiliDown:5分钟掌握跨平台B站视频批量下载终极方案

BilibiliDown:5分钟掌握跨平台B站视频批量下载终极方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/…...

5个高效技巧:如何快速掌握GDSDecomp逆向工程工具的核心功能?

5个高效技巧:如何快速掌握GDSDecomp逆向工程工具的核心功能? 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp 你是否曾经面对一个Godot游戏项目,想要修改某…...

如何5分钟掌握CPP漫展智能抢票神器:终极自动化解决方案

如何5分钟掌握CPP漫展智能抢票神器:终极自动化解决方案 【免费下载链接】cppTickerBuy cpp cp30 漫展 活动 抢票 无差别 同人展 项目地址: https://gitcode.com/gh_mirrors/cp/cppTickerBuy 你是否曾经在CPP漫展门票开售的瞬间,眼睁睁看着票务页面…...

WPF 进阶特性详解:依赖属性、附加属性、Transform、Effect 与路由事件

大家在学习 WPF 的时候,前期最容易接触到的是控件、布局和数据绑定;但真正把这些能力串起来的,其实是 WPF 自己的一整套机制。 比如为什么有些属性能绑定、有些属性能做动画、为什么 Grid.Row 能写在 Button 上、为什么一个按钮点击后父级也能…...

如何应对“不懂技术的领导”?向上管理实战手册

当专业壁垒遇上管理权威在软件研发体系中,测试岗位因其独特的技术深度与质量视野,常常成为技术与业务、管理与执行的关键交汇点。许多测试工程师都曾面临一个经典困境:如何与一位对自动化框架、性能瓶颈、安全漏洞或敏捷测试策略缺乏深度理解…...

Spring Security配置踩坑大全:从CSRF禁用、密码加密到自定义登录页,一次讲清

Spring Security实战避坑指南:CSRF、密码加密与登录页定制深度解析 1. 当POST请求遭遇403:CSRF防护的精准控制策略 那个令人抓狂的403错误页面,可能是大多数开发者首次接触Spring Security时最深刻的记忆。明明在Postman测试正常的API接口&…...

建立个人技术品牌:从GitHub到技术博客的完整攻略

为何软件测试工程师需要建立个人技术品牌?在软件开发生命周期中,测试工程师的角色正经历着深刻变革。从传统的“找bug”到如今的“质量赋能者”、“过程改进专家”和“自动化架构师”,测试工作的价值内涵不断拓展。然而,这种专业价…...

LeetCode热题100(Java)(3)滑动窗口

本章包括的题目有: 3. 无重复字符的最长子串 - 力扣(LeetCode) 438. 找到字符串中所有字母异位词 - 力扣(LeetCode) 1.无重复字符的最长子串 思路解析: 要在一个字符串中找出最长的不含重复字符的子串…...

Python农业物联网融合不是“拼接”,而是“重构”:用本体建模+动态权重分配实现作物胁迫预警准确率跃升至94.3%(IEEE IoT Journal 2024最新实践)

更多请点击: https://intelliparadigm.com 第一章:Python农业物联网多源数据融合 多源异构数据接入挑战 现代农业物联网系统常集成土壤温湿度传感器、气象站、无人机遥感影像、边缘摄像头及历史农事日志等多类数据源,其协议(MQT…...

外业人必看:如何把电脑上的CAD图纸快速传到手机,在外业精灵里直接叠加地图做采集?

外业工作者必备:CAD图纸移动化全流程实战指南 站在荒郊野外的测量点上,掏出手机却发现CAD图纸还锁在办公室电脑里——这种场景对测绘、林业、工程等外业工作者来说再熟悉不过。传统工作流中,CAD图纸从设计端到现场端的"最后一公里"…...

FPGA开发者必看:四款热门开发板HDMI接口电路设计对比与选型指南

FPGA开发板HDMI接口设计深度对比:从电路细节到选型策略 当你在项目需求文档中写下"支持HDMI输出"这行字时,真正的挑战才刚刚开始。四款主流FPGA开发板——正点原子达芬奇、小梅哥AX720、米联客ZYNQ7030和ZYNQ7020,它们的HDMI接口电…...

Godot 4插件SmartShape2D:2D地形智能绘制与纹理化工作流

1. 项目概述:SmartShape2D,一个改变2D地形绘制方式的Godot插件如果你在Godot引擎里做过2D游戏,尤其是那些需要大量手绘地形、平台、水体或者复杂背景的项目,一定对多边形绘制和纹理填充的繁琐深有体会。传统的Polygon2D节点虽然基…...

SM2证书链验证失败?SM3摘要跨平台不一致?——Python国密工程化中那3个没有文档记载的ASN.1 DER编码陷阱

更多请点击: https://intelliparadigm.com 第一章:SM2/SM3国密算法工程化落地的现实困境 在金融、政务及关键基础设施领域,SM2(椭圆曲线公钥密码算法)与SM3(密码杂凑算法)已成强制合规要求&…...