网络安全——文件上传黑名单绕过

文件上传黑名单绕过

第一步,打开网络拓扑,启动实验虚拟机。

第二步,打开桌面上的Chrome浏览器,在地址栏中输入http://127.0.0.1,进入upload-labs页面中,然后点击左侧的导航栏Pass-03进入关卡3,

点击右上角的显示源码,查看其源代码

源码如下

题目中采用的是黑名单过滤的方法,但是上面的过滤并不完全,例如我们可以通过上传后缀名为*.php3,*.php5的文件,然后写入一句话木马

将文件保存为muma.php3,

然后回到浏览器中点击Browse…选择文件muma.php3进行上传。

接下来通过浏览器访问http://127.0.0.1/upload/发现文件上传成功:

点击后缀为.php3的文件,直接跳转到phpinfo页面中,说明该方法有效。

第三步,点击左侧导航栏窗口中的Pass-04进入关卡4,查看其源代码

可以发现这一次的黑名单多了不少,过滤了各种不常见的后缀名,当然也包括我们上面使用的php3等,接下来尝试重写文件解析的规则实现绕过,首先上传一个.htaccess的文件,其内容如下:

然后再上传一个包含一句话木马的shell.jpg文件,其内容为:<?php phpinfo(); ?>

分别上传两个文件,

接下来访问shell.jpg

此时上传的shell.jpg文件被当做php解析。为方便接下来的实验我们在完成这一步的操作后,回到网站的根目录,进入任意关卡,然后点击网页右上角的清空上传文件按钮,若无法删除文件请到网站的根路径下找到upload文件手动删除。

网站根路径:C:\Program Files(x86)\upload-labs\

第四步,点击左侧导航栏窗口中的Pass-05进入关卡5,点击右上角的显示源代码按钮,查看网页的源代码

这一次的黑名单过滤更加彻底,将.htaccess格式的文件也做了过滤,但这里没有在处理文件名时没有统一后缀名,因此可以构造如Php这种写法的后缀名来绕过黑名单过滤,在没有特殊配置的情况下该绕过方法对Linux操作系统的服务器无法实现绕过,因为Linux不区分大小写,只有Windows系统会忽略大小写。上传如下格式的文件至服务器中

观察http://127.0.0.1/upload/目录下文件

上传成功直接访问后缀为.Php的文件

解析成功。

第五步,首先回到首页中,选择Pass-10关卡10,在继续做下面的实验之前,记得先清除上传的文件,打开看源代码

重点在第九行的位置$file_name = str_ireplace($deny_ext, "",$file_name);,作用是将黑名单里面的后缀名替换成空,但是由于程序只替换了一遍,所以这里我们可以采用双写绕过,即上传shell.pphphp,服务器替换掉一次后缀名后报错文件名为shell.php,

访问一下/upload/shell.php,

解析成功。

猜你喜欢

转载自blog.csdn.net/qq_48609816/article/details/125938287