前言
此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!
一、回顾第二关知识点
第二关是基于白名单MIME验证绕过,通过抓包修改文件类型达到上传webshell后门。
二、第三关要了解的知识点
1、apache的特性
apache服务器能够使用php解析 .php3 .php5 .phtml。前提是服务器允许解析后缀名为php3、php5、phtml如果想要服务器能使用php解析这些后缀名的话,(绝大多数)可以去apache配置文件httpd.conf添加
AddType application/x-httpd-php .php .phtml .php3 .php5
但是也有少部分因为apache版本原因不能成功的。不能成功的具体操作看https://www.cnblogs.com/Article-kelp/p/14927087.html
三、第三关通关思路
1.看源代码
如图所示
分析关键源代码
$deny_ext = array('.asp','.aspx','.php','.jsp');
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空
这是定义一个黑名单数组然后进行一系列过滤,防止通过点、空格、大小写绕过达到上传恶意文件。这些过滤已经相对安全了,可是发现过滤黑名单中只过滤后缀为php的文件,那么我们能不能上传后缀为php3,php5,phtml的后缀名达到绕过呢?
2、特殊解析后缀名绕过
如图所示
我们通过bp抓包然后把php后缀名改成php3,然后放包,发现上传成功
假如服务器是能够使用php解析php3这个文件后缀名的话,那么此时访问改文件的绝对路径就会成功解析php代码,这里就不演示了
总结
这一关是利用apache服务器的一个特性,能够使用php来解析以php3,phtml等后缀名文件。如果服务器没有配置允许解析此类后缀名的话,也是无法绕过的。此文章是小白自己为了巩固文件上传漏洞而写的,大佬路过请多指教!