标记红色的部分为今日更新内容
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的根目录,这样的话我们就可以直接从浏览器调用它,从而完成此次攻击。