前期准备
环境:
web服务器采用Apachce
数据库服务采用MySQL
靶场:
upload-labs
工具:
burp
phpStudy
蚁剑
说明:
本文采用使用物理机访问虚拟机的方式,开启复现前将杀毒软件关闭,避免木马失效。
使用连接工具条件:知道路径、木马不被免杀、文件能够解析
复现
(1)Pass-01 前端验证
因为是前端验证,所以我们可以打开查看器将前端验证函数删除,或将浏览器的 JavaScript 禁用,也可以用先上传然后抓包修改后缀名;
这里选择带有一句话木马的文件用来连接工具
抓包,禁用Javascript,然后放包
此时文件上传成功,我们看一下路径。
连接蚁剑,输入路径和连接密码
(2)Pass-02 content-type类型验证
本官采用文件头部类型验证。我们上传任意文件只需通过bp修改content-type字段为需要的类型
首先上传一个1.php
<?php
phpinfo();
?>
修改content-type类型为image/png,放包。
(3)Pass-03 (黑名单)文件后缀名验证
本关采用黑名单的方式验证文件后缀名,尝试php3、php5、phtml等后缀
修改Apache的httpd-conf文件。 去掉前面#号的注释文件,然后添加一些对应的文件后缀
上传1.php抓包修改后缀为php3,放包
(4)Pass-04(黑名单)文件后缀名验证-.htaccess文件绕过
.htaccess介绍:
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可 以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录 的访问、禁止目录列表、配置默认文档等功能
在Apache中如果需要启动 .htaccess,必须在httpd_conf中设置 AllowOver
在Apache服务器配置中,AddType
指令和<FilesMatch>
指令都可以用于改变特定文件类型的处理方式,但它们之间存在一些差异。具体分析如下:
- AddType:
AddType
是一个用来关联特定文件扩展名与特定的内容类型(MIME类型)的指令。当使用AddType application/x-httpd-php .jpg
时,所有.jpg
扩展名的文件都会被服务器解释为application/x-httpd-php
类型,即 PHP 脚本。这意味着,无论这些.jpg
文件位于服务器的哪个目录,服务器都会尝试以 PHP 来执行它们。 - FilesMatch:
<FilesMatch>
指令则提供了一种更为灵活的方式来匹配文件并设置它们的处理方式。它允许基于文件名、大小或者其他属性来应用特定的配置。例如,<FilesMatch "1.jpg"> SetHandler application/x-httpd-php</FilesMatch>
仅对名为1.jpg
的文件应用SetHandler
指令,使其被当作 PHP 来处理。这种方式通常更适用于针对特定文件进行特殊处理,而不影响其他同名但是不同目录或类型的文件。
总的来说,AddType
作用于所有的指定扩展名文件,而<FilesMatch>
只针对符合特定模式的文件。
.htaccess文件内容:
<FilesMatch "1.png">
SetHandler application/x-httpd-php
</FilesMatch>
我们首先上传.htaccess文件,然后上传1.png
(5)Pass-05 (黑名单)文件后缀名验证-.ussr.ini文件绕过
(6)Pass-06 (黑名单)文件后缀名验证-大小写绕过
(7)Pass-07(黑名单)文件后缀名验证-空格绕过
(8)Pass-08(黑名单)文件后缀名验证-点号绕过
(9)Pass-09(黑名单)文件后缀名验证-特殊字符::$DATA绕过
(10)Pass-10 (黑名单)文件后缀名验证-点空格点绕过
(11)Pass-11 (黑名单)文件后缀名验证-双写绕过
(12)Pass-12 (白名单)get-0x00截断
(13)Pass-13 (白名单)post-0x00截断
(14)Pass-14 (图片马)利用file协议
(15)Pass-15 (图片马)利用getimagesize
(16)Pass-16 (图片马)利用exif_imagetype
(17)Pass-17 二次渲染
(18)Pass-18 条件竞争一
(19)Pass-19 条件竞争二
(20)Pass-20 对保留文件的黑名单验证
(21)Pass-21 (白名单)数组验证绕过