CVE-2012-1823漏洞复现

CVE-2012-1823漏洞复现

  • CVE-2012-1823漏洞介绍
  • 漏洞复现
    • 验证漏洞
    • 漏洞利用
  • 漏洞存在原因
    • 漏洞利用方式
    • 移除漏洞环境

本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担

CVE-2012-1823漏洞介绍

  • PHP-CGI远程代码执行漏洞
  • 影响版本 php < 5.3.12 or php < 5.4.2

漏洞复现

编译及运行环境

cd vulhub/php/CVE-2012-1823/
docker-compose up -d

验证漏洞

环境安装成功后,通过浏览器访问http://your-ip:8080,如CVE-2012-1823漏洞复现_第1张图片
说明环境存在
访问http://your-ip:8080/index.php?-s如果爆出源码,说明漏洞存在,如图
CVE-2012-1823漏洞复现_第2张图片

漏洞利用

用burpsuit抓post请求的数据包,然后修改数据包,可以php远程代码执行
首先,打开打开burpsuit
CVE-2012-1823漏洞复现_第3张图片
利用Max hackbar发送一个post请求
CVE-2012-1823漏洞复现_第4张图片
成功抓到数据包,丢到repeater里
CVE-2012-1823漏洞复现_第5张图片
修改数据包,添加参数,url后面跟的东西是“-d allow_url_include=on -d auto_prepend_file=php://input”经过url编码后的,这个是文件包含
CVE-2012-1823漏洞复现_第6张图片

然后发送数据包,得到回包,回包内有用户的id值,说明成功执行我们提交参数的代码了
CVE-2012-1823漏洞复现_第7张图片
我们也可以重新再构造一个数据包,比如说查看对方服务器的/etc/passwd的文件
CVE-2012-1823漏洞复现_第8张图片
回包情况如图
CVE-2012-1823漏洞复现_第9张图片
这样我们可以得知对方服务器的账户和密码,不过密码是看不到的
然后我们可以反弹shell
重新修改数据包
CVE-2012-1823漏洞复现_第10张图片
kali开启监听
在这里插入图片描述
不过没有成功,我尝试了几次,都没有成功
原因可能因为

  • bash/sh命令不存在
  • 当前用户无权使用bash/sh
  • 禁止出站IP

漏洞存在原因

先介绍几个概念

  • php-cgi是一个类似于消息的“传递者”,它接收web容器收到的http数据包,并把里面的数据交给PHP解释器执行
  • php-cgi有两个功能,一是提供cgi方式的交互,二是提供fastcgi方式的交互
    • cgi方式:web容器接收到http数据包后,拿到用户请求的文件(cgi脚本),并fork除一个子进程(解释器)去执行这个文件,然后拿到执行结果,直接返回给用户,然后子进程结束,但是这个cgi模式不能接收同时接收大量的请求,因为创建进程的时候会消耗服务器资源,资源也不是无限的,所以有了fastcgi
    • fastcgi方式:fastcgi进程可以将自己一直运行在后台,并通过fastcgi协议接收数据包,执行后返回结果,但自身并不退出
  • CVE-2012-1823就是存在于以cgi模式运行的php中
    本质:用户请求的参数被作为了php-cgi的参数

漏洞利用方式

cgi模式下有如下一些参数可用

  • -c 指定php.ini文件的位置
  • -n 不要加载php.ini文件
  • -d 指定配置项
  • -b 启动fastcgi进程
  • -s 显示文件源码
  • -T 执行指定次该文件
  • -h和-?显示帮助
  • 绝佳方式我们开始的通过-d利用远程文件包含来提交远程执行代码的方式,这样可以执行任何代码

移除漏洞环境

注意:在执行完docker-compose up -d后,不要离开当前目录,漏洞测试结束后,执行如下命令移除环境

docker-compose down
# 关闭正在运行的容器,删除所有相关的容器,移除NAT(docker-compose在运行的时候会创建一个NAT网段)

如果说不想通过这种方式,也可以
CVE-2012-1823漏洞复现_第11张图片

你可能感兴趣的:(漏洞复现,python,网络安全,安全漏洞)