4-7〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件上传漏洞-B - 实践

news/2025/10/4 14:34:32/文章来源:https://www.cnblogs.com/yxysuanfa/p/19125580

    郑重声明:本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    点赞❤️ 关注 收藏⭐️ 评论 
    更多文章戳
Whoami!-CSDN博客

​​​​


 现在,我们渐入佳境了,保持耐心,继续前行 !  

' , !  


→ 信息收集

→ 漏洞检测

→ 初始立足点▸常见WEB应用攻击▸-----我们在这儿~ 

→ 权限提升

→ 横向移动

→ 报告/分析

→ 教训/修复  

目录

1 常见WEB应用攻击

1.3 文件上传漏洞

1.3.2 上传不可执行文件攻击

1.3.2.1研究站点上传机制

1.访问目标站点并研究特征

2.上传机制测试策略

①是否可以上传文本文件

②猜测多次上传同一文件是否输出敏感内容

③猜测是否允许使用相对路径

3.(注意!)风险注意与攻击目标

4.(科普!)Web服务器的帐户和权限与安全问题

1.3.2.2 SSH密钥覆盖攻击:获取Root权限完整指南

1.创建SSH密钥对,把公钥放入authorized_keys文件

2.恶意文件上传

3.SSH连接验证

4.攻击成功条件与防范措施

创作不易求一波暴击点赞❤️ 关注 收藏⭐️ 评论


1 常见WEB应用攻击

      Web开发是当前IT领域需求最高的技能之一,然而多种安全漏洞在各类Web应用程序中反复出现。无论使用何种技术栈,这些常见漏洞都可能存在于已部署的应用程序中。主要攻击类型包括:

  • 目录遍历 - 通过操纵文件路径访问未授权资源

  • 文件包含漏洞 - 包含恶意文件执行代码

  • ⬆️ 文件上传攻击漏洞 - 上传恶意文件获取系统访问权---(本文)

  • ⚡ 命令注入 - 在输入中注入系统命令执行


1.3 文件上传漏洞

文件上传漏洞攻击者通过利用应用程序的文件上传功能,上传恶意文件到服务器,从而获取系统权限或执行其他攻击。

漏洞分类

漏洞类型描述可能的攻击方式
第一类漏洞上传的文件可被Web应用程序直接执行

上传PHP脚本并通过浏览器执行;

适用于各种服务器端脚本语言

第二类漏洞

文件上传机制与其他漏洞结合利用

(本文)结合目录遍历:在文件上传请求中使用相对路径,并尝试覆盖类似authorized_keys的文件。

结合XML外部实体 (XXE)或跨站脚本 (XSS)攻击:当允许上传一个带有SVG文件类型的头像到个人资料时,可嵌入XXE攻击来显示文件内容甚至执行代码。

第三类漏洞依赖用户交互的攻击

上传含恶意宏的文档文件,诱导用户执行

例如:当发现一个求职申请的上传表单时,尝试上传一个带有恶意.docx格式的简历,并集成恶意宏,然后通过宏来执行。


1.3.2 上传不可执行文件攻击

      在本节中,探讨即使上传的文件不可执行也可能产生严重后果即:可以上传任何文件,但无法利用它来获取系统访问权限。在这种情况下,需要结合着利用另一个漏洞如:目录遍历,来利用文件上传机制。

1.3.2.1研究站点上传机制

核心问题:发现不受限制的文件上传功能,但无法直接执行上传的文件。

1.访问目标站点并研究特征

访问:http://mountaindesserts.com:8000

观察点发现内容安全影响
系统平台运行Linux系统攻击载荷需适配Linux
技术栈变化无index.php/admin.php可能不再使用PHP
上传功能仍保留文件上传机制存在潜在攻击面

再次:使用curl来确认admin.php和 index.php文件是否仍然存在。以下反应说明php文件不存在,合理推断网页服务器不再使用PHP。

2.上传机制测试策略

①是否可以上传文本文件

    我们在网页的上传入口尝试上传一个文本文件,并启动Burp来捕获请求。上传来自上一节的test.txt文件。上传成功!

②猜测多次上传同一文件是否输出敏感内容

第一次上传:test.txt → 成功

第二次上传:test.txt → 观察应用反应

若:文件已存在提示

响应:"文件已存在,请勿重复上传"

利用方式

  •  暴力枚举:猜测服务器上已存在的文件

  •  目录结构探测:通过文件名推测目录内容

  •  信息收集:了解服务器文件命名规则

若:错误信息提示

响应:"Internal Server Error - PHP Exception..."

价值信息

  •  技术栈识别:PHP、Java、.NET等

  • ️ 框架信息:Spring、Django、Laravel等

  •  路径泄露:服务器绝对路径信息

  •  配置细节:数据库连接、环境变量等

      让我们在 Burp 中查看test.txt上传请求。在HTTP历史记录中选择POST请求,将其发送到Repeater,并点击发送,这是第二次上传同一个文件。
我们收到了与浏览器中相同的输出,没有任何新的或有价值的信息

③猜测是否允许使用相对路径

攻击尝试:是否允许相对路径,如果可以的话,则说明可以利用目录遍历攻击。

如下图:通过修改请求中的“filename”参数,使用../../../../../../../test.txt相对路径,然后点击发送。

原始:filename="test.txt"
修改:filename="../../../../../../../test.txt"

输出结果分析

  • ✅ 应用接受了包含相对路径的文件名

  • ❓ 响应模糊:仅回显文件名,无法确认实际写入位置(假设写入的是相对路径下,而非../../..仅仅只是文件名)

  • ⚠️ 盲攻击风险:需要基于假设进行后续操作

大胆假设:

由于目前没有找到别的更好的攻击向量,暂时假设相对路径被用于放置文件

如果我们的假设是正确的,则说明可以尝试盲目地覆盖文件,甚至可以去尝试覆盖敏感目录下的敏感文件,因为这些文件很具有吸引力,这可能会导致系统访问权限

3.(注意!)风险注意与攻击目标

高风险注意:在渗透测试中盲目地覆盖文件可能会导致数据丢失或生产系统的停机,会造成巨大的损失!!!

风险类型具体影响防护建议
数据丢失覆盖关键系统文件备份重要数据
系统宕机生产环境服务中断在测试环境验证
法律责任未经授权修改系统严格遵循授权范围

攻击价值评估

有吸引力的目标文件(可被覆盖)

  • ~/.ssh/authorized_keys → SSH密钥注入

  • /etc/passwd → 用户账户篡改

  • /etc/shadow → 密码哈希获取

  • 应用配置文件 → 敏感信息泄露

4.(科普!)Web服务器的帐户和权限与安全问题

Web服务器运行账户对比:

平台默认运行账户权限级别安全风险
Linuxwww-data低权限用户相对安全
Windows传统Network Service内置低权限账户中等风险
Windows现代IIS应用程序池标识按应用隔离可控风险
错误配置!root/Administrator最高权限极度危险

 危险配置模式

# 错误做法:以root身份运行Web服务
sudo apache2 -k start  # Linux
# 或IIS以Administrator权限运行

 漏洞链关系

文件上传漏洞 + 高权限运行 = 系统完全沦陷

 风险升级路径

① 初始漏洞

  • 文件上传无验证 → 可上传任意恶意文件

  • 文件存储位置不当 → Web目录可直接访问执行

② 权限利用

  • Web服务高权限运行 → 恶意文件以root/Administrator执行

  • 命令执行能力 → 获得与Web服务相同的系统权限

③ 最终后果

  • 完全系统控制 → 等同于获得管理员权限

  • 数据泄露风险 → 可访问所有系统资源

  • 持久化威胁 → 植入后门长期控制

场景风险等级潜在影响
低权限运行 + 文件上传漏洞中等有限的文件系统访问
高权限运行 + 文件上传漏洞严重完全系统控制

️ 防护措施总结

✅ 权限最小化原则

  • Web服务账户:使用专用低权限用户

  • 文件系统权限:严格限制Web目录写入权限

  • 执行隔离:不同应用使用不同运行账户

✅ 文件上传安全

  • 类型验证:白名单验证文件类型和内容

  • 存储安全:上传文件存放到非Web可执行目录

  • 随机命名:避免直接访问和预测文件路径

✅ 纵深防御

  • 沙箱环境:容器化部署隔离风险

  • 监控告警:实时检测异常文件操作

  • 定期审计:检查权限配置和运行账户

 关键要点

"为了方便而使用高权限"是安全的大敌!

  •  权限分离:Web服务永远不应该需要root权限

  •  安全开发:文件上传功能必须有多层验证

  • ⚠️ 配置审查:定期检查生产环境权限设置


1.3.2.2 SSH密钥覆盖攻击:获取Root权限完整指南

通过文件上传漏洞结合目录遍历,覆盖root用户的SSH认证密钥,实现系统完全控制。

【思路】既然猜测相对路径可以生效且决定尝试盲目地覆盖文件。让我们尝试覆盖root用户的主目录中的authorized_keys文件(这里头放置的是公钥文件)。如果该文件包含我们的公钥,就可以以root用户的身份通过SSH访问系统。

1.创建SSH密钥对,把公钥放入authorized_keys文件

现在,authorized_keys文件包含我们的公钥。

2.恶意文件上传

关键操作:使用相对路径上传它../../../../../../../root/.ssh/authorized_keys。

当Burp显示拦截的请求时,我们可以相应地修改文件名并点击转发。

技术要点

  • 利用目录遍历突破上传目录限制

  • 目标路径:root用户的SSH密钥目录(注意:前提是web服务器以root权限运行

  • ⚠️ 盲攻击:无法确认是否覆盖成功

如果成功覆盖root用户的authorized_keys文件,就能够使用我们的私钥通过SSH连接到目标系统。
此外:通常root用户没有SSH访问权限,无法实现ssh远程访问。然而,由于无法通过显示/etc/passwd文件的内容来检查其他用户还有哪些,因此目前root是唯一的选择。

3.SSH连接验证

由于authorized_keys文件被我们成功利用相对路径而覆盖,成功以root身份连接。

# 在攻击主机kali上清理旧主机记录
rm ~/.ssh/known_hosts
# 在攻击主机kali上,使用-i参数指定我们的私钥文件
ssh -p 2222 -i fileup root@mountaindesserts.com

4.攻击成功条件与防范措施

必要条件说明现实可行性
目录遍历有效可向任意路径写入文件 中等
文件覆盖权限root目录可被Web用户修改(web服务器可能以root运行) 较低
SSH服务配置root允许SSH密钥登录 很少见
网络连通性SSH端口可达 常见

 不现实的假设

  • root用户SSH登录:生产环境通常禁用

  • root目录可写:正常系统权限严格控制

  • 盲覆盖成功率:无法确认操作结果

 更可行的攻击目标

  • 覆盖普通用户的SSH密钥

  • 修改应用程序配置文件

  • 写入crontab任务实现持久化

️ 防御对策总结

✅ 系统层防护

# 禁用root SSH登录
PermitRootLogin no

# 严格目录权限
chmod 700 /root/.ssh
chown root:root /root/.ssh

✅ 应用层防护

  • 路径过滤:禁止../等特殊字符

  • 文件类型验证:检查文件内容与扩展名匹配

  • 写入限制:限定上传到安全目录

✅ 监控检测

  • 文件完整性监控:检测系统关键文件变更

  • SSH日志审计:监控异常认证尝试

  • Web应用防火墙:检测路径遍历攻击

 攻击流程可视化

文件上传漏洞 → 目录遍历 → 覆盖authorized_keys → SSH密钥认证 → Root权限↓              ↓             ↓               ↓           ↓上传接口      ../../路径    写入成功        私钥连接     系统控制

即使无法执行上传文件,通过创造性利用系统功能,文件上传漏洞仍可能导致严重后果!渗透测试启示:安全测试需要超越常规思维,探索各种可能的攻击向量组合。


创作不易求一波暴击点赞❤️ 关注 收藏⭐️ 评论

您的支持是我创作最大的动力!

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

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

相关文章

完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”

完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

随机化学习笔记

以后不会正解就用这东西。 随机函数 说一个单独的数是「随机数」是无意义的,所以以下我们都默认讨论「随机数列」,即使提到「随机数」,指的也是「随机数列中的一个元素」。 现有的计算机的运算过程都是确定性的,因…

在国税网站更换购票员怎么做四川新正路桥建设工程有限公司网站

文章目录 基本思想递归版本思路代码实现 非递归版思路代码实现 特性结果演示 基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子…

PWN手的从成长之路-08-not_the_same_3dsctf_2016-溢出+函数调用劫持

远程连接,没有什么可用信息。file 查看文件。32 位 ELF 可执行文件。checksec 查看文件安全属性。开启了 NX 保护,栈上无法执行。IDA 打开文件。查看 main 函数,发现了 gets() 高危函数。并且在 get_secret 函数中找…

强化学习系统性学习笔记(一):从理论基础到策略优化

强化学习系统性学习笔记(一):从理论基础到策略优化强化学习系统性学习笔记(一):从理论基础到策略优化 一、强化学习的起源与核心问题 1.1 理论溯源:从生物学习到数学框架 强化学习的思想源头可以追溯到生物行为…

12-windows11的WSL详解

Windows 11 WSL详解:在Windows中运行Linux的完整指南 总述 Windows Subsystem for Linux(WSL)是微软在Windows 11中引入的一项革命性技术,它允许用户在Windows操作系统内直接运行Linux环境,无需虚拟机或双系统启动…

深入解析:音频降噪技术:从原理到工具的完整指南(scipy librosa noisereduce soundfile pedalboard)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:如何将文件从电脑传输到安卓设备

完整教程:如何将文件从电脑传输到安卓设备pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

[vmware+openeuler22.03]创建软RAID

1.添加虚拟硬盘 如下图所示添加4块成员硬盘(RAID6的最小成员硬盘数量为4)2.安装mdadm sudo yum install mdadm3.创建RAID 查看mdadm的使用方法 Joe@openeuler ~]$ sudo mdadm --create --help Usage: mdadm --creat…

哪个网站做恒生指数最安全如何将网站提交给百度

目录 一、实时数仓的需求与挑战 二、构建极速易用的实时数仓架构 三、解决方案 3.1 如何实现数据的增量与全量同步 3.1.1 增量及全量数据同步 3.1.2 数据一致性保证 3.1.3 DDL 和 DML 同步 Light Schema Change Flink CDC DML 和DDL同步 3.2 如何基于Flink实现多种数…

002

002$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");002.C语言进制、ASCII码和基础数据类型 数字进制表示法 在日常生活中,我们计数往往使用十进制。然而在计…

网站超市源码哪个好找人做彩票网站有哪些

一、子查询&#xff1a; 1.语法&#xff1a; select 列名 from 表名 where 列名 比较运算符(>、<、) (子查询) 2.将子查询和比较运算符联合使用&#xff0c;必须保证子查询的返回结果不大于1条 3.子查询是一个嵌套在select,insert,update和delete语句或者其他子查询中的查…

网站登录页面怎么做的软件开发者英文

立方体纹理就是包含6个2D纹理的纹理.6个纹理有序排列在立方体的6个面.其可以通过方向向量采样立方体纹理上的纹素.创建立方体贴图跟创建2D贴图一样,但是绑定到GL_TEXTURE_CUBE_MAP上.glGenTextures(1, &CubeMapID); glBindTexture(GL_TEXTURE_CUBE_MAP, CubeMapID);立方体纹…

国际购物网站平台有哪些wordpress付费播放

前提要求 ubuntu下安装lxd 参考Rockylinux下安装lxd 参考LXC 源替换参考LXC 容器端口发布参考LXC webui 管理<

地方美食网站开发意义优秀网站配色

作者&#xff1a;轩辕之风O来源&#xff1a;编程技术宇宙-前言-程序员经常要面临的一个问题就是&#xff1a;如何提高程序性能&#xff1f;这篇文章&#xff0c;我们循序渐进&#xff0c;从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进&#xff0c;串联起高性能…

GenColoring - AI 免费涂色页生成器

GenColoring - AI 涂色页生成器上个月发现Nano Banana模型的图片编辑和生成能力都很不错,于是找了找是否有涂色页生成相关的应用,试用了几款后发现GenColoring的效果很满意,比其他的AI涂色页效果要好很多,而且每天…

zkSync Era在ETHDenver的技术盛宴:zkEVM与Layer2创新实践

本文详细介绍了zkSync作为ETHDenver 2023官方Layer2赞助商的技术活动安排,包括zkEVM开发工作坊、账户抽象黑客松、安全研讨会等核心技术内容,以及基于zkSync Era的食品代币实践案例。在ETHDenver与zkSync Era连接 zk…

linux网站开发电子商务网站数据库建设

这里我们使用Java的线程与锁来解析共享内存模型&#xff1b;做过java开发并且了解线程安全问题的知道&#xff0c;要使某段代码是线程安全的那必须要满足两个条件&#xff1a;内存可见性、原子性&#xff1b; 内存可见性 在JVM规定多个线程进行通讯是通过共享变量进行的&a…

农业科技工作服务站建站模板购物网站设计

http://www.jqdemo.com/525.html转载于:https://www.cnblogs.com/iqiao/p/4255515.html

Squarepoint Challenge (Codeforces Round 1055, Div. 1 + Div. 2)

A. Increase or Smash 题意:你有一个全\(0\)数组,每次可以使得数组全部加上一个数或者使得某些位置变为\(0\)。求变成\(a\)的最小操作数。 最少的操作方案是,先把\(a\)去重后排序,然后从大到小每次加\(a_i - a_{i-…