PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

admin 2023年1月30日21:25:21评论18 views字数 1536阅读5分7秒阅读模式

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

漏洞简介

postgreSQL是一个功能强大对象关系数据库管理系统。由于9.3增加一个“COPY TO/FROM PROGRAM”功能。这个功能就是允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。


漏洞利用

这个漏洞是一个版本漏洞

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

1、需要登录 2、需要高权限

所以要先弱口令爆破之后,然后查看是否是高权限,这个漏洞才有得玩。

这里之所以选择复现这个漏洞,因为其中的思路比较有意思,也就是看回显的思路。

先大体讲一下这个漏洞是怎么看回显的,他是通过命令执行然后把回显写入创建的一张表里面,下面来具体操作。

  • 先删除你想要使用但是已经存在的表

DROP TABLE IF EXISTS cmd_exec; 

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

  • 创建保存系统命令输出的表


CREATE TABLE cmd_exec(cmd_output text);

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

  • 执行系统命令 利用特定函数copy xxxx from program


PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

查看执行结果

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

这里要强调的点就是命令执行的看回显方法,其他倒是没什么,我觉得这个写入表来看回显的方法很好玩。


实战引申


那么下面给一个实战的例子 也是sql注入没有回显 然后通过把命令执行的结果写入表中 然后用select看回显 由于项目敏感这里只给出部分截图和思路

这里的条件 

1、sql注入没有回显

2、后台是mssql可以执行xp_cmdshell 

3、后台有功能可以select查看对应的表 

  • 通过抓取后台和数据库相关的接口找到这个接口

/PH_SystemModule/DatabaseTable/GetList?tableName=test&databaseLinkId=f2d587de-43e5-4310-b968-4544f4961a39&_=1634809489388

  • 通过对应接口审计源码

上述接口中获取到的关键词为

PH_SystemModule

DatabaseTable

GetList

应该是目录结构 先记下来

然后看到项目的路径

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战


是一个比较典型的mvc架构的项目,虽然不是熟悉的语言,但是架构都是共通的,其中module代表数据库相关的代码

再结合之前的路径名

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

  • everything全局搜索对应的关键词


PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战


  • 成功定位到对应的代码文件


PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

  • 打开代码进行审计

这个strSql是直接从前台传入的,用?strSql=传入即可

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

跟进FindTable方法看看有没有waf

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

没有发现waf,可以直接构造参数来进行注入

然后通过这个注入点注入进去之后,后台并没有回显,于是构造语句写入数据库的表中然后后台用select进行查看

这里不能放图了,只能描述了,大体就是这么个思路,用来看命令执行的回显。


反弹shell

  • 这里的漏洞其实可以使用反弹shell,但是直接执行会有问题,看例子


PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

直接报错了


  • vps也没有得到shell


PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

这里可以用编码来解决

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

  • 执行命令,直接上线


PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

这里的编码不仅仅限于base64 b32 等等都可以 主要是为了解决数据传输过程中的特殊字符被异常解析的问题

往期回顾

01


webshell免杀中符号的妙用

02


objection 过证书绑定抓APP数据包



03

一例APP绕过root检测解密


PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

雷石安全实验室

商务咨询:

0571-87031601

商务邮箱:

[email protected]

联系地址:

浙江省杭州市市民街98号尊宝大厦金尊3301



原文始发于微信公众号(远洋的小船):PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月30日21:25:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PostgreSQL 高权限命令执行 (CVE-2019-9193)漏洞复现&实战http://cn-sec.com/archives/1348480.html

发表评论

匿名网友 填写信息