PostgreSQL是当下最流行的数据库系统之一,它是 Mac OSX系统下最常用的数据库,但同时也提供了Windows及Linux操作系统版本。(Kali下Metasploit用的就是PostgreSQL数据库)
今天,我将要给大家介绍一个鲜为人知的PostgreSQL特性,这个特性允许数据库的特定用户在PostgreSQL环境中执行任意代码并且在PostgreSQL 9.3至最新版本(11.2)中这个特性是默认开启的。它将会影响所有安装了PostgreSQL的Windows,Linux以及Mac操作系统。
从9.3 版本开始,PostgreSQL实现了“COPY TO/FROM PROGRAM”这个新的功能,它允许数据库的超级用户以及“pg_read_server_files”组用户执行任意的操作系统命令。这意味着在数据库超级用户角色与运行此数据库的操作系统用户角色之间没有进行适当的权限的分离。
这是一种深度防御意识的的匮乏,早在2000年初,我们就在Microsoft SQL Server上见到过这种情况。当时Microsoft SQL Server默认开启xp_cmdshell这个函数,不过在Microsoft SQL Server 2005版本中这个函数被默认禁止。但是如此相似的漏洞重复出现看上是一件非常有趣的事,就像一个跳不出的魔咒。