PTWEBDISCOVER: Schnellerer und flexiblerer Dirb-Ersatz, läuft in mehreren Threads und hat eine reichhaltigere Ausstattung

PTWEBDISCOVER

Jeder Penetrationstest für Webanwendungen sollte mit einer Umweltuntersuchung und einer gründlichen Kartierung der getesteten App beginnen. Während des Mappings sollten sie nicht nur alle Ressourcen anzeigen, auf die die App verlinkt oder die sie abruft, sondern auch Ressourcen, die sich in einem öffentlich zugänglichen Teil der Site befinden, auf die jedoch kein Link verweist. Solche Dateien sind beispielsweise Webadministration oder Backups.

Wahrscheinlich ist jeder von ihnen in seiner Praxis schon auf dirb– oder dirbuster-Tools gestoßen. Der Glücklichere von ihnen ist dann auf das dirsearch-Tool gestoßen. All diese Tools haben eines gemeinsam. Es dient der Abbildung von Webanwendungen und der Offenlegung der Ressourcen dieser Apps, die in einem öffentlich zugänglichen Teil der Website gespeichert sind, jedoch nicht zu Hyperlinks führen. In der Praxis werden diese Tools daher beispielsweise für die Suche nach Konfigurationsdateien, Log-Dateien, eingebundenen Dateien oder Backup-Dateien verwendet.

PenterepTools - ptwebdiscoverPenterepTools – ptwebdiscover

Wir möchten ihnen unser ptwebdiscover-Tool vorstellen, das wie die anderen aufgeführten Tools zum Auffinden von Webanwendungsressourcen verwendet wird. Im Gegensatz zu anderen bietet ptwebdiscover jedoch eine Reihe von Funktionen, die 0 bei anderen Tools vergeblich suchen würden. Werfen wir also einen genaueren Blick auf die einzelnen Funktionen, die dieses Tool bietet.

Suche nach Ressourcen mit einem Wörterbuch

Eine der grundlegenden Funktionen von ptwebdiscover ist die Suche nach Ressourcen mithilfe von Wörterbüchern. Mit dem Schalter -w, --wordlist können sie das gewünschte Wörterbuch auswählen.

ptwebdiscover -u https://www.penterepmail.loc -w /usr/share/wordlists/????

Sie können einzelne Begriffe aus dem Wörterbuch mit dem Schalter -ch, --charset weiter ändern, mit dem sie die Änderung von Wörterbuchausdrücken in lowercase, uppercase, capitalize, oder hybrid auswählen können. Sie können mehrere Varianten gleichzeitig verwenden.

ptwebdiscover -u https://www.penterepmail.loc -w /usr/share/wordlists/???? -ch lowercase uppercase capitalize

Die hybridoption nimmt eindeutige Werte aus dem Wörterbuch (z. B. readme.txt) und testet die folgenden Falloptionen: readme.txt, Readme.txt, README.txt, und README.TXT.

Wenn sie wissen, mit welchen Zeichen die gesuchte Quelle beginnt, können sie mit dem Schalter -bw, --begin-with das Wörterbuch so filtern, dass es nur Ausdrücke enthält, die mit einer bestimmten Zeichenfolge beginnen.

ptwebdiscover -u https://www.penterepmail.loc -w /usr/share/wordlists/???? -bw ad

Mit den Schaltern -lm, --length-min und -lx, --length-max ist es möglich, aus dem Dictionary nur die Ausdrücke weiter zu filtern, deren Länge dem angegebenen Eintrag entspricht.

Ressourcensuche mit Brute-Force

Wenn sie mit Brute-Force nach Ressourcen suchen möchten, lassen sie den Schalter -w einfach weg.

ptwebdiscover -u https://www.penterepmail.loc

Sie können den zu verwendenden Zeichensatz mit dem Schalter -ch, --charset auswählen. Sie können aus vordefinierten lowercase, uppercase und numbers wählen. Sie können auch ihren eigenen Zeichensatz definieren [abCD15_~].

ptwebdiscover -u https://www.penterepmail.loc -ch lowercase uppercase [15_]

Sie können die Länge der zu erstellenden Zeichenfolge mit den Schaltern -lm, --length-min und -lx, --length-max steuern.

ptwebdiscover -u https://www.penterepmail.loc -lm 2 -lx 5

Mit Dateierweiterungen arbeiten

Egal, ob sie mit einem Wörterbuch oder mit Brute-Force suchen, sie werden auf jeden Fall feststellen, dass der getesteten Zeichenfolge Suffixe hinzugefügt werden. ptwebdiscover verfügt zu diesem Zweck über zwei Schalter. Die erste davon, -e, --extensions es ihnen, die Erweiterungen, die sie verwenden möchten, manuell zu definieren. Wenn sie nach Begriffen nicht nur mit den von Ihnen eingegebenen Erweiterungen suchen möchten, sondern auch ohne diese. Geben sie zwischen Erweiterungen eine leere Zeichenfolge ein. Mit dem zweiten Schalter -ef, --extension-file können sie dann eine Liste der Erweiterungen aus der Datei abrufen.

ptwebdiscover -u https://www.penterepmail.loc -e ““ php php.bak bak log
ptwebdiscover -u https://www.penterepmail.loc -ef extensions.txt

Filterung von Befunden

Serverantworten können entweder nach dem zurückgegebenen Statuscode oder nach dem zurückgegebenen Inhalt gefiltert werden. Standardmäßig betrachtet das Tool alle Serverantworten, die einen anderen Statuscode als 404 zurückgeben, als gefundene Quellen.Wenn sie andere zurückgegebene Statuscodes ignorieren möchten, können sie den Schalter -isc, --ignore-status-codes verwenden.

ptwebdiscover -u https://www.penterepmail.loc -sc 302 400 401 404

Umgekehrt, wenn das Tool nur Ressourcen berücksichtigen soll, die bestimmte Statuscodes als vorhandene Ressourcen zurückgeben, können sie diese mit dem Schalter -sc, --status-codes definieren

ptwebdiscover -u https://www.penterepmail.loc -sc 200

Die Schalter -sy, --string-in-response und -sn, --string-not-in-response oder -sn, --string-not-in-response und -shn können verwendet werden, um Ergebnisse basierend zu filtern on content. --string-not-in-response-header, um den Inhalt von Antwortheadern zu durchsuchen.

ptwebdiscover -u https://www.penterepmail.loc -sy content
ptwebdiscover -u https://www.penterepmail.loc -sn “page not found“

Mit den Schaltern -tm, --time-min und -tx, --time-max ist es auch möglich, die Ergebnisse nur für diejenigen zu beeinflussen, die innerhalb des angegebenen Zeitbereichs eine Antwort vom Server zurückgeben.

ptwebdiscover -u https://www.penterepmail.loc -tx 200

Die Schalter -clm, --content-length-min und -clx, --content-length-max können ebenfalls nützlich sein, um die minimale und maximale Größe des zurückgegebenen Inhalts festzulegen.

ptwebdiscover -u https://www.penterepmail.loc -clx 50000

Rekursives Eintauchen

Findet das Tool ein Verzeichnis, kann es auch rekursiv darin eintauchen und die gesamte Suche nach Inhalten in diesem Verzeichnis wiederholen. Beim rekursiven Eintauchen werden alle gefundenen Verzeichnisse gecrawlt. Das rekursive Durchsuchen von Verzeichnissen kann mit der Option -r, – recurse aktiviert werden.

ptwebdiscover -u https://www.penterepmail.loc -lx 4 -r

Suchen sie nach Ressourcen, indem sie Inhalte analysieren

Ressourcen können nicht nur durch Wörterbuch oder Brute-Force erkannt werden, sondern auch durch das Parsen von Inhalten, indem Links und externe Ressourcen in HTML-Dokumenten, sitemap.xml, robots.txt usw. code]-P, –parse[/code]-Schalter.

ptwebdiscover -u https://www.penterepmail.loc -P

Wenn sie alle URLs anzeigen möchten, die sich nur in der Quelle befinden, die im Parameter -u angegeben ist, ohne Brute-Force und Wörterbuch, können sie dies mit dem Schalter -Po, --parse-only tun.

ptwebdiscover -u https://www.penterepmail.loc -Po

Mit dem Tool können sie auch ein Web-Crawling (Web-Spiding) der gesamten Site durchführen. Alles, was sie tun müssen, ist rekursiv mit Inhaltsanalyse zu parsen.

ptwebdiscover -u https://www.penterepmail.loc -Po -r

Inhalts-Download

Wenn sie keinen Inhalt parsen, sendet ptwebdiscover HTTP-Anforderungen mit der HEAD-Methode. Bei Bedarf können sie diese Methode mit dem Schalter -m, -- method ändern.

ptwebdiscover -u https://www.penterepmail.loc -m GET

Sie können auch den vom Server zurückgegebenen Inhalt speichern, um eine lokale Kopie aller erkannten Ressourcen zu erstellen. Sie können dazu den Schalter -S, --save verwenden und das Zielverzeichnis angeben, in dem sie den heruntergeladenen Inhalt speichern möchten.

Sie würden beispielsweise eine gesamte Site crawlen, einschließlich der lokalen Speicherung von Inhalten, wie folgt:

ptwebdiscover -u https://www.penterepmail.loc -Po -r -S ~/localcopy

Intelligente Backup-Suche

Ptwebdiscover bietet auch eine intelligente Backup-Suchfunktion. Es funktioniert, indem es automatisch eine Datei mit demselben Namen für jede gefundene Quelle findet, jedoch mit dem Suffix, das den Sicherungsdateien gemeinsam ist. Wenn das Tool beispielsweise die Datei index.php erkennt, versucht es, die Dateien zu finden:

index.bak, index.old, index.zal, index.php_, index.php~, index.zip, index.7z, index.rar, index.tar, index.tar.gz, index.tgz, index.php.bak, index.php.old, index.php.zal, index.php.zip, index.7z, index.php.rar, index.php.tar, index.php.tar.gz and index.php.tgz

Als nächstes versucht ptwebdiscover, Site- und Datenbank-Backups zu erkennen. Wenn die getestete Domain www.penterepmail.loc wäre, würde das Tool versuchen, Dateien im Stammverzeichnis der Site zu erkennen:

www.penterepmail.loc.bak, www.penterepmail.loc.old, www.penterepmail.loc.zal, www.penterepmail.loc.zip, www.penterepmail.loc.rar, www.penterepmail.loc.tar, www.penterepmail.loc.7z, www.penterepmail.loc.tgz, www.penterepmail.loc.tar.gz, www.penterepmail.loc.sql, www.penterepmail.loc.db, penterepmail.loc.bak, penterepmail.loc.old, penterepmail.loc.zal, penterepmail.loc.zip, penterepmail.loc.7z, penterepmail.loc.rar, penterepmail.loc.tar, penterepmail.loc.tgz, penterepmail.loc.tar.gz, penterepmail.loc.sql, penterepmail.loc.db, penterepmail.bak, penterepmail.old, penterepmail.zal, penterepmail.zip, penterepmail.7z, penterepmail.rar, penterepmail.tar, penterepmail.tgz, penterepmail.tar.gz, penterepmail.sql, penterepmail.db

Das gleiche wiederholt sich mit dem Ersetzen des Punktes im Namen nach den Zeichen „_“ und „-“ und auch mit dem Löschen dieses Trennzeichens, zum Beispiel

wwwpenterepmailloc.bak, www_penterepmail_loc.bak, www-penterepmail-loc.bak, etc.

Um die intelligente Backup-Suche zu aktivieren, verwenden sie den Schalter -b, --backups.

ptwebdiscover -u https://www.penterepmail.loc -Po -r -b

Wenn sie nur nach Backups der gesamten Site suchen möchten, ohne weitere Inhalte per Brute-Force oder Wörterbuch zu suchen, verwenden sie den Schalter -bo, --backups-only.

ptwebdiscover -u https://www.penterepmail.loc -bo

PenterepTools -  ptwebdiscover searching for backupsPenterepTools – ptwebdiscover searching for backups

Präfixe, Suffixe, Subdomain-Suche und Parameter-Fuzzing

In dem Moment, in dem sie wissen, dass die gesuchte Quelle mit einem bestimmten Präfix beginnt oder mit einem bestimmten Suffix endet, werden die Schalter -up, --prefix und -us, --sufix definitiv nützlich sein. Das folgende Beispiel sucht nach Dateien: access_aaa_2021.log, access_aab_2021.log, access_aac_2021.log, …

ptwebdiscover -u https://www.penterepmail.loc -lm 3 -up access_ -us _2021 -e log

Manchmal kann es auch sinnvoll sein, Ressourcen an anderer Stelle als nur in einem bestimmten Pfad zu suchen. In diesem Fall können sie an der Stelle, an der sie die Testzeichenfolge einfügen möchten, ein Sternchen (*) verwenden. Sie können diese Methode beispielsweise verwenden, wenn eine App auf Ressourcen zugreift, indem sie sie von einem Ort lädt, der sich nicht in einem öffentlich zugänglichen Teil der Site befindet, oder wenn sie nach einer bestimmten Datei in einem unbekannten Verzeichnis suchen oder nach schöne URLs.

ptwebdiscover -u https://www.penterepmail.loc/show?file=*
ptwebdiscover -u https://www.penterepmail.loc/*/show

Sie werden das Sternchen auch nützlich finden, wenn sie ptistilde verwenden, um kurze 8.3-Dateinamen auf IIS-Servern zu finden, wie z. B. admin~1.php. Wenn sie Brute-Force verwenden möchten, um den fehlenden Teil des Dateinamens zu erkennen, können sie den folgenden Befehl verwenden.

ptwebdiscover -u https://www.penterepmail.loc/admini*.php

Wenn sie beispielsweise ein Wörterbuch für dieselbe Aufgabe verwenden möchten, können sie den folgenden Befehl ausprobieren, der nur Werte aus dem Wörterbuch auswählt, die mit der Zeichenfolge „admins“ beginnen.

ptwebdiscover -u https://www.penterepmail.loc/ -w dictionary.txt -bw admini -e php

Erwähnenswert ist auf jeden Fall die Möglichkeit, nach bestehenden Subdomains zu suchen. Platzieren sie in diesem Fall einfach das Sternchen an der richtigen Stelle in der URL.

ptwebdiscover -u https://*.penterepmail.loc

PenterepTools -  ptwebdiscover checking domain prefixes and suffixesPenterepTools – ptwebdiscover checking domain prefixes and suffixes

In diesem Fall wird jedoch die Subdomain auf dem DNS-Server übersetzt und sie erfahren nur von Subdomains, die einen gültigen DNS-Record haben. Beim Testen ist es jedoch häufig erforderlich, das Vorkommen derjenigen Subdomains zu überprüfen, die sich auf dem getesteten Server befinden, aber keinen gültigen DNS-Eintrag haben. Dies trifft man zum Beispiel oft bei Entwicklungsversionen der App an, die sich auf den Subdomains dev, devel, development, test befinden, die nach außen zu existieren scheinen, auf die Entwickler aber durch Einfügen des entsprechenden Eintrags zugreifen können in die hosts-Datei.

Wenn sie möchten, dass ptwebdiscover auch diese Subdomains erkennt, müssen sie den Schalter -tg, --target hinzufügen, um zu definieren, an welches Ziel ihre Anfragen geleitet werden. In diesem Fall wird die im Parameter -u angegebene Domäne, die anstelle der Subdomäne ein Sternchen enthält, nur als HTTP-Anforderungsinhalt des Host-Headers verwendet.

ptwebdiscover -u https://*.penterepmail.loc -tg http://www.penterepmail.loc

Da der Server den Inhalt einer Standardwebseite für nicht vorhandene Unterdomänen zurückgeben kann, müssen sie möglicherweise auch den Schalter -sn, --string-not-in-response hinzufügen, der eine Zeichenfolge angibt, die nicht in der Antwort des Servers enthalten sein darf.

ptwebdiscover -u https://*.penterepmail.loc -tg http://www.penterepmail.loc -sn Welcome

Formatieren sie die Ausgabe und speichern sie die Ergebnisse in einer Datei

Sie können die Ausgabe von ptwebdiscoveran ihre Bedürfnisse anpassen. Wenn sie eine Baumansicht bevorzugen, die wie die Ausgabe des Baumwerkzeugs aussieht, können sie den Schalter -tr, --tree verwenden.

ptwebdiscover -u https://www.penterepmail.loc -Po -r -tr

PenterepTools -  ptwebdiscover discovered file hierarchyPenterepTools – ptwebdiscover discovered file hierarchy

Sie können auch entscheiden, ob sie nur die Pfade zu den erkannten Ressourcen oder die vollständige URL einschließlich der Domäne auflisten möchten. Standardmäßig enthält die Ausgabe die gesamte URL. Verwenden sie den Schalter -wd, --without-domain, um die Domäne zu überschreiben.

ptwebdiscover -u https://www.penterepmail.loc -Po -r -wd

Manchmal verwenden sie auch die Option, um die zurückgegebenen HTTP-Antwortheader anzuzeigen. In ptwebdiscover können sie sie mit dem Schalter -wh, --with-headers aktivieren.

ptwebdiscover -u https://www.penterepmail.loc -Po -wh

Sie können sich dann die komplette Ausgabe nicht nur auf dem Monitor ansehen, sondern mit dem Schalter -o, --output in einer Datei zur Weiterverarbeitung durch andere Tools speichern.

ptwebdiscover -u https://www.penterepmail.loc -Po -o output.txt

Verwendung von Fasern

Der große Vorteil des ptwebdiscover-Tools gegenüber dem dirb-Tool ist jedoch vor allem die Möglichkeit, in mehreren Threads zu laufen, wodurch dieses Tool um ein Vielfaches schneller sein kann. Standardmäßig ist es so eingestellt, dass es in zwanzig Threads ausgeführt wird, aber sie können es mit dem Schalter -t, --threads ändern.

ptwebdiscover -u https://www.penterepmail.loc -t 100

Wenn sie umgekehrt die Anzahl der an den zu testenden Server gesendeten Anforderungen begrenzen müssen, um eine Serverüberlastung zu vermeiden, können sie den Schalter -d, --delay verwenden, um die Verzögerung (in Millisekunden) zwischen den Anforderungen festzulegen. In diesem Fall wird der Test nur in einem Thread ausgeführt.

ptwebdiscover -u https://www.penterepmail.loc -d 100

Verwendung spezieller Wörterbücher zur Technologieidentifikation

Neben den oben genannten Funktionen ist die Möglichkeit zu erwähnen, spezielle Wörterbücher zu verwenden, die Daten im Format location::technology enthalten. Diese Wörterbücher können diese Technologien anhand von Ressourcen identifizieren, die für bestimmte Technologien typisch sind. Zum Beispiel identifiziert das Aufdecken des wp-include-Verzeichnisses ziemlich genau das WordPress-Content-Management-System. Die Verwendung dieser Wörterbücher ist ansonsten identisch mit der Verwendung allgemeiner Wörterbücher.

Kommentar

Wenn sie versuchen, das Tool für Domänen zu verwenden, die nur in der Hosts-Datei enthalten sind, fügen sie den Schalter -wdc, --without-dns-cache hinzu. Das Tool verwendet Caching von DNS-Abfragen, was leider nicht mit dem Inhalt der Hosts-Datei arbeiten kann. Ohne diesen Schalter würde die Domäne als nicht verfügbar erscheinen.

Vor dem eigentlichen Test überprüft das Tool die Verfügbarkeit der Zieldomäne. Wenn sie diesen Test deaktivieren möchten, können sie dies mit dem Schalter -wac, --without-availability-check tun.

Vollständige Liste der implementierten Schalter

-u--url URL for test (usage of a star character as anchor)
-ch--charsets Specify charset (example: lowercase,uppercase,numbers,[custom_chars])
-lm--length-min Minimal length of brute-force tested string (default 1)
-lx--length-max Maximal length of brute-force tested string (default 6 bf / 99 wl
-w--wordlist[filename]Use default or specified wordlist
-bw--begin-with Use only words from wordlist that begin with the specified string
-ci--case-insensitive Case insensitive items from wordlist
-e--extensions Add extensions behind a tested string („“ for empty extension)
-ef--extension-file[filename]Add extensions from default or specified file behind a tested string.
-r--recurse Recursive browsing of found directories
-b--backups Find backups for db, all app and every discovered content
-bo--backups-only Find backup of complete website only
-P--parse Parse HTML response for URLs discovery
-Po--parse-only Brute force method is disabled, crawling started on specified url
-D--directory Add a slash at the ends of the strings too
-sy--string-in-response Print findings only if string in response (GET method is used)
-sn--string-not-in-response Print findings only if string not in response (GET method is used)
-sc--status-codes Accept only response with status codes
-isc--ignore-status-codes Ignore response with status codes (default 404)
-tm--time-min Minimal time for response
-tx--time-max Maximal time for response
-clm--content-length-min Minimal length of response
-clx--content-length-max Maximal length of response
-m--method Use said HTTP method. Default: HEAD
-d--delay Delay before each request in seconds
-p--proxy Use proxy (e.g. http://127.0.0.1:8080)
-T--timeout Manually set timeout (default 10000)
-H--headers Use custom headers
-ua--user-agent Use custom value of User-Agent header
-c--cookie Use cookie (-c „PHPSESSID=abc; any=123“)
-a--auth Use HTTP authentication
-t--threads Number of threads (default 20)
-j--json Output in JSON format
-wd--without-domain Output of discovered sources without domain
-wh--with-headers Output of discovered sources with headers
-ip--include-parameters Include GET parameters and anchors to output
-tr--tree Output as tree
-o--output Output to file
-S--save Save content localy
-E--errors Show all errors
-s--silent Do not show statistics in realtime
-v--version Show script version
-h--help Show this help message

Nedávné příspěvky