一、前言
PostgreSQL是一个开源数据库,主要部署于Linux操作系统中。然而,PostgreSQL的兼容性非常好,可以兼容多个操作系统,也能在Windows及MacOS操作系统上运行。如果PostgreSQL数据库没有被正确配置,并且攻击者已经事先获取了凭证信息,那么他们就可以实施各类攻击行为,比如读写系统文件以及执行任意代码等。
来演示的目标系统是Metasploitable 2,因为该系统包含许多漏洞,也存在配置不当问题。
二、服务探测及版本识别
PostgreSQL数据库的默认监听端口为5432。在端口扫描过程中,如果发现该端口开放,那么目标主机很有可能安装了PostgreSQL。
· nmap -sV 172.16.222.195 -p 5432
图1. PostgreSQL:通过Nmap判断数据库版本
此外,Metasploit平台中也有一个模块可以用来识别PostgreSQL数据库以及具体的版本:
auxiliary/scanner/postgres/postgres_version
图2. PostgreSQL:通过Metasploit识别数据库版本
三、探测数据库凭证
在共享文件夹中发现包含数据库用户名及密码的配置文件并不稀奇,然而,如果目标没有犯下如此低级的失误,那么我们可以使用一个Metasploit模块暴力破解数据库凭证,如下图所示:
· auxiliary/scanner/postgres/postgres_login
图3. PostgreSQL:暴力破解数据库凭证
探测数据库凭证是非常关键的一个步骤,如果没有掌握正确的凭证,我们很难突破目标主机,因为大多数攻击操作都需要访问数据库。
四、访问数据库
Kali Linux系统中默认包含了psql工具,在已知数据库用户名及密码的前提下,我们可以使用这个工具通过PostgreSQL数据的认证过程。命令如下:
· psql -h 172.16.222.195 -U postgres
图4. PostgreSQL:访问数据库
一旦连接上数据库,我们应该执行如下操作:
1、枚举已有的数据库。
2、枚举数据库用户。
3、枚举数据库表。
4、读取表内容。
5、读取数据库密码。
6、导出数据库内容。
我们可以使用如下命令完成上述任务:
· postgres-# \l 图5枚举数据库