1.本文内容概述:
文件包含漏洞的常用验证绕过方法。
2.文件包含漏洞的验证绕过方法
1. .html验证绕过
在传输文件时,程序员为了规避文件包含漏洞的产生,通常会在接收文件名的参数后面拼接例如.html一类内容以为了达到绕过目的。
例如图中一段php代码:
这就是一段在上传的文件后面自动加上.html的代码
那么我们有什么绕过方法呢
1.重命名绕过
在我们远程上传文件之后通过报错得知了程序员在上面做了如上校验时我们可以通过更改我们被包含服务器的文件名以达到绕过效果
演示:
由于在内网环境下,所以我们会用内网上的虚拟机当作公网上一台我们自己的服务器。
首先我们创建文件名一个如下的文件(为了方便测试,我在其中只写了显示它phpinfo()界面的php代码)
然后在我们的电脑上进行如下包含以达到绕过目的
发现绕过成功。
2.#绕过
经过测试发现,#可以注隔绝后面的文件后缀所以我们做如下绕过
演示:
我们先在远程服务器的目录下创建一个.php文件
然后远程包含
发现调用失败,看报错后面多了个.html
我们在其后面加#
发现解析成功,但是是我们那台linux服务器的,原因在之前文章写过,如果不懂可以观看前面的文章,下面我做正确演示:
这回是被渗透的windows了。
3.?绕过
原理和上一个大同小异,就是用?使后面的.html被当作参数解析。
演示:
4.%00绕过
这个的原因源自于计算机底层,类似于C语言\0代表结束。和零零截断一样。
演示:
5. ./绕过
原理:windows服务器识别url最多能识别256位,linux最多能识别4096位超出的部分可以被顶出。
由于./不被识别,我们可以用其将.html顶出绕过。与上面类似不做演示。
提示:2.3.4.5的绕过本地文件包含绕过和远程文件包含绕过的操作是一样的。
2.SMB远程文件包含绕过
首先我们来了解一下什么是SMB
全称:server messages block,用人话讲就是一种可以在公网上共享文件的传输协议。
如果渗透时目标服务器没有开启allow_url_include和allow_url_fopen那么就无法进行远程文件包含,但是却可以基于SMB服务来共享文件夹,以达到远程包含目的。
搭建过程不做演示,如果有需要评论或私信我我会出教程
然后如下方式利用就可以达到远程包含目的: