Kali Linux Web渗透测试手册(第二版) - 9.3 - 绕过文件上传限制

标记红色的部分为今日更新内容

9.0、介绍

9.1、如何绕过xss输入验证

9.2、对跨站脚本攻击(xss)进行混淆代码测试

9.3、绕过文件上传限制

9.4、绕过web服务器的CORS限制

9.5、使用跨站点脚本绕过CSRF保护和CORS限制

9.6、利用HTTP参数污染

9.7、通过HTTP头利用漏洞

绕过文件上传限制

在前几个章节,我们已经学习在上传文件时如何绕过一些常规限制。在这个章节中,我们将使用一个相比之前而言安全规则更加完整的一个新的系统。

实战演练

在这个章节中,我们要将VM虚拟漏洞系统中的Mutillidae II设置为安全等级,在菜单中使用Toggle Security选项去设置它并且将Burp Suite设置为代理:

1. 在Mutillidae II菜单中,跳转到Other|UnrestrictedFile Upload|File Upload

2. 首先我们尝试上传一个PHP的webshell,你可以使用我们在前几章中使用的,也可以使用一个自己的。如下,上传会失败并且我们看到一个详细报告:

从上面的响应中,我们可以推断文件上传的位置为/tmp目录下,上传检测系统首先会将webshell重命名,然后检查它的扩展名和文件类型,如果检查通过那么将文件重命名为它一开始的名称。

3. 首先我们尝试上传一个脚本,通过它我们可以知道web服务器的工作目录(文档的根目录)是什么,这样的话就可以知道一旦上传了webshell,那么就可以知道它的存放位置,创建一个名为sf-info.php的文件,其中的代码如下:

4. 使用Burp Suite拦截上传,将后缀名修改为.jpg,并将Content-Type修改为image/jpeg,如下所示:

5. 现在,转到BurpSuite的代理历史记录将发送到Mutillidae的任意GET请求发送到repeater,我们需要通过它利用本地文件包含漏洞来执行上传的webshell。

6. 在Repeater中,将URL中page的参数替换为../../../../tmp/sf-info.jpg然后发送这个请求,结果如下图:

7. 创建webshell.php,它的代码如下:

8. 上传这个文件,像下面所示的那样修改它的文件名:

现在的问题是如何通过这个webshell来执行命令。它存储在/tmp目录下,所以我们不能通过浏览器直接访问它。为了解决这个问题,我们需要继续上传另一个文件,它可以将webshell重命名为.php并将它移动到web根目录。

9. 把我们上传sf-info.php的包发送到repeater中。

10.将文件名更改为rename.jpg并调整Content-Type。

11.将文件的内容替换成下面的内容:

12.看截图:

13.和sf-info.jpg一样,利用LFI执行rename.jpg,如下图:

14.现在我们的webshell应该已经移动到了web的根目录,访问http://192.168.56.11/mutillidae/webshell.php.

如下图:

工作原理

在这个章节中,我们使用一种绕过文件上传限制的方法,以便将恶意代码上传到服务器中。但是由于部分限制,上传的文件不能直接由攻击者执行,因为他们必须作为图像上传,所以浏览器和服务器便只会将他们视作图像来处理,并不会执行其内部的恶意代码。

我们使用本地文件包含漏洞来执行上传的文件,这是对文件类型限制的一另类的绕过思想。就拿我们这个webshell来说,首先我们执行命令来了解内部服务器设置,发现了存储文件的目录。

一旦我们知道了内部文件存放的位置,那么我们就可以上传webshell并添加第二个脚本将其复制到web的根目录,这样的话我们就可以直接从浏览器调用它,从而完成此次攻击。

原文发布于微信公众号 - 小白帽学习之路(bat7089)

原文发表时间:2019-06-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券