80,443 - Pentesting Web Methodology
Wenn Sie an einer Hackerkarriere interessiert sind und das Unhackbare hacken möchten - wir stellen ein! (fließendes Polnisch in Wort und Schrift erforderlich).
Grundlegende Informationen
Der Webdienst ist der häufigste und umfangreichste Dienst und es gibt viele verschiedene Arten von Schwachstellen.
Standardport: 80 (HTTP), 443 (HTTPS)
Web-API-Anleitung
pageWeb API PentestingZusammenfassung 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.
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 die Version zu identifizieren. Ein Nmap-Scan kann die Serverversion identifizieren, aber auch die Tools whatweb, webtech oder https://builtwith.com/:
Suche nach Schwachstellen der Webanwendung Version.
Überprüfen Sie, ob ein WAF vorhanden ist
Web-Tech-Tricks
Einige Tricks zum Auffinden von Schwachstellen in verschiedenen bekannten Technologien, die verwendet werden:
Beachten Sie, dass die gleiche Domain in verschiedenen Ports, Ordnern und Subdomains verschiedene Technologien verwenden kann. Wenn die Webanwendung eine der oben 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) Problemen? Oder im Commit-Verlauf (vielleicht ein Passwort, das in einem alten Commit eingeführt wurde)?
Automatische Scanner
Allzweck-Automatisierungsscanner
CMS-Scanner
Wenn ein CMS verwendet wird, vergessen Sie nicht, einen Scanner auszuführen, vielleicht wird etwas Interessantes gefunden:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin Websites auf Sicherheitsprobleme überprüfen. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal oder (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
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önnen. 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 angebenVersuchen Sie verschiedene HTTP-Verben wie PATCH, DEBUG oder falsche wie FAKE
Überprüfen Sie, ob Sie Dateien hochladen können (PUT-Verb, WebDav)
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 Zwang zur Verwendung von HTTPS an keiner Stelle erzwingt, ist sie anfällig für MitM.
Wenn die Anwendung sensible Daten (Passwörter) über HTTP sendet. Dann handelt es sich um eine hohe Schwachstelle.
Verwenden Sie testssl.sh, um nach Schwachstellen zu suchen (In Bug-Bounty-Programmen werden wahrscheinlich diese Art von Schwachstellen nicht akzeptiert) und verwenden Sie a2sv, um die Schwachstellen erneut zu überprüfen:
Information zu SSL/TLS-Schwachstellen:
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 (go): HTML-Spider, LinkFinder in JS-Dateien und externe Quellen (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HTML-Spider, mit LinkFinder für JS-Dateien und Archive.org als externe Quelle.
dirhunt (python): HTML-Spider, zeigt auch "juicy files" an.
evine (go): Interaktiver CLI-HTML-Spider. Sucht auch in Archive.org.
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 (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 (go): HTML-Spider, der externe Anbieter verwendet (wayback, otx, commoncrawl).
ParamSpider: Dieses Skript findet URLs mit Parametern und listet sie auf.
galer (go): HTML-Spider mit JS-Rendering-Fähigkeiten.
LinkFinder (python): HTML-Spider mit JS-Beautify-Fähigkeiten, der in der Lage ist, neue Pfade in JS-Dateien zu suchen. Es könnte auch sinnvoll sein, sich JSScanner anzusehen, das ein Wrapper von LinkFinder ist.
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 (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 (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 (bash, mehrere Tools): Sammelt interessante Informationen aus JS-Dateien mithilfe mehrerer Tools.
subjs (go): Findet JS-Dateien.
page-fetch (go): Lädt eine Seite in einem Headless-Browser und gibt alle geladenen URLs aus, um die Seite zu laden.
Feroxbuster (rust): Content-Discovery-Tool, das mehrere Optionen der vorherigen Tools kombiniert.
Javascript Parsing: Eine Burp-Erweiterung zum Auffinden von Pfaden und Parametern in JS-Dateien.
Sourcemapper: Ein Tool, das anhand der .js.map-URL den beautifizierten JS-Code liefert.
xnLinkFinder: Dies ist ein Tool, das Endpunkte für ein bestimmtes Ziel entdeckt.
waymore: Entdeckt Links aus der Wayback-Maschine (lädt auch die Antworten in der Wayback herunter und sucht nach weiteren Links).
HTTPLoot (go): Crawlen (auch durch Ausfüllen von Formularen) und Finden sensibler Informationen mithilfe spezifischer Regexes.
SpiderSuite: Spider Suite ist ein fortschrittlicher Multi-Feature-GUI-Web-Sicherheits-Crawler/Spider, der für Cybersicherheitsprofis entwickelt wurde.
jsluice (go): Es ist ein Go-Paket und Befehlszeilentool zum Extrahieren von URLs, Pfaden, Geheimnissen und anderen interessanten Daten aus JavaScript-Quellcode.
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.
katana (go): Tolles Tool dafür.
Verzeichnisse und Dateien per Brute Force durchsuchen
Beginnen Sie mit dem Brute-Forcing vom Stammverzeichnis aus und stellen Sie sicher, dass Sie alle die gefundenen Verzeichnisse mit dieser Methode und alle von der Spidering entdeckten Verzeichnisse brute-forcen (Sie können dies rekursiv durchführen und am Anfang der verwendeten Wortliste die Namen der gefundenen Verzeichnisse anhängen). Tools:
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 (python): Erlaubt keine selbstsignierten Zertifikate, aber erlaubt rekursive Suche.
Gobuster (go): Erlaubt selbstsignierte Zertifikate, hat keine rekursive Suche.
Feroxbuster - Schnell, unterstützt rekursive Suche.
wfuzz
wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - Schnell:
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): Dies ist kein Spider, sondern ein Tool, das bei Angabe der Liste der gefundenen URLs "duplizierte" URLs löscht.
Scavenger: Burp-Erweiterung zum Erstellen einer Liste von Verzeichnissen aus dem Burp-Verlauf verschiedener Seiten
TrashCompactor: Entfernt URLs mit duplizierten Funktionen (basierend auf JS-Imports)
Chamaleon: Verwendet Wappalyzer, um verwendete Technologien zu erkennen und die zu verwendenden Wortlisten auszuwählen.
Empfohlene Wörterbücher:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/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: 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 oder backup-gen** verwenden.**
Neue Parameter entdecken: Sie können Tools wie Arjun, parameth, x8 und 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
Param-miner "params": https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote "parameters_top_1m": https://wordlists.assetnote.io/
nullenc0de "params.txt": 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 "üblicher" Trick, Informationen in 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, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
Google API-Schlüssel: Wenn Sie einen API-Schlüssel finden, der wie AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik aussieht, können Sie das Projekt gmapapiscanner 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.
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 .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. Diese sind zwar keine Dateien, werden aber wahrscheinlich so "aussehen".
JS-Dateien: Im Abschnitt über das 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** verwenden.**
Javascript Deobfuscator und Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/
JsFuck Deobfuscation (Javascript mit Zeichen: "[]!+" https://ooze.ninja/javascript/poisonjs/)
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/
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)
page403 & 401 Bypasses502 Proxy Error
Wenn eine Seite mit diesem Code antwortet, handelt es sich wahrscheinlich um einen schlecht konfigurierten Proxy. Wenn Sie eine HTTP-Anfrage wie senden: GET https://google.com HTTP/1.1
(mit dem Host-Header und anderen gängigen Headern), wird der Proxy versuchen, google.com zu erreichen, 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:
pageWeb Vulnerabilities MethodologyWeitere Informationen zu Web-Schwachstellen finden Sie unter:
Überwachen von Seiten auf Änderungen
Sie können Tools wie https://github.com/dgtlmoon/changedetection.io verwenden, um Seiten auf Änderungen zu überwachen, die möglicherweise Schwachstellen einschleusen.
Wenn Sie an einer Hackerkarriere interessiert sind und das Unhackbare hacken möchten - wir stellen ein! (fließendes Polnisch in Wort und Schrift erforderlich).
HackTricks Automatische Befehle
Last updated