起序:客户内网测试的时候遇到的,搭建一个环境,写个笔记记录一下。
一、靶场环境使用的是 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、启动靶机
注:当测试完成之后会用到 关闭靶机 的命令。不是现在就要使用的命令。
2、Navicat 连接 PostgreSQL
账号密码:postgres:postgres。
3、执行命令
右键 public,点击 新建查询。
然后就是执行下面的这些命令。
4、实战拓展:反弹 shell 1、nc 监听
在 kali 中使用 nc 进行监听。
2、执行反弹 shell 的命令
但是可以看出执行失败了,这种方法不行。
3、反弹失败
kali 也没有得到 shell。
4、编码解决
将反弹 shell 的命令 base64 编码一下。(下面的解码不用管)
5、再次执行反弹 shell 的命令
这里的编码不仅仅限于 base64,其他编码形式也可以,主要是为了解决数据传输过程中的特殊字符被异常解析的问题。
6、反弹成功
三、漏洞修复 pg_read_server_files,pg_write_server_files 和 pg_execute_server_program 角色涉及读取和写入具有大权限的数据库服务器文件。将此角色权限分配给数据库用户时,应慎重考虑;增强密码的复杂度;进行网络隔离,限制 IP 访问,只允许需要的 IP 连接;到此这篇关于CVE-2019-9193:PostgreSQL 任意命令执行漏洞的文章就介绍到这了,更多相关PostgreSQL 任意命令执行漏洞内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!