第七关 通过竞争条件上传 Web shell
这一关采用通过发送标签组实现条件竞争上传恶意php文件,获取用户秘钥
提示:1、靶场包含易受攻击的图片上传功能
2、尽管它对上传的任何文件执行可靠的验证,但可以通过利用处理文件的方式中的竞争条件来完全绕过此验证。
3、请上传一个基本的 PHP Web shell,然后使用它来窃取文件 /home/carlos/secret 的内容
4、给了引入此竞争条件的易受攻击的源代码
具体操作:
1、先正常登录账户,上传正确的头像图片,点击上传,跳转到上传成功页面,然后返回我的账户,这就是一个上传图片的流程(操作见第四关)
2、创建恶意php文件上传
php代码如下,意思是打开获取的用户秘钥:
<?php system('cat /home/carlos/secret');?>

响应返回只允许上传jpg/png图片,上传失败

然后返回我的账户
3、接下来,尝试使用新方法条件竞争
先找到以两个请求发往repeater
第一个请求POST /my-account/avatar数据包,这个是上传php文件到头像失败的请求
正常响应返回403

第二个请求GET /files/avatars/tian.png,这个请求是点击返回我的账户,获取查看上传的图像
正常响应返回304
改成恶意文件名exploit.php

这两个请求的顺序是先上传头像,再是获取查看上传的头像
4、然后去repeater查看
先选择一个选项卡鼠标右键选择“添加到分组“
Add tab to group——Create tab group

跳出弹框:先随便起个组名,请求顺序1,2,点击创建

四个选择详解如图:

这里选择第四个并发,一起发请求,实现条件竞争

然后看到第二个请求这里的文件路径名这里改成和第一个请求的filename=exploit.php一样的恶意文件名
我这里并发请求条件竞争发了5次请求才成功
爆出秘钥:EkgZceRVryeT8bhepwyTOizx4uwFa003

提交秘钥,靶场过关
