WEB-CTF 条件竞争

文章目录

  • 条件竞争(Race Conditions)
    • 1.背景介绍
    • 2.成因
    • 3.攻击方式以及危害

条件竞争(Race Conditions)

1.背景介绍

条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。

2.成因

下面以相关操作逻辑顺序设计的不合理为例,具体讨论一下这类问题的成因。在很多系统中都会包含上传文件或者从远端获取文件保存在服务器的功能(用户上传头像),下面有一段简单的上传文件的的代码


	if(isset($_GET['src'])){
		copy($_GET['src'],$_GET['dst']);
		//...
		//check file
		unlink($_GET['dst']);
		//...
	}
?>

*先通过copy($_GET['src'],$_GET['dst']);将文件从源文件地址复制到目的地址,然后检查$_GET['dst']的安全性,如果发现$_GET['dst']不安全就通过unlink($_GET['dst'])将其删除。但是,当程序在服务端并发处理用户请求时问题及来了。如果在文件上传成功后但是在相关安全检查发现它是不安全文件删除它以前的这个文件就被执行了那么会怎样呢?

假设攻击者上传了一个用来生成恶意shell的文件,在上传完成和安全检查完成并删除它的间隙,攻击者通过不断发起访问请求的方法访问了该文件,该文件即刽呗执行,并且在服务器上生成一个恶意shell的文件,至此,该文件的任务就全部完成了,至于后面发现它是不是一个安全的文件并把它删除的问题都已经不重要了,因为攻击者已经成功的在服务器中植入了一个shell文件,后续的一切都不是问题了

由上述过程我们可以看到这种“先将猛兽放进屋,再杀之”的处理逻辑在并发的情况下是十分危险的,极易导致条件竞争漏洞的发生。

3.攻击方式以及危害

攻击者通过不断地发起访问上传的恶意文件请求的方法成功的将原有处理不安全的文件

上传文件E -> 删除不安全文件E

的业务逻辑变成了

上传文件E -> 访问执行文件E,生成shell文件S -> 删除不安全文件E

不安全文件E虽然被删除了,但是有它生成出来的shell文件S却保留在了服务器中,对攻击者来说这个shell文件S才是后续攻击的关键。

参考文献:
CTF中的条件竞争
http://wiki.secbug.net/web_race-condtion.html

你可能感兴趣的:(WEB知识)