靶機簡介
DC系列的靶機是一個專門構建的易受攻擊的實驗室,總共有九個!目的是獲得滲透測試領域的經驗。
它的設計初學者是一個挑戰,但是它的難易程度取決於您的技能和知識以及學習能力。
要成功完成此挑戰,您需要具備Linux技能,熟悉Linux命令列以及具有基本滲透測試工具的經驗,例如可以在Kali Linux或Parrot Security OS上找到的工具。
有多種獲得根的方法,但是,我包括了一些標誌,這些標誌包含了初學者的線索。
總共有五個Flag,但是最終目標是在root的主目錄中找到並讀取該標誌。您甚至不需要成為root使用者即可執行此操作,但是,您將需要root特權。
根據您的技能水平,您可能可以跳過查詢大多數這些標誌並直接獲得root資格。
學習到的知識
Drupal 7
CMS的RCE
(Metasploit)
Drupal 7
的 Mysql
寫入 SQL
新增後臺管理員賬號
find
命令 SUID
許可權提升
資訊蒐集
拿到靶機後先對它埠進行掃描:
nmap -A -p- -T4 192.168.1.142
掃描出來結果發現它開放了 22
(ssh)、80
(http)、111
(nfs共享)。
其中 http
的 web
使用的 CMS
是 Drupal 7
。我們先從 web
下手吧:
http://192.168.1.142
在 web
頁面上沒有啥東西,嘗試了一下弱口令無果,還是先對它進行掃描目錄檔案吧:
dirb http://192.168.1.142
掃描出來後發現有 robots.txt
檔案,開啟後是這樣的:
我在翻了一些檔案沒有得到可利用的資訊,只是知道它的版本好像是 7.x
版本。隨後我搜尋了一下有關於這個 CMS 的漏洞,看看能不能撿個漏:
searchsploit Drupal
從上圖可知,它漏洞還是蠻多的,剛好有一個 RCE
可以用 Metasploit
來進行利用!隨後我開啟 MSF 搜尋了一下它的利用模組,我使用的是這個模組(前面幾個看了不能用):
exploit/unix/webapp/drupal_drupalgeddon2
之後設定 rhosts
開始攻擊 exploit
得到一枚 shell
:
看了看只是一個普通的網站許可權,系統是 Linux
的 Debian
。
我先是用 MSF
的提權輔助模組來嘗試看看能不能運氣爆棚的雞蛋裡挑骨頭找到一個提權模組:
run post/multi/recon/local_exploit_suggester
額,沒有找到可以用來提權的模組,那麼就算了~我還是先進它 shell
裡面看看吧,只有打入敵人內部才能取敵將首級!進入到 shell
後先用 python
來得到一枚 sh
吧:
python -c 'import pty;pty.spawn("/bin/sh")
Flag1
我所在的目錄是網站的絕對路徑 /var/www
,下面有一個 flag1.txt
檔案,cat
檢視檔案後拿到第一個 flag
,裡面有作者給我們的提示:
Every good CMS needs a config file - and so do you.
翻譯過來大概就是讓我們找 CMS
的配置檔案,這也是我們獲取下一個flag
的線索之一!
Flag2
得到線索後,我瘋狂翻網站的目錄找到了它的配置檔案:
/var/www/sites/default/settings.php
檢視檔案後我們得到了Flag2
,又得到了一個新線索:
<?php
/**
*
* flag2
* Brute force and dictionary attacks aren't the
* only ways to gain access (and you WILL need access).
* What can you do with these credentials?
*
*/
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);
翻譯過來大概的意思是告訴我們暴力用字典破解不是一個有效的方式,既然得到了配置檔案,你能用這個配置檔案來做什麼?
Flag3
很明顯了,這段提示下面就是一個資料庫的配置資訊,作者可能是要讓我們進入到 Mysql
裡面!
資料庫名:'drupaldb',
使用者名稱:'dbuser',
密碼:'R0ck3t',
成功登陸到它的 Mysql 裡面,我找到了一些賬號和密碼:
但是這玩意密碼有雜湊加密了的,我又連續查詢了好多表才發現了 Flag3
的一絲線索:
它這裡的 title
裡有 flag3
,但是裡面沒有提示資訊!既然是在 title
上有 flag3
的線索,那麼有可能是在網站的裡面,也就是網站的後臺裡!
接著我重新寫入了一段 SQL
語句,把管理員的密碼給重置了:
具體可以看這篇文章:https://www.isfirst.net/drupal/drupal-reset-password
update users set pass='$S$DFLfuzfO9WDKAJcUHnNmhS9NwOD6MRj3pk00qEl4O7iNBD2X4n3v' where name='admin';
# 這段 sql 語句的意思是把 admin 的密碼重置為 drupal ,因為它的 pass 加密是 password-hash.sh ,所以我們直接給他替換掉!
寫入成功後,我們來到網站的登陸頁面:http://192.168.1.142/user
admin:drupal
登陸進去後我們得到了 Flag3!
這個時候我們又得到了一個新線索:
Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
大概的意思是讓我們透過 -exec
命令來得到密碼啥的!
Flag4
既然提示說要我們透過命令來得到密碼,那麼我首先是檢視了 passwd
檔案,發現了有關 flag4
的線索:
有一個 flag4
的使用者,隨後我來到了 flag4
的目錄發現了 flag4.txt
檔案!(saul檔案是我之前玩靶機留下的,大家當作沒有就好了)
開啟之後呢得到了最後一個線索:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?
翻譯過來的意思大概是讓我們以相同的方式來得到 root
目錄下的 flag
。
Flag5
得到線索後我習慣性的 sudo -l
檢視有沒有什麼命令可以讓我提權的,但是它沒有 sudo
這個命令:
額,有點打腦殼!借用朝陽冬泳怪鴿
的話:我們遇到什麼困難也不要怕,微笑著面對它!消除恐懼的最好辦法就是面對恐懼!堅持,才是勝利。加油!奧利給!
別慌,抽根菸再好好想想!我又接著檢視下,看它有沒有 root
許可權的檔案,但是沒有:
find / -perm -4000 2>/dev/null
接著我又檢視了有沒有 root
許可權的 SUID
命令發現了這些:
find / -type f -perm -u=s 2>/dev/null
其中有一個命令我之前提權的時候用過,就是 find
命令!剛好之前在拿到 Flag3
的時候它提示了 -exec
命令!這是一個引數,搭配 find
查詢命令使用可以呼叫命令來去執行!
我首先是想在 flag4
目錄建立個檔案,但是失敗了!但是沒關係!
由於當前目錄下有一個 flag4.txt
檔案我們就直接使用 find
檢視當前許可權,請忽略上面那條命令!(當時的思路是建立一個檔案,然後使用 find 命令來查詢這個檔案然後執行命令的)
find flag4.txt -exec "whoami" \;
可以看到,我們的許可權是 root
了,我們直接提權把:
find flag4.txt -exec "/bin/sh" \;
# 這段命令的意思就是先使用 find 命令查詢 flag4.txt 檔案,然後使用它的引數 -exec 來執行命令 /bin/sh ,這樣我們就能獲取到 root 許可權了!
最後也是在 root
目錄下拿到了最後的 Flag
檔案!