安全矩阵

 找回密码
 立即注册
搜索
查看: 2570|回复: 0

条件上传之竞争漏洞

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-11-28 14:42:17 | 显示全部楼层 |阅读模式
原文链接:条件上传之竞争漏洞

文件上传

用一张图片简单描述一下文件上传时发送的http协议内容
文件上传漏洞的原因对于上传文件的后缀名(扩展名)没有做较为严格的限制
对于上传文件的MIMETYPE(content-type)(用于描述文件的类型的一种表述方法)没有做检查
权限上没有对于上传的文件目录设置不可执行权限
web server对于上传文件或者指定目录的行为没有做限制在WEB中进行文件上传的原理是通过将表单设为multipart/form-data,同时加入文件域,而后通过HTTP'协议将文件内容发送到服务器,服务器端读取这个分段(multipart)的数据信息,并将其中的文件内容提取出来并保存的。
条件竞争条件竞争漏洞是一种服务器端的漏洞,是由于开发者设计应用程序并发处理时操作逻辑不合理而造成。当应用面临高并发的请求时未能同步好所有请求,导致请求与请求之间产生等待时出现逻辑缺陷
程序在运用多线程时,没有做好线程同步,导致产生非预期结果。
比如:先存储文件,再判断是否合法,然后又删除。。。        首先将文件上传到服务器,然后检测文件后缀名,如果不符合条件,就删掉,典型的“引狼入室”        攻击:首先上传一个php文件        当然这个文件会被立马删掉,所以我们使用多线程并发的访问上传的文件,总会有一次在上传文件到删除文件这个时间段内访问到上传的php文件,一旦我们成功访问到了上传的文件,那么它就会向服务器写一个shell。
<?php fputs(fopen("shell.php",'w'), '<?php @eval($_POST["x"]);?>');?>上传的php文件被删除,但是会保留新生成的shell.php文件




burpsuite工具采用多线程重放数据包手工打开浏览器快速点击URL访问shell.php,直到界面出现如下所示:

漏洞修复与防范条件竞争漏洞产生的很大一部分原因是程序不严谨,对于并发操作没有做好同步制约,毕竟开发者在进行代码开发的时候,常常倾向于代码会以线性的方式执行,而并行服务器会同时执行多个线程,这就会导致意想不到的结果。
解决条件竞争的方法就是要让存取公共变量的线程进行同步,也就是线程安全,目的是让过程实现原子性。例如读和写某一变量的过程是原子性的,不可分割的,在读写的过程中,其他指令无法插入,等待设置完值后才可以读其中的数据,这就使得每次读取的值就是最新值。一般线程安全可通过锁(互斥所、读写锁等)、条件变量、信号量、事件等方式实现。“引狼入室”的方法不可取,最好先进行充分的检测,再上传到服务器。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-23 00:18 , Processed in 0.019789 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表