Bug Bounty Hunting mit Kali-Linux oder Parrot Security OS - Alicia Noors - E-Book

Bug Bounty Hunting mit Kali-Linux oder Parrot Security OS E-Book

Alicia Noors

0,0

Beschreibung

Viele Interessierte kribbelt es in den Fingern sich mit dem Thema Hacking zu beschäftigen und dieses Buch zeigt Ihnen wie Sie Ihr Wissen völlig legal in der Praxis testen können und damit sogar gutes Geld verdienen. Der übliche Weg so etwas zu tun wäre es sich als Pentester engagieren zu lassen nur werden hierzu oftmals teure Zertifizierungen oder zumindest nachweisbare Erfahrung in dem Bereich vorausgesetzt! Genau da setzen Bug Bounty Programme ein. In der Regel ist hier jeder willkommen von Anfänger bis hin zum erfahrenen Pentestern. Außerdem werden weder bestimmte Zertifizierungen, Ausbildungen noch sonstiges vorausgesetzt. Genau das bietet Anfängern die Möglichkeit gelerntes Wissen in realen Beispielen anzuwenden, sich die "ersten Sporen" zu verdienen und so den Ziel Pentester zu werden einen großen Schritt näher zu kommen. Folgen Sie uns auf den ersten Schritten zum Pentester und lernen Sie wie Sie auf die Verwundbarkeit mit einem bestimmten Angriff testen und mit welchen Tools Angriffe dann durchgeführt werden können. Dabei legen wir auch Wert darauf Ihnen zu zeigen wie man gute Reporte schreibt und welche Strategie uns bei realen Tests die besten Dienste geleistet hat. Diese Buch macht Sie fit um in diesem Job richtig durchzustarten. Dabei verraten wir Ihnen gängige Fehlannahmen von Entwicklern und weniger offensichtliche Angriffe mit denen Sie in der Praxis punkten.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 115

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0



VORWORT

Viele Interessierte kribbelt es in den Fingern sich mit dem sagenumwobenen Thema Hacking zu beschäftigen und dieses Buch zeigt Ihnen wie Sie Ihr Wissen völlig legal in der Praxis testen können und damit Geld verdienen.

Nachdem man die ersten praktischen Übungen mit speziellen Testapplikationen und virtuellen Maschinen absolviert hat würde man sich auch gerne an realen Szenarien versuchen - allerdings kann man nicht einfach irgendwelche Webseiten oder Server angreifen ohne sich dabei strafbar zu machen.

Der einzige legale Weg so etwas zu tun wäre es sich als Penetrationstester oder kurz Pentester engagieren zu lassen nur werden hierzu oftmals teure Zertifizierungen oder zumindest nachweisware Erfahrung in dem Bereich vorausgesetzt!

Genau da setzen Bug Bounty Programme ein. In der Regel ist hier jeder willkommen von Anfänger bis hin zum erfahrenen Pentestern. Außerdem werden weder bestimmte Zertifizierungen, Ausbildungen noch sonstiges vorausgesetzt. Genau das bietet Anfängern die Möglichkeit gelerntes Wissen in realen Beispielen anzuwenden, sich die "ersten Sporen" zu verdienen.

Folgen Sie uns auf den ersten Schritten zum Pentester und lernen Sie wie Sie auf die Verwundbarkeit mit einem bestimmten Angriff testen und mit welchen Tools Angriffe dann durchgeführt werden können. Dabei legen wir auch Wert darauf Ihnen zu zeigen wie man gute Reporte schreibt und welche Strategie uns bei realen Tests die besten Dienste geleistet hat.

INHALTSVERZEICHNIS

Was ist Bug Bounty?

Die Laborumgebung einrichten

Kali Linux vs. Parrot Security OS

Linux-Installation

Empfohlenes Vorwissen

Informationsbeschaffung vor dem Angriff

Die wichtigsten Grunddaten ermitteln

Die Sicherheit ausloten

Portscan - was läuft am Server

Unsichere Login-Sessions

Bruteforce möglich?

Login per HTTP erlaubt bzw. Fehlen von HSTS?.

Passwortrichtlinie nicht strickt genug?

Session-Cookies übertragbar?

Account enumeration möglich?

Priviliege Escalation durch Client-Side Override möglich?

Cookies auch noch nach logout gültig?

Ein Anfang, aber nicht alles

Report for Project: Mutillidae II

Unsichere direkte Objektreferenzierung

Directory Traversal

Sicherheitsrelevante Fehlkonfigurationen

Versteckte Verzeichnisse und Dateien aufdecken

Verzeichnisaufleistung

Method Tampering

Command Injection

Javascript-Validierung als Schutz vor Angriffen

Ungenügend geprüfte Dateiuploads

SQL-Injection

Automatisches Ausnutzen dieser Schwäche.

Cross Site Scripting (XSS)

Reflected XSS

Stored XSS

DOM XSS

Report for Project: Mutillidae II

Javascript Injection

HTML Injection

Cross site request forgery (CSRF)

Report for Project: Mutillidae II

Webservices

Client-side control Override

Nachwort

Buchempfehlungen

WAS IST BUG BOUNTY?

Im Grunde sind Bug Bounty Programme so etwas wie öffentliche Ausschreibungen um Fehler in Webseiten, IT-Systemen, Netzwerkgeräten oder Programmen zu finden. Dabei ist der überwiegende Großteil die Fehlersuche in Webseiten oder webbasierten Managementinterfaces.

Diese öffentliche Ausschreibung erlaubt es zwar jedem daran teilzunehmen und Fehler zu finden ungeachtet von Befähigungsnachweisen und dergleichen aber damit geht auch eine starke Konkurrenz einher. Wenn mehrere Personen auf der gleichen Webseite nach Fehlern suchen bleibt es nicht aus, dass der gleiche Fehler mehrfach gefunden wird - hierbei gilt allerdings, dass nur der erste der die Meldung abgibt auch einen Anspruch auf die Vergütung hat und alle anderen haben damit quasi Ihre Zeit verschwendet.

Bevor man mit der Fehlersuche loslegen kann benötigt man einen Account auf den gängigen Bug Bounty Plattformen:

» https://www.hackerone.com/de

» https://www.bugcrowd.com/

» https://cobalt.io/platform

» https://www.yeswehack.com/en/index.html

» https://www.bugbountyhq.com/

» https://www.intigriti.com/public/researchers

Auf diesen veröffentlichen Firmen dann Ihre Angebote. Hierbei gilt es vor allem genau zu lesen denn wer gegen die vereinbarten Spielregeln verstößt oder Fehler auf Unterseiten oder Subdomains meldet die vom Test ausgenommenen sind, bekommt dafür natürlich keine Vergütung.

Große Firmen wie Facebook, Google und einige weitere haben eigene Bug Bounty Programme bei denen meist jeder teilnehmen kann. Allerdings muss man sich hierzu direkt an diese Firmen wenden oder sich auf entsprechenden Unterseiten des Portals separat anmelden.

Dabei ist auch das richtige Melden der gefundenen Fehler sehr wichtig. Es gilt kurz und knapp den Fehler zu beschreiben und darzulegen wie dieser ausgenutzt werden kann. Verzichten Sie hierbei auf Seitenlange Abhandlungen wie Sie den Fehler aufgedeckt haben, theoretische Abhandlungen was das für die Firma oder Webseite bedeuten könnte oder auf mehrfache Beispiele wie man den Fehler ausnutzen könnte. Beim Auftraggeber werden die Eingaben aller Teilnehmer des Programms gegengeprüft und wenn ein Entwickler dann dutzende Fehlerberichte am Schreibtisch hat wäre es nur menschlich einen 1- oder 2-seitigen Bericht zur gleichen URL einem 36-seitigem "Roman" vorzureihen und diesen als ersten abzuarbeiten.

Wenn wir schon bei der menschlichen Komponente sind dann denken Sie auch daran, Berichte neutral zu formulieren und nicht abfällig "dumme" Fehler der Entwickler hervorzuheben denn es ist oftmals davon auszugehen das eben die Entwickler die Sie in einem solchen Report vorführen auch diejenigen sind die Ihre Eingaben gegenprüfen. Beißen Sie also nicht die Hand die Sie füttert!

Zu knappe Berichte die mehr Fragen offen lassen als Sie beantworten sind allerdings genau so wenig zielführend. Entwickler sind auch keine Hellseher - denken Sie auch daran wenn diejenigen den "offensichtlichen" Weg etwas auszunutzen gesehen hätten, dann wäre der Fehler garnicht erst entstanden. Setzen Sie also nichts vorraus und erklären Sie ein paar Sätzen auch für Sie offensichtliches ohne dabei weit abzuschweifen.

Im Idealfall beschreiben Sie wo genau der Fehler ist (zB genaue URL), um welche Art von Fehler oder möglichen Angriff es sich handelt und wie dieser ausgenutzt werden kann. Fügen Sie danach noch ein wenig Code an der den erfolgreichen Angriff demonstiert und der Bereicht ist fertig.

Da wir dies für geanuso wichtig wie die fachlichen Fähigkeiten halten, werden wir an passender Stelle ein paar Beispiel-Berichte veröffentlichen damit Sie so etwas schon einmal gesehen haben. Viele Seiten bieten eigens Formulare an die dafür sorgen, dass jeder User formell sehr ähnliche Berichte einreicht und immer alle wichtigen Informationen zur Verfügung stehen. Für alle anderen Fälle nutzen wir ein kleines Python-Script, dass mit einem Formular und ein paar vorgefertigten Textblöcken einen professionellen Bug-Report im PDF-Format erstellt.

Außerdem sollte man auch in diesem Bereich anfangs lieber kleine Brötchen backen - wer sich als blutiger Anfänger auf Branchengrößen wie Facebook stürzt wird in der Regel sehr schnell frustriert werden dann diese Seiten wurden schon von so vielen Personen getestet und es wurden schon sehr viele Fehler gefunden und behoben. Am besten Sie stürzen sich anfangs auf kleinere und neuere Projekte die eher weniger Anklang finden oder bei denen noch nicht sehr viele Reports abgegeben wurden. So haben Sie weniger Konkurrenz und eine deutlich bessere Chance Fehler zu finden und die ersten Erfolge und Umsätze zu verbuchen!

DIE LABORUMGEBUNG EINRICHTEN

Da wir uns in diesem Buch vorrangig mit Sicherheitstests für Webseiten beschäftigen werden benötigen wir zum Üben Webseiten die einerseits einige Fehler enthalten und andererseits garantiert nicht verändert werden damit Sie alle Beispiele genau so nachvollziehen können wenn Sie mit diesem Buch arbeiten. Daher haben wir uns für eine virtuelle Maschine entschieden die genau diese Anforderungen erfüllt und gleich eine ganze Sammlung an verwundbaren Webprojekten mitbringt:

https://sourceforge.net/projects/owaspbwa/

Wir haben zum Zeitpunkt der Bucherstellung die Version 1.2, geneuer gesagt die Datei OWASP_Broken_Web_Apps_VM_1.2.ova heruntergeladen. Diese OVA-Datei können wir direkt in Virtualbox importieren.

Zuerst müssen Sie Virtualbox von https://www.virtualbox.org/wiki/Downloads herunterladen und installieren. Sobald dies geschehen ist sollte ein Doppelklick auf die OVA-Datei Virtualbox starten und folgendes Fenster anzeigen:

Sollte dies nicht der Fall sein, können Sie die OVA-Datei manuell mit dem Menüpunt Datei -> Appliance Importieren öffnen.

Sie können alles genau so übernehmen und dann auf Importieren klicken. Dieser Vorgang kann ein paar Minuten dauern uns sobald er abgeschlossen ist, müssen wir dann nochmals die Einstellungen der soeben erstellten virtuellen Maschine öffnen.

Markieren Sie dazu im Hauptfenster von Virtualbox die Maschine auf der linken Seite und klicken Sie dann oben auf das Ändern-Symbol. Wählen Sie hier den Reiter Netzwerk aus und danach sollten Sie folgenden Dialog sehen:

Bei Adapter 1 wählen Sie Netzwerkbrücke bei dem Prunkt Angeschlossen an aus! Unter Name wählen Sie bitte diejenige Netzwerkkarte aus die mit Ihrem Heimnetzwerk verbunden ist.

Danach können Sie den virtuellen PC booten und von jedem der Rechner in Ihrem Netzwerk darauf zugreifen.

Kali Linux vs. Parrot Security OS

Kali ist eine sogenannte Pentesting-Destribution - also ein System in dem schon die beliebtesten Hacking-Tools und diverse Werkzeuge für die Softwareentwicklung enthalten sind. Es steht Ihnen natürlich frei, die benötigten Tools auf dem Betriebssystem Ihrer Wahl zu installieren.

Kali-Linux wird mit Gnome3, KDE, XFCE4, LXDE, Enlightment und Mate als Windowmanager angeboten. Für diejenigen die Linux nicht kennen - der Windowmanager ist vereinfacht gesagt die grafische Oberfläche des Systems, und bei Linux hat man die freie Wahl welchen man verwendet. Verwechseln Sie das jetzt aber nicht mit Themes wie man es aus anderen Betriebssystemen kennt! Die einzelnen Windowmanager unterscheiden sich nicht nur im Aussehen, sondern auch im Ressourcenverbrauch, dem Bedienkonzept und den Standard-Tools (Einstellungsverwaltung, Dateimanager, etc.) die mitinstalliert werden.

Ich für meinen Teil bevorzuge XFCE. Der Look ist klar und schlicht, der Windowmanager ist ressourcenschonend und auf schnelles Arbeiten optimiert. Außerdem ist es mit einigen XFCE-Plugins recht einfach die Systemressourcen im Blick zu behalten.

Außerdem wird Kali für verschiedenste Einplatinencomputer angeboten. Damit ist es sehr einfach möglich ein kleines Bot-Netzwerk zu erstellen um bestimmte Angriffe gleichzeitig von verschiedensten IP-Adressen durchzuführen.

Parrot Security OS ist ebenfalls eine Pentesting-Distribution und enthält bis auf wenige Ausnahmen den gleichen Satz an Tools wie Kali. Darüber hinaus gibt es auch eine Home / Workstation Version von Parrot die keine Hacking- oder Forensiktools enthält, dafür aber auf Sicherheit optimiert wurde. Das soll auch einfache Linux-User ansprechen und genau darum werden Updates deutlich besser getestet und es wird entsprechend auch auf Stabilität geachtet. Unter dem Punkt Other Builds finden sich auch hier Images für einige Einplatinencomputer oder fertige virtuelle Maschinen.

Unser Hauptproblem mit Kali war, dass jedes Update zu einem Glücksspiel wurde - oftmals wurde einiges am System durch Updates beschädigt was dann viel an händischer Nacharbeit zur Folge hatte - auch wenn wir durchaus in der Lage sind diese Probleme handzuhaben ist es doch auf Dauer nervtötend wenn man permanent am System nacharbeiten muss!

Da Parrot und Kali nicht nur weitestenteils in der Toolsammlung sondern auch in den vorinstallierten Worklisten und ähnlichem übereinstimmen ist es der ideale Ersatz und unsere klare Empfehlung! Egal für welches System Sie sich entscheiden - Sie können alle hier gezeigten Befehle ident auf jedem der beiden Systeme verwenden!

Linux-Installation

Kali kann unter https://www.kali.org/downloads/ kostenlos heruntergeladen werden. Diejenigen die einen virtuellen PC verwenden möchten können fertige VMware- oder VirtualBox-Images downloaden. Wenn Sie sich für Parrot Security OS entscheiden dann finden Sie die Image-Downloads unter: https://www.parrotsec.org/download.php.

Nachdem wir die ISO-Datei heruntergeladen haben, können wir Sie auf eine DVD brennen oder auf einen USB-Stick entpacken...

Windows-User können dazu den Win32 Image writer verwenden, den Sie unter https://launchpad.net/win32-image-writer downloaden können. Das Programm sollte soweit selbsterklärend sein...

Linux- und OSX-User können dazu den Konsolen-Befehl dd verwenden:

dd if=/pfad/zum/image.iso of=/dev/sdb bs=512k

Dieser Befehl muss als root oder mit sudo ausgeführt werden!

Seien Sie aber vorsichtig mit dd... Dieser Befehl verzeit keine Fehler und kann Ihnen eine ganze Festplatte überschreiben!

Mit if= wird die Eingabe-Datei (input file) bestimmt und mit of= die Ausgabe-Datei. In meinem Beispiel habe ich /dev/sdb angegeben, was die Geräte-Datei der zweiten SCSI- bzw. SATA-Platte ist. Unter Linux werden so auch die USB-Laufwerke angesprochen. Wichtig ist, nicht beispielsweise /dev/sdb1 zu verwenden, denn das wäre die erste Partition dieser Platte, und wir wollen die gesamte Platte inklusive der Partitionstabelle überschreiben!

Unter OSX wäre das /dev/disk1. Hier wäre /dev/disk1s0 die erste Partition und somit falsch! Am einfachsten identifizieren Sie die richtige Geräte-Datei indem Sie df -h im Terminal eingeben:

Wenn nun die Ausgabe beispielsweise

/dev/disk0s2 148Gi 86Gi 62Gi 58% ...

/dev/disk1s1 7.4Gi 5.2Gi 2.2Gi 71% ...

liefert ist klar, dass das Laufwerk disk1 mit der 7,4 GB-Partition der USB-Stick und die Platte disk0 der 148GB-Partition die SSD ihres Rechners ist. In dem Fall wäre also /dev/disk1 zu verwenden.

Das bs=512k definiert eine Blockgröße von 512KB und kann so übernommen werden. dd meldet keinen Fortschritt und ist auch nicht besonders schnell - kochen Sie sich einen Kaffee, gönnen Sie sich einen Snack oder schnappen Sie kurz frische Luft - mit 10 bis 20 Minuten können Sie schon rechnen.

Zuvor muss das Laufwerk aber gegebenenfalls ausgehängt werden - dies geschieht mit:

umount /dev/sdb1 (Linux)

diskutil umount /dev/disk1s1 (OSX)

Jeweils mit sudo oder als root ausgeführt! Sobald das Erstellen des bootfähigen USB-Sticks fertig ist, meldet dd dies mit einer derartigen Ausgabe:

5345+1 records in

5345+1 records out

2802616968 bytes transferred in 668.849633 secs (4190204 bytes/sec)

Danach kann ein Rechner von dem Installations-Stick gestartet werden. Hierbei haben Sie die Möglichkeit Kali vom USB-Stick zu starten und ohne Installation zu testen. Diese Option ist auch sehr hilfreich, wenn eines Ihrer Systeme nicht mehr bootet - so können Sie mit Kali oder Parrot zumindest noch eine Datensicherung vornehmen und dann nach der Ursache forschen.

Kali und Parrot sind wie alle Linux-Distros sehr genügsam und laufen auf meinem Atom-Netbook mit 2 GB Ram absolut flüssig - im Leerlauf werden gerade einmal 1 - 3% der CPU-Leistung benötigt. Daher kann ich jedem Interessierten empfehlen ein altes Notebook oder Netbook mit einer der beiden Distributionen aufzusetzen!

Wichtig ist hierbei, dass der Pentesting-Rechner über eine ausreichend große Festplatte oder SSD verfügt! Wenn Sie mit Wortlisten oder Rainbow-Tables arbeiten haben Sie schnell mit Dateigrößen von 100GB und mehr zu tun... 500GB oder mehr Plattenplatz wäre meine Empfehlung.

Für eine ausführliche Installationsanleitung verweisen wir an dieser Stelle auf die offizielle Dokumentation von Kali:

https://docs.kali.org/installation/kali-linux-hard-disk-install

Für Parrot findet sich eine entsprechende Anleitung unter:

https://www.parrotsec.org/docs/getting-started/install-parrot/

Im Grunde ist die Installation von Linux sehr einfach und absolut kein Hexenwerk. Allerdings gebe ich Ihnen an dieser Stelle den guten Rat, dass Sie bei der Installation die Partitionierung der Platte wie folgt vornehmen:

Wählen sie Manuell als Partitionsmethode aus und legen folgendes Partitionsschema für einen Rechner mit Legacy BIOS-Modus an:

Einhängepunkt

Größe

Benutzen als

/

40-60GB

ext4

/root

40-100GB

ext4

---

4-8GB

swap

/home

restlicher Speicher

ext4

Für einen Rechner mit UEFI empfehle ich folgende Aufteilung der Platte:

Einhängepunkt

Größe

Benutzen als

/boot/efi

2-4GB

fat32

/

40-60GB

ext4

/root

40-100GB

ext4

---

4-8GB

swap

/home

restlicher Speicher

ext4

Bei einem Rechner mit UEFI muss man auch eine GUID-Partitionstabelle verwenden.