mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-22 11:03:24 +00:00
443 lines
33 KiB
Markdown
443 lines
33 KiB
Markdown
# 80,443 - Pentesting Web Methodology
|
|
|
|
<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 beworben sehen 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-Merch**](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 einreichen.
|
|
|
|
</details>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_).
|
|
|
|
{% embed url="https://www.stmcyber.com/careers" %}
|
|
|
|
## Grundlegende Informationen
|
|
|
|
Der Webdienst ist der **häufigste und umfangreichste Dienst** und es gibt viele **verschiedene Arten von Schwachstellen**.
|
|
|
|
**Standardport:** 80 (HTTP), 443 (HTTPS)
|
|
```bash
|
|
PORT STATE SERVICE
|
|
80/tcp open http
|
|
443/tcp open ssl/https
|
|
```
|
|
|
|
```bash
|
|
nc -v domain.com 80 # GET / HTTP/1.0
|
|
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|
```
|
|
### Web-API-Anleitung
|
|
|
|
{% content-ref url="web-api-pentesting.md" %}
|
|
[web-api-pentesting.md](web-api-pentesting.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Zusammenfassung der Methodik
|
|
|
|
> In dieser Methodik gehen wir davon aus, dass Sie eine Domain (oder Subdomain) angreifen und nur diese. Wenden Sie diese Methodik daher auf jede entdeckte Domain, Subdomain oder IP mit einem nicht identifizierten Webserver im Scope an.
|
|
|
|
* [ ] Beginnen Sie mit der **Identifizierung** der vom Webserver verwendeten **Technologien**. Suchen Sie nach **Tricks**, die Sie während des restlichen Tests im Auge behalten sollten, wenn Sie die Technologie erfolgreich identifizieren können.
|
|
* [ ] Gibt es **bekannte Schwachstellen** in der Version der Technologie?
|
|
* [ ] Verwendung einer **bekannten Technologie**? Gibt es **nützliche Tricks**, um mehr Informationen zu extrahieren?
|
|
* [ ] Gibt es einen **spezialisierten Scanner** (wie z. B. wpscan), der ausgeführt werden sollte?
|
|
* [ ] Starten Sie **Scanner für allgemeine Zwecke**. Man weiß nie, ob sie etwas finden oder interessante Informationen entdecken werden.
|
|
* [ ] Beginnen Sie mit den **initialen Überprüfungen**: **Robots**, **Sitemap**, **404**-Fehler und **SSL/TLS-Scan** (bei HTTPS).
|
|
* [ ] Beginnen Sie mit dem **Spidering** der Webseite: Es ist an der Zeit, alle möglichen **Dateien, Ordner** und **verwendeten Parameter** zu **finden**. Überprüfen Sie auch auf **besondere Funde**.
|
|
* [ ] _Beachten Sie, dass jedes Mal, wenn ein neues Verzeichnis beim Brute-Forcing oder Spidering 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 beim Brute-Forcing oder Spidering entdeckt wird, es gebrute-forcet werden sollte._
|
|
* [ ] **Überprüfung von Backups**: Testen Sie, ob Sie **Backups** von **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** identifiziert haben, die **Benutzereingaben** akzeptieren, überprüfen Sie alle Arten von **Schwachstellen**, die damit verbunden sind.
|
|
* [ ] [Befolgen Sie diese Checkliste](../../pentesting-web/web-vulnerabilities-methodology/)
|
|
|
|
## Serverversion (Anfällig?)
|
|
|
|
### Identifizieren
|
|
|
|
Überprüfen Sie, ob es **bekannte Schwachstellen** für die Server-**Version** gibt, die ausgeführt wird.\
|
|
Die **HTTP-Header und Cookies der Antwort** können sehr nützlich sein, um die verwendeten **Technologien** und/oder **Versionen** zu **identifizieren**. Ein **Nmap-Scan** kann die Serverversion identifizieren, aber auch die Tools [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)oder [**https://builtwith.com/**](https://builtwith.com)**:**
|
|
```bash
|
|
whatweb -a 1 <URL> #Stealthy
|
|
whatweb -a 3 <URL> #Aggresive
|
|
webtech -u <URL>
|
|
webanalyze -host https://google.com -crawl 2
|
|
```
|
|
Suche nach **Schwachstellen der Webanwendung** **Version**
|
|
|
|
### **Überprüfen Sie, ob ein WAF vorhanden ist**
|
|
|
|
* [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
|
|
* [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
|
|
* [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
|
|
|
|
### Web-Tech-Tricks
|
|
|
|
Einige **Tricks** zum **Auffinden von Schwachstellen** in verschiedenen bekannten **Technologien**, die verwendet werden:
|
|
|
|
* [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
|
|
* [**Apache**](apache.md)
|
|
* [**Artifactory**](artifactory-hacking-guide.md)
|
|
* [**Buckets**](buckets/)
|
|
* [**CGI**](cgi.md)
|
|
* [**Drupal**](drupal.md)
|
|
* [**Flask**](flask.md)
|
|
* [**Git**](git.md)
|
|
* [**Golang**](golang.md)
|
|
* [**GraphQL**](graphql.md)
|
|
* [**H2 - Java SQL-Datenbank**](h2-java-sql-database.md)
|
|
* [**IIS-Tricks**](iis-internet-information-services.md)
|
|
* [**JBOSS**](jboss.md)
|
|
* [**Jenkins**](broken-reference/)
|
|
* [**Jira**](jira.md)
|
|
* [**Joomla**](joomla.md)
|
|
* [**JSP**](jsp.md)
|
|
* [**Laravel**](laravel.md)
|
|
* [**Moodle**](moodle.md)
|
|
* [**Nginx**](nginx.md)
|
|
* [**PHP (php hat viele interessante Tricks, die ausgenutzt werden könnten)**](php-tricks-esp/)
|
|
* [**Python**](python.md)
|
|
* [**Spring Actuators**](spring-actuators.md)
|
|
* [**Symphony**](symphony.md)
|
|
* [**Tomcat**](tomcat.md)
|
|
* [**VMWare**](vmware-esx-vcenter....md)
|
|
* [**Web-API-Pentesting**](web-api-pentesting.md)
|
|
* [**WebDav**](put-method-webdav.md)
|
|
* [**Werkzeug**](werkzeug.md)
|
|
* [**Wordpress**](wordpress.md)
|
|
* [**Electron Desktop (XSS zu RCE)**](electron-desktop-apps/)
|
|
|
|
_Beachten Sie, dass die **gleiche Domain** verschiedene **Technologien** in verschiedenen **Ports**, **Ordnern** und **Subdomains** verwenden kann._\
|
|
Wenn die Webanwendung eine der **vorher aufgeführten bekannten Technologien/Plattformen** oder **eine andere** verwendet, vergessen Sie nicht, im **Internet nach neuen Tricks zu suchen** (und lassen Sie es mich wissen!).
|
|
|
|
### Quellcodeüberprüfung
|
|
|
|
Wenn der **Quellcode** der Anwendung auf **Github** verfügbar ist, neben der Durchführung eines **White-Box-Tests** der Anwendung gibt es **einige Informationen**, die für den aktuellen **Black-Box-Test** nützlich sein könnten:
|
|
|
|
* Gibt es eine **Änderungsprotokoll- oder Readme- oder Versionsdatei** oder irgendetwas mit **Versionsinformationen**, die über das Web zugänglich sind?
|
|
* Wie und wo werden die **Anmeldeinformationen** gespeichert? Gibt es eine (zugängliche?) **Datei** mit Anmeldeinformationen (Benutzernamen oder Passwörtern)?
|
|
* Liegen die **Passwörter** im **Klartext**, **verschlüsselt** oder welcher **Hash-Algorithmus** wird verwendet?
|
|
* Wird ein **Master-Key** zum Verschlüsseln von etwas verwendet? Welcher **Algorithmus** wird verwendet?
|
|
* Können Sie auf **eine dieser Dateien zugreifen**, indem Sie eine Schwachstelle ausnutzen?
|
|
* Gibt es interessante Informationen in den **Github**- (gelöste und ungelöste) **Issues**? Oder im **Commit-Verlauf** (vielleicht ein **Passwort, das in einem alten Commit eingeführt wurde**)?
|
|
|
|
{% content-ref url="code-review-tools.md" %}
|
|
[code-review-tools.md](code-review-tools.md)
|
|
{% endcontent-ref %}
|
|
|
|
### Automatische Scanner
|
|
|
|
#### Allgemeine automatische Scanner
|
|
```bash
|
|
nikto -h <URL>
|
|
whatweb -a 4 <URL>
|
|
wapiti -u <URL>
|
|
W3af
|
|
zaproxy #You can use an API
|
|
nuclei -ut && nuclei -target <URL>
|
|
|
|
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
|
|
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
|
|
```
|
|
#### CMS-Scanner
|
|
|
|
Wenn ein CMS verwendet wird, vergessen Sie nicht, **einen Scanner auszuführen**, vielleicht wird etwas Interessantes gefunden:
|
|
|
|
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish**\
|
|
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** Websites auf Sicherheitsprobleme überprüfen. (GUI)\
|
|
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
|
|
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **oder** [**(M)oodle**](moodle.md)\
|
|
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
|
```bash
|
|
cmsmap [-f W] -F -d <URL>
|
|
wpscan --force update -e --url <URL>
|
|
joomscan --ec -u <URL>
|
|
joomlavs.rb #https://github.com/rastating/joomlavs
|
|
```
|
|
> Zu diesem Zeitpunkt sollten Sie bereits einige Informationen über den vom Client verwendeten Webserver haben (sofern Daten vorhanden sind) und einige Tricks im Hinterkopf behalten, die während des Tests hilfreich sein könnten. Wenn Sie Glück haben, haben Sie möglicherweise sogar ein CMS gefunden und einen Scanner ausgeführt.
|
|
|
|
## Schritt-für-Schritt-Entdeckung von Webanwendungen
|
|
|
|
> Ab diesem Punkt werden wir beginnen, mit der Webanwendung zu interagieren.
|
|
|
|
### Erste Überprüfungen
|
|
|
|
**Standardseiten mit interessanten Informationen:**
|
|
|
|
* /robots.txt
|
|
* /sitemap.xml
|
|
* /crossdomain.xml
|
|
* /clientaccesspolicy.xml
|
|
* /.well-known/
|
|
* Überprüfen Sie auch Kommentare auf den Haupt- und Sekundärseiten.
|
|
|
|
**Erzwingen von Fehlern**
|
|
|
|
Webserver können **unerwartet reagieren**, wenn seltsame Daten an sie gesendet werden. Dies kann **Schwachstellen** öffnen oder **sensible Informationen preisgeben**.
|
|
|
|
* Zugriff auf **Fake-Seiten** wie /whatever\_fake.php (.aspx,.html,.etc)
|
|
* Fügen Sie "\[]", "]]" und "\[\[" in **Cookie-Werten** und **Parameter**-Werten hinzu, um Fehler zu erzeugen
|
|
* Generieren Sie einen Fehler, indem Sie die Eingabe als **`/~randomthing/%s`** am **Ende** der **URL** angeben
|
|
* Versuchen Sie **verschiedene HTTP-Verben** wie PATCH, DEBUG oder falsche wie FAKE
|
|
|
|
#### **Überprüfen Sie, ob Sie Dateien hochladen können (**[**PUT-Verb, WebDav**](put-method-webdav.md)**)**
|
|
|
|
Wenn Sie feststellen, dass **WebDav** **aktiviert** ist, aber Sie nicht genügend Berechtigungen zum **Hochladen von Dateien** im Stammverzeichnis haben, versuchen Sie Folgendes:
|
|
|
|
* **Brute-Force**-Zugangsdaten
|
|
* **Laden Sie Dateien** über WebDav in den **Rest der gefundenen Ordner** auf der Webseite hoch. Möglicherweise haben Sie Berechtigungen, Dateien in anderen Ordnern hochzuladen.
|
|
|
|
### **SSL/TLS-Schwachstellen**
|
|
|
|
* Wenn die Anwendung den **HTTPS-Zwang nicht erzwingt**, ist sie anfällig für Man-in-the-Middle-Angriffe.
|
|
* Wenn die Anwendung **sensible Daten (Passwörter) über HTTP sendet**, handelt es sich um eine hohe Schwachstelle.
|
|
|
|
Verwenden Sie [**testssl.sh**](https://github.com/drwetter/testssl.sh), um nach **Schwachstellen** zu suchen (In Bug-Bounty-Programmen werden wahrscheinlich diese Art von Schwachstellen nicht akzeptiert) und verwenden Sie [**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
|
|
|
|
# You can also use other tools, by testssl.sh at this momment is the best one (I think)
|
|
sslscan <host:port>
|
|
sslyze --regular <ip:port>
|
|
```
|
|
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 **Spider** im Web. Das Ziel des Spiders ist es, **so viele Pfade wie möglich** von 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 externe Quellen (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
|
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HTML-Spider, mit LinkFinder für JS-Dateien und Archive.org als externe Quelle.
|
|
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML-Spider, zeigt auch "juicy files" an.
|
|
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktiver CLI-HTML-Spider. Sucht auch in Archive.org.
|
|
* [**meg**](https://github.com/tomnomnom/meg) (go): Dieses Tool ist kein Spider, kann aber nützlich sein. Sie können einfach eine Datei mit Hosts und eine Datei mit Pfaden angeben, und meg wird jeden Pfad auf jedem Host abrufen und die Antwort speichern.
|
|
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML-Spider mit JS-Rendering-Fähigkeiten. Es scheint jedoch nicht gewartet zu werden, die vorkompilierte Version ist alt und der aktuelle Code lässt sich nicht kompilieren.
|
|
* [**gau**](https://github.com/lc/gau) (go): HTML-Spider, der externe Anbieter verwendet (wayback, otx, commoncrawl).
|
|
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Dieses Skript findet URLs mit Parametern und listet sie auf.
|
|
* [**galer**](https://github.com/dwisiswant0/galer) (go): HTML-Spider mit JS-Rendering-Fähigkeiten.
|
|
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML-Spider, mit JS-Beautify-Fähigkeiten zur Suche nach neuen Pfaden in JS-Dateien. Es könnte auch sinnvoll sein, sich [JSScanner](https://github.com/dark-warlord14/JSScanner) anzusehen, das ein Wrapper von LinkFinder ist.
|
|
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Zum Extrahieren von Endpunkten sowohl aus dem HTML-Quellcode als auch aus eingebetteten JavaScript-Dateien. Nützlich für Bug-Hunter, Red Teamer, Infosec-Ninjas.
|
|
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Ein Python 2.7-Skript, das Tornado und JSBeautifier verwendet, um relative URLs aus JavaScript-Dateien zu parsen. Nützlich zum einfachen Entdecken von AJAX-Anfragen. Sieht nach nicht gewartet aus.
|
|
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Bei Angabe einer Datei (HTML) extrahiert es URLs daraus mithilfe einer cleveren regulären Ausdrucks, um die relativen URLs aus hässlichen (minify) Dateien zu finden und zu extrahieren.
|
|
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, mehrere Tools): Sammelt interessante Informationen aus JS-Dateien mithilfe mehrerer Tools.
|
|
* [**subjs**](https://github.com/lc/subjs) (go): Findet JS-Dateien.
|
|
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Lädt eine Seite in einem Headless-Browser und gibt alle geladenen URLs aus, um die Seite zu laden.
|
|
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Content-Discovery-Tool, das mehrere Optionen der vorherigen Tools kombiniert.
|
|
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Eine Burp-Erweiterung zum Auffinden von Pfaden und Parametern in JS-Dateien.
|
|
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ein Tool, das anhand der .js.map-URL den beautifizierten JS-Code liefert.
|
|
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Dies ist ein Tool zur Entdeckung von Endpunkten für ein bestimmtes Ziel.
|
|
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Entdeckt Links aus der Wayback-Maschine (lädt auch die Antworten aus der Wayback herunter und sucht nach weiteren Links).
|
|
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawlen (auch durch Ausfüllen von Formularen) und Finden sensibler Informationen mithilfe spezifischer Regexes.
|
|
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite ist ein fortschrittlicher Multi-Feature-GUI-Web-Sicherheits-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 die Parameter und Endpunkte aus der Anfrage zu extrahieren und benutzerdefinierte Wortlisten für Fuzzing und Enumeration zu erstellen.
|
|
|
|
### Brute-Force-Verzeichnisse und Dateien
|
|
|
|
Beginnen Sie mit dem **Brute-Forcing** vom Stammverzeichnis aus und stellen Sie sicher, dass Sie **alle** **gefundenen Verzeichnisse** mit **dieser Methode** und allen Verzeichnissen **brute-forcen**, die durch das **Spidering** entdeckt wurden (Sie können dies rekursiv durchführen und am Anfang der verwendeten Wortliste die Namen der gefundenen Verzeichnisse anhängen).\
|
|
Werkzeuge:
|
|
|
|
* **Dirb** / **Dirbuster** - In Kali enthalten, **alt** (und **langsam**) aber funktionsfähig. Erlaubt selbstsignierte Zertifikate und rekursive Suche. Im Vergleich zu anderen Optionen zu langsam.
|
|
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Erlaubt keine selbstsignierten Zertifikate, aber** erlaubt eine rekursive Suche.
|
|
* [**Gobuster**](https://github.com/OJ/gobuster) (go): Erlaubt selbstsignierte Zertifikate, hat jedoch **keine** rekursive Suche.
|
|
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Schnell, unterstützt rekursive Suche.**
|
|
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
|
|
* [**ffuf** ](https://github.com/ffuf/ffuf)- Schnell: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
|
* [**uro**](https://github.com/s0md3v/uro) (python): Dies ist kein Spider, sondern ein Tool, das bei Angabe der Liste der gefundenen URLs "duplizierte" URLs löscht.
|
|
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp-Erweiterung zum Erstellen einer Liste von Verzeichnissen aus dem Burp-Verlauf verschiedener Seiten.
|
|
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Entfernt URLs mit duplizierten Funktionen (basierend auf JS-Imports).
|
|
* [**Chamaleon**](https://github.com/iustin24/chameleon): Verwendet Wappalyzer, um verwendete Technologien zu erkennen und die zu verwendenden Wortlisten auszuwählen.
|
|
|
|
**Empfohlene Wörterbücher:**
|
|
|
|
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
|
|
* [**Dirsearch** enthaltenes Wörterbuch](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
|
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
|
|
* [Assetnote Wortlisten](https://wordlists.assetnote.io)
|
|
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
|
|
* raft-large-directories-lowercase.txt
|
|
* directory-list-2.3-medium.txt
|
|
* RobotsDisallowed/top10000.txt
|
|
* [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists)
|
|
* [https://github.com/google/fuzzing/tree/master/dictionaries](https://github.com/google/fuzzing/tree/master/dictionaries)
|
|
* [https://github.com/six2dez/OneListForAll](https://github.com/six2dez/OneListForAll)
|
|
* [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists)
|
|
* _/usr/share/wordlists/dirb/common.txt_
|
|
* _/usr/share/wordlists/dirb/big.txt_
|
|
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
|
|
|
_Hinweis: Jedes Mal, wenn ein neues Verzeichnis beim Brute-Forcing oder Spidering entdeckt wird, sollte es Brute-Forced werden._
|
|
|
|
### Was bei jeder gefundenen Datei zu überprüfen ist
|
|
|
|
* [**Broken Link Checker**](https://github.com/stevenvachon/broken-link-checker): Suchen Sie nach defekten Links in HTML-Dateien, die anfällig für Übernahmen sein könnten
|
|
* **Dateisicherungen**: Sobald Sie alle Dateien gefunden haben, suchen Sie nach Sicherungskopien aller ausführbaren Dateien ("_.php_", "_.aspx_"...). Häufige Varianten für die Benennung einer Sicherung sind: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp und file.old._ Sie können auch das Tool [**bfac**](https://github.com/mazen160/bfac) **oder** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** verwenden.**
|
|
* **Neue Parameter entdecken**: Sie können Tools wie [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **und** [**Param Miner**](https://github.com/PortSwigger/param-miner) **verwenden, um versteckte Parameter zu entdecken. Wenn möglich, könnten Sie versuchen, versteckte Parameter in jeder ausführbaren Webdatei zu suchen.**
|
|
* _Arjun alle Standard-Wordlisten:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
|
* _Param-miner "params":_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
|
* _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 Funktionalitäten** finden.
|
|
* Wenn Sie ein **CTF** spielen, ist ein "üblicher" Trick, **Informationen** in den Kommentaren am **rechten** Rand der **Seite** zu **verstecken** (unter Verwendung von **Hunderten** von **Leerzeichen**, damit 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 **Ende** der Webseite zu **verstecken**.
|
|
* **API-Schlüssel**: Wenn Sie **einen API-Schlüssel finden**, gibt es eine Anleitung, die anzeigt, 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**: Beim Spidering prüfen, ob eine **Subdomain** oder ein **Link** mit einem **S3-Bucket** verbunden ist. In diesem Fall [**überprüfen Sie die Berechtigungen** des Buckets](buckets/).
|
|
|
|
### Besondere Entdeckungen
|
|
|
|
**Beim** Durchführen des **Spiderings** und **Brute-Forcings** könnten Sie **interessante** **Dinge** finden, die Sie **beachten** müssen.
|
|
|
|
**Interessante Dateien**
|
|
|
|
* Suchen Sie nach **Links** zu anderen Dateien innerhalb der **CSS**-Dateien.
|
|
* [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, DB-Passwörter und andere Informationen gefunden werden.
|
|
* Wenn Sie **API-Endpunkte** finden, sollten Sie [sie auch testen](web-api-pentesting.md). Diese sind keine Dateien, werden aber wahrscheinlich so "aussehen".
|
|
* **JS-Dateien**: Im Abschnitt zum 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 hinweisen könnte, dass eine potenzielle Schwachstelle im Code eingeführt wurde. Sie könnten beispielsweise [**JSMon**](https://github.com/robre/jsmon)** verwenden.**
|
|
* Überprüfen Sie die entdeckten JS-Dateien auch mit [**RetireJS**](https://github.com/retirejs/retire.js/) oder [**JSHole**](https://github.com/callforpapers-source/jshole), um festzustellen, ob sie verwundbar 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 Deobfuscation** (Javascript mit Zeichen: "\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
|
* [**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 verwendeten regulären Ausdrücke **verstehen**, dies wird hilfreich sein: [https://regex101.com/](https://regex101.com)
|
|
* Sie könnten auch **die Dateien überwachen, in denen Formulare erkannt wurden**, da eine Änderung am Parameter oder das Erscheinen eines neuen Formulars auf eine potenziell neue anfällige Funktionalität hinweisen könnte.
|
|
|
|
**403 Forbidden/Basic Authentication/401 Unauthorized (Umgehung)**
|
|
|
|
{% content-ref url="403-and-401-bypasses.md" %}
|
|
[403-and-401-bypasses.md](403-and-401-bypasses.md)
|
|
{% endcontent-ref %}
|
|
|
|
**502 Proxy Error**
|
|
|
|
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`** senden (mit dem Host-Header und anderen gängigen Headern), wird der **Proxy** versuchen, _**google.com**_ **zu öffnen, und Sie haben einen** SSRF gefunden.
|
|
|
|
**NTLM-Authentifizierung - Informationspreisgabe**
|
|
|
|
Wenn der laufende Server nach Authentifizierung fragt **Windows** ist oder Sie eine Anmeldung finden, die nach Ihren **Anmeldeinformationen** fragt (und nach dem **Domänennamen** fragt), können Sie eine **Informationspreisgabe** provozieren.\
|
|
**Senden** Sie den **Header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` und aufgrund der Funktionsweise der **NTLM-Authentifizierung** wird der Server mit internen Informationen (IIS-Version, Windows-Version...) im Header "WWW-Authenticate" antworten.\
|
|
Sie können dies mit dem **nmap-Plugin** "_http-ntlm-info.nse_" automatisieren.
|
|
|
|
**HTTP-Weiterleitung (CTF)**
|
|
|
|
Es ist möglich, **Inhalte** in einer **Weiterleitung** zu platzieren. Dieser Inhalt **wird dem Benutzer nicht angezeigt** (da der Browser die Weiterleitung ausführt), aber etwas könnte darin **versteckt** sein.
|
|
### Überprüfung von Web-Schwachstellen
|
|
|
|
Nachdem eine umfassende Aufzählung der Webanwendung durchgeführt wurde, ist es an der Zeit, nach vielen möglichen Schwachstellen zu suchen. Sie finden die Checkliste hier:
|
|
|
|
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology/" %}
|
|
[web-vulnerabilities-methodology](../../pentesting-web/web-vulnerabilities-methodology/)
|
|
{% endcontent-ref %}
|
|
|
|
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)
|
|
* [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
|
|
|
### Überwachen von Seiten auf Änderungen
|
|
|
|
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 einschleusen.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Wenn Sie an einer **Hackerkarriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_).
|
|
|
|
{% embed url="https://www.stmcyber.com/careers" %}
|
|
|
|
### HackTricks Automatische Befehle
|
|
```
|
|
Protocol_Name: Web #Protocol Abbreviation if there is one.
|
|
Port_Number: 80,443 #Comma separated if there is more than one.
|
|
Protocol_Description: Web #Protocol Abbreviation Spelled out
|
|
|
|
Entry_1:
|
|
Name: Notes
|
|
Description: Notes for Web
|
|
Note: |
|
|
https://book.hacktricks.xyz/pentesting/pentesting-web
|
|
|
|
Entry_2:
|
|
Name: Quick Web Scan
|
|
Description: Nikto and GoBuster
|
|
Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
|
|
|
|
Entry_3:
|
|
Name: Nikto
|
|
Description: Basic Site Info via Nikto
|
|
Command: nikto -host {Web_Proto}://{IP}:{Web_Port}
|
|
|
|
Entry_4:
|
|
Name: WhatWeb
|
|
Description: General purpose auto scanner
|
|
Command: whatweb -a 4 {IP}
|
|
|
|
Entry_5:
|
|
Name: Directory Brute Force Non-Recursive
|
|
Description: Non-Recursive Directory Brute Force
|
|
Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
|
|
|
|
Entry_6:
|
|
Name: Directory Brute Force Recursive
|
|
Description: Recursive Directory Brute Force
|
|
Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10
|
|
|
|
Entry_7:
|
|
Name: Directory Brute Force CGI
|
|
Description: Common Gateway Interface Brute Force
|
|
Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200
|
|
|
|
Entry_8:
|
|
Name: Nmap Web Vuln Scan
|
|
Description: Tailored Nmap Scan for web Vulnerabilities
|
|
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}
|
|
|
|
Entry_9:
|
|
Name: Drupal
|
|
Description: Drupal Enumeration Notes
|
|
Note: |
|
|
git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration
|
|
|
|
Entry_10:
|
|
Name: WordPress
|
|
Description: WordPress Enumeration with WPScan
|
|
Command: |
|
|
?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php
|
|
wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e
|
|
|
|
Entry_11:
|
|
Name: WordPress Hydra Brute Force
|
|
Description: Need User (admin is default)
|
|
Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'
|
|
|
|
Entry_12:
|
|
Name: Ffuf Vhost
|
|
Description: Simple Scan with Ffuf for discovering additional vhosts
|
|
Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters}
|
|
```
|
|
<details>
|
|
|
|
<summary><strong>Erlernen 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 beworben sehen 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-Merch**](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 einreichen.
|
|
|
|
</details>
|