❶ 文件上传漏洞 — .user.ini绕过、后缀大小写绕过
文件上传漏洞在“upload-labs靶场”中讲解,搭建教程详述于文件上传漏洞靶机搭建教程。在“Pass-05/index”页面,访问进入靶机Pass05环境的练习页面,需注意PHP版本须大于等于5.3.0版本。页面提示及文件源码显示,pass过滤了包括.php,.php5等在内的多种后缀名。直接技巧无法上传.htaccess文件以绕过。解决方法需补充知识,即PHP.ini搜索路径遵循顺序:首先查找php-SAPI.ini(例如:php-cli.ini或php-apache.ini),随后从执行PHP文件所在目录开始向上搜索至web根目录,若执行文件位于根目录外,则只扫描该目录。自PHP5.3.0版本起,支持基于每个目录的.htaccess风格的INI文件。此类文件仅被CGI/Fastcgi sapi处理,且引入了两个新的设置:user_ini.filename和user_ini.cache_ttl,分别控制用户INI文件的使用与重新加载间隔时间。.user.ini风格的INI文件仅识别模式为“PHP_INI_PERDIR”和“PHP_INI_USER”的设置。.user.ini实际上允许用户自定义php.ini配置,通过用户自定义设置,可制造后门。具体方法为直接在.user.ini文件中编写。对于“Pass-06/index”页面,通过查看提示与文件源码,发现将多种后缀名包括.php,.php5等进行过滤,但并未对后缀名进行统一转换为小写。因此,考虑尝试后缀名大小写绕过方法。访问上传的文件,文件被解析并执行,此为后缀名大小写绕过成功案例。