声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
******No.1******
PostgreSQL介绍
PostgreSQL(也称postgres)是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle 、Sybase、IBM的DB2和Microsoft SQL Server)之外的另一种选择。
PostgreSQL在国外的流行程度不亚MySQL,如msf的数据库就是PostgreSQL。但是如果管理员没有正确的配置PostgreSQL,则会导致任意用户无需密码都可以访问PostgreSQL数据库。
******No.2******
PostgreSQL未授权漏洞
漏洞原因
PostgreSQL配置不当漏洞的形成原因:PostgreSQL配置不当漏洞主要是由于管理员配置不当形成的,PostgreSQL配置文件在/var/lib/pgsql/9.2/data/pg_hba.conf,如果管理员没有正确的配置信任的主机(如下图),则会导致任意用户无需密码都可以访问PostgreSQL数据库。
这里简单介绍下pg_hba.conf配置文件,除去注释掉的部分,主要生效的配置内容就是上图红圈部分,解释下这行的意义:
图片host all all 0.0.0.0/0 trust
host表示匹配类型,第一个all表示任何数据库, 第二个all表示任何数据库用户的访问,0.0.0.0/0表示任何ip地址访问本数据库服务,最后的trust表示对满足条件的主机免密码登录。
上述配置则导致:允许任何来源ip主机,使用任何数据库账户,免密码访问任何数据库,这将直接导致了数据库中所有数据泄露。
******No.3******
PostgreSQL 提权漏洞
(CVE-2018-1058)
通过vulhub搭建漏洞平台,登录到数据平台获取当前会话用户。
postgres提供了自定义函数的功能!我们创建如下函数:
CREATE FUNCTION public.array_to_string(anyarray,text) RETURNS TEXT AS $$
图片
然后在1...**上监听7777端口,等待超级用户触发我们留下的这个“后门”。
用超级用户的身份执行pg_dump命令:
docker-compose exec postgres pg_dump -U postgres -f evil.bak vulhub
导出vulhub这个数据库的内容。
执行上述命令的同时,“后门”已被触发,1...***机器上已收到管理员MD5加密的密码:
图片漏洞修复
以下版本修复了该突破
PostgreSQL PostgreSQL 9.6.8
******No.4******
PostgreSQL 高权限命令执行漏洞
(CVE-2019-9193)
受影响版本
• PostgreSQL 9.3至11.2
其9.3到11版本中存在一处“特性”,管理员或具有“COPY TO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令。
首先连接到postgres中,并执行POC:
DROP TABLE IF EXISTS cmd_exec;
图片
解决建议
pg_read_server_files、pg_write_server_files、pg_execute_server_program 角色涉及到读写数据库服务端文件,权限较大,分配此角色权限给数据库用户时需谨慎考虑。
网友评论