美文网首页
条件竞争漏洞

条件竞争漏洞

作者: 帅猪佩奇 | 来源:发表于2018-12-07 18:16 被阅读6次

条件竞争是沃特?

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

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

线程同步机制确保两个及以上的并发进程或线程不同时执行某些特定的程序段,也被称之为临界区(critical section),如果没有应用好同步技术则会发生“竞争条件”问题。

形象实例

抽象成四个字,措手不及!!!

利用多线程并发去执行同一个操作进程,服务器无法或者没有处理程序,导致处理高并发的线程未能同步好所有请求,导致请求与请求之间产生等待时出现逻辑缺陷。出现意想不到的结果,措手不及应接不暇人山人...咳咳,反应不过来就出错。

该漏洞一般出现在与数据库系统频繁交互的位置,例如金额同步、支付等较敏感操作处。另外条件竞争漏洞也会出现在其他位置,例如文件的操作处理等。

给两个例子好好消化消化。

例1:金额提现

假设现有一个用户在系统中共有2000元可以提现,他想全部提现。于是该用户同时发起两次提现请求,第一次提交请求提现2000元,系统已经创建了提现订单但还未来得及修改该用户剩余金额,此时第二次提现请求同样是提现2000元,于是程序在还未修改完上一次请求后的余额前就进行了余额判断,显然如果这里余额判断速度快于上一次余额修改速度,将会产生成功提现的两次订单,而数据库中余额也将变为-2000。而这产生的后果将会是平台多向该用户付出2000元。

例2:先存储文件,再判断是否合法,然后再删除。

首先将文件上传到服务器,然后检测文件后缀名,如果不符合条件,就删掉,典型的“引狼入室”

攻击:首先上传一个php文件

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

乌云实例:http://wooyun.jozxing.cc/static/bugs/wooyun-2014-049794.html

乌云人民币套现:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-099622.html

CTF实例

https://blog.csdn.net/iamsongyu/article/details/83346029  //Itshop

辣条之王 知识点1.条件竞争 2.数据溢出

数据溢出重点一句话:我们输入的是份数,后台肯定要查询数据库中我们的大辣条数目书否符合条件,即是否大于份数*5,才会给我们相应的辣条之王。我们的目的是数据库判断可以过,但是后台也得给我们足够的辣条之王,思路是使用整数溢出欺骗数据库,(重中)使得我们请求的数字在服务器看来就是1分辣条之王,而实际上是很多。(之重!)

ctf题目:http://119.23.73.3:5006/web2/index2.php (练习)

首先进入CTF地址,观察发现,网址为inde2.php,

正常来说应是index.php,访问index.php发现自动跳转 inde2.php

抓包截包,

进入 uploadsomething.php,发现应该是个上传页面,第一个框为上传文件名,第二个为文件内容,

上传1.php ,返回路径 查看

凭我专业八级的英语水平,这意思应该是太慢了,于是聪明的你想到的条件竞争漏洞,迅速上传迅速访问。

OK,使用burp intruder 模块 爆破上传,然后访问。

于是,开始,

分别抓取两个包发送intruder

第一个包网址:http://119.23.73.3:5006/web2/uploadsomething.php?filename=1.php&content=

第二个包网址:http://119.23.73.3:5006/web2/uploads/c2a54d18d324f0c9b33b29243f77d3a45b5f9463/1.php

调整没有字典的爆破,不断发包,

然后设置发送三千个数据包,然后设置线程调至50

第一个包为以50线程迅速上传三千次,

第二个包为以50线程迅速访问三千次,只要速度够快就可以访问到。

然后开始爆破成功得到flag,我们可以看到也不是百分百可以得到flag,存在竞争,

防御

对于数据库的操作,正牌的方法是设置锁

对于文件上传,一定要经过充分完整的检查之后再上传而不是先上传在辨别。

---

参考:https://blog.csdn.net/ivalue/article/details/81412494

参考:https://www.0dayhack.com/post-666.html

相关文章

  • 条件竞争漏洞

    条件竞争是沃特? 敲黑板,定义:竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操...

  • 网络安全知识培训学习笔记

    逻辑漏洞 条件竞争 多个线程竞争同一个共享代码、变量、文件等称之为条件竞争。那么什么情况存在竞争条件? 实例:上传...

  • 软件安全-竞争条件漏洞

    Race Condition 概述竞争条件char* fn = "/tmp/xyz" 检查access(fn,W_...

  • 实践中学习cve-2016-5195

    该漏洞是Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有...

  • mysql CVE-2016-6663 条件竞争漏洞提权详情与P

    在MySQL、 MariaDB和PerconaDB数据库中发现条件竞争漏洞在受影响版本中,用户可以使用低权限的数据...

  • 文件上传漏洞

    文件上传漏洞 权限 漏洞分类 利用条件 漏洞挖掘 常见可执行文件后缀

  • 脏牛提权复现(cve-2016-5159)

    (1)影响范围 原理: linux内核的子系统在处理写入时复制至产生了竞争条件,恶意用户可利用此漏洞来获取高权限,...

  • Kernel Pwn基础教程之 Double Fetch

    一、前言 Double Fetch是一种条件竞争类型的漏洞,其主要形成的原因是由于用户态与内核态之间的数据在进行交...

  • 两行代码简单实现Python多线程(Vthread库) by L

    0X00 前言 在学习上传漏洞中的竞争条件上传时,需要我们在shell.php被删除之前访问它有两种方法可以实现:...

  • metasploit+nessus

    我们一般重点关注高危漏洞,中危漏洞利用条件会比较苛刻,低危漏洞基本没有利用的可能。查看高危漏洞详情,根据漏洞简介信...

网友评论

      本文标题:条件竞争漏洞

      本文链接:https://www.haomeiwen.com/subject/zptacqtx.html