专栏首页一名白帽的成长史【逻辑漏洞】通过条件竞争进行文件上传

【逻辑漏洞】通过条件竞争进行文件上传

Part.1

基本概念

基本概念

基本概念:竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。

开发者在进行代码开发时常常倾向于认为代码会以线性的方式执行,而且他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果。

漏洞逻辑:首先将文件上传到服务器,然后检测文件后缀名,如果不符合条件再删掉。

攻击思路:首先上传一个php文件,当然这个文件会被立马删掉,所以我们使用多线程并发的访问上传的文件,总会有一次在上传文件到删除文件这个时间段内访问到上传的php文件,一旦我们成功访问到了上传的文件,那么它就会向服务器写一个shell。

Part.2

漏洞分析

漏洞分析

以upload-labs-master的第17关为例:

查看提示,需要代码审计:

查看源代码如下:

会发现上传逻辑为:

  1. 先通过move_uploaded_file(temp_file,upload_file)将文件上传至服务器中。
  2. 上传完毕后通过in_array(file_ext,ext_arr)检查文件名后缀
  3. 如果后缀名合法,则对文件进行重命名,上传完成
  4. 如果后缀名非法,则删除文件。

随意上传一张图片:

成功后查看图片,可以看到上传后的路径如下:

Part.3

漏洞利用

漏洞利用

我们先在本地创建一个test.php文件:

//访问该页面,就会在本地写入一个info.php文件。

直接上传的话,肯定会被删除:

这里尝试一下条件竞争。

已知文件上传后的路径为upload-labs-master/upload/test.php

现在访问肯定不存在:

使用burp抓取上传报文:

再抓取一个访问报文:

将以上两个报文都发送至intruder模块。

在报文url中加上?a=1,并将a设置为变量,用于不断发送:

访问包设置a参数:

都选择类型为Numbers的字典,数量为一万:

将线程都调到20:

开始攻击,当出现200时,上传成功:

尝试访问生成的info.php:

成功~

Part.4

防护手段

防护手段

对于文件上传类的条件竞争漏洞,一定要先充分检查之后再进行上传。

而不是先上传,之后再检测。

最后附上乌云的实际案例:

https://wooyun.laolisafe.com/bug_detail.php?wybug_id=wooyun-2014-049794

本文分享自微信公众号 - 一名白帽的成长史(monster-liuzhi),作者:Monster刘智

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【实战篇】记一次文件上传漏洞绕过

    怀疑是waf检查上传内容进行了过滤,尝试绕过。Boundary字段会标识我们上传的内容:

    一名白帽的成长史
  • 【文件包含】文件包含漏洞知识总结v1.0

    和SQL注入等攻击方式一样,文件包含漏洞也是一种“注入型漏洞”,其本质就是输入一段用户能够控制的脚本或者代码,并让服务器端执行。

    一名白帽的成长史
  • 【文件上传与解析】文件上传与解析漏洞总结v1.0

    大多数网站都有文件上传的接口,如果没有对上传的文件类型做严格的限制,会导致攻击者可以上传恶意文件。(例如Webshell)

    一名白帽的成长史
  • 文件上传漏洞另类绕过技巧及挖掘案例全汇总

    文件上传漏洞作为获取服务器权限最快的方式,虽然相关资料很多,但很多人对上传校验方式、如何针对性绕过检测、哪种上传和解析的场景会产生危害等还是比较模糊。本文作一...

    Jayway
  • 文件上传漏洞的一些总结

    0x00 前言 在跟p猫的py交易后,写下了这篇文章,根据之前写文章后表哥给予的一些改进建议,尽量在这篇文章中写得更加详细。因为本人技术水平有限菜的要死,所以...

    ChaMd5安全团队
  • 漏洞复现|文件上传漏洞利用方式与原理概述

    文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马...

    陈殷
  • PHP-文件上传

    ​ 默认情况下,表单传递是字符流,不能传递二进制流,通过设置表单的enctype属性传递复合数据。

    cwl_java
  • [红日安全]Web安全Day5 - 任意文件上传实战攻防

    大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ...

    红日安全
  • 看图说话:文件上传(File Upload)漏洞示例

    作为测试人员,我们常常听到“安全测试”这个词,但鲜有人真正做过安全测试。从我们的职责“保障质量”角度来说,说是一种“失职”也不为过。那么安全测试是什么,究竟怎么...

    张树臣
  • 记一次有意思的文件上传

    由于站点对上传文件未作过滤或过滤机制不严(文件后缀或类型),导致恶意用户可以上传脚本文件,通过上传文件可达到控制网站权限的目的。

    Ms08067安全实验室

扫码关注云+社区

领取腾讯云代金券