In diesem Beitrag haben wir die OWASP Top 10 anhand des Materials in TryHackMe OWASP Top 10 Raum. Unten finden Sie Antworten auf die Fragen zum Raum sowie eine Video-Playlist mit Komplettlösungen für ausführliche Erklärungen.

Wir haben auch die Lösungen für TryHackMe OWASP Top 10 – 2021 Zimmer.

OSCP-Studiennotizen

Der komplette praktische Kurs zum Penetrationstest von Webanwendungen

Laut OWASP sind die 10 größten Schwachstellen bei Webanwendungen

Injektionsschwachstellen

Injektionsfehler sind in heutigen Anwendungen weit verbreitet. Diese Fehler entstehen, weil benutzergesteuerte Eingaben von der Anwendung als tatsächliche Befehle oder Parameter interpretiert werden. Injektionsangriffe hängen davon ab, welche Technologien verwendet werden und wie genau die Eingaben von diesen Technologien interpretiert werden. Einige gängige Beispiele sind:
SQL-Injection: Dies tritt auf, wenn benutzergesteuerte Eingaben an SQL-Abfragen übergeben werden. Dadurch kann ein Angreifer SQL-Abfragen übergeben, um das Ergebnis solcher Abfragen zu manipulieren.
Command Injection: Dies geschieht, wenn Benutzereingaben an Systembefehle weitergegeben werden. Dadurch kann ein Angreifer beliebige Systembefehle auf Anwendungsservern ausführen.

Wenn es einem Angreifer gelingt, Eingaben zu übermitteln, die richtig interpretiert werden, könnte er Folgendes tun:
Zugriff auf, Änderung und Löschung von Informationen in einer Datenbank, wenn diese Eingabe in Datenbankabfragen übergeben wird. Dies würde bedeuten, dass ein Angreifer vertrauliche Informationen wie persönliche Daten und Anmeldeinformationen stehlen kann.
Führen Sie beliebige Systembefehle auf einem Server aus, die es einem Angreifer ermöglichen, auf die Systeme der Benutzer zuzugreifen. Auf diese Weise können sie vertrauliche Daten stehlen und weitere Angriffe auf die Infrastruktur durchführen, die mit dem Server verbunden ist, auf dem der Befehl ausgeführt wird.

Die wichtigste Abwehrmaßnahme gegen Injection-Angriffe besteht darin, sicherzustellen, dass benutzergesteuerte Eingaben nicht als Abfragen oder Befehle interpretiert werden. Dafür gibt es verschiedene Möglichkeiten:
Verwenden einer Zulassungsliste: Wenn eine Eingabe an den Server gesendet wird, wird diese Eingabe mit einer Liste sicherer Eingaben oder Zeichen verglichen. Wenn die Eingabe als sicher markiert ist, wird sie verarbeitet. Andernfalls wird sie abgelehnt und die Anwendung gibt einen Fehler aus.
Eingabe entfernen: Wenn die Eingabe gefährliche Zeichen enthält, werden diese Zeichen vor der Verarbeitung entfernt.

Als gefährliche Zeichen oder Eingaben gelten alle Eingaben, die die Verarbeitung der zugrunde liegenden Daten verändern können. Anstatt manuell Zulassungslisten zu erstellen oder einfach nur Eingaben zu entfernen, gibt es verschiedene Bibliotheken, die diese Aktionen für Sie durchführen.

OS-Befehlsinjektion

Command Injection tritt auf, wenn serverseitiger Code (wie PHP) in einer Webanwendung einen Systemaufruf auf dem Hostcomputer ausführt. Es handelt sich um eine Web-Sicherheitslücke, die es einem Angreifer ermöglicht, diesen Systemaufruf auszunutzen, um Betriebssystembefehle auf dem Server auszuführen. Manchmal endet dies nicht immer in etwas Bösartigem, wie einem Whoami oder dem bloßen Lesen von Dateien. Das ist nicht so schlimm. Aber das Problem bei der Command Injection ist, dass sie dem Angreifer viele Optionen eröffnet. Das Schlimmste, was er tun könnte, wäre, eine Reverse Shell zu starten, um der Benutzer zu werden, unter dem der Webserver läuft. Ein einfaches ;nc -e /bin/bash ist alles, was nötig ist, und er besitzt Ihren Server; einige Varianten von netcat unterstützen die Option -e nicht. Sie können alternativ eine Liste dieser Reverse Shells verwenden.

Sobald der Angreifer auf dem Webserver Fuß gefasst hat, kann er mit der üblichen Aufzählung Ihrer Systeme beginnen und nach Möglichkeiten suchen, um den Angriff zu umgehen. Nachdem wir nun wissen, was Command Injection ist, werden wir uns die verschiedenen Typen ansehen und wie man sie testet.

Aufgabe 5 Antworten

Welche seltsame Textdatei befindet sich im Stammverzeichnis der Website?
drpepper.txt
Wie viele Benutzer gibt es, die keine Root-/Dienst-/Daemon-Benutzer sind?

0
Unter welchem Benutzer wird diese App ausgeführt?

www-Daten
Wie ist die Shell des Benutzers eingestellt?

/usr/sbin/nologin
Welche Ubuntu-Version läuft?

18.04.4
Drucken Sie das MOTD aus. Welches Lieblingsgetränk ist abgebildet?

Dr Pepper

Defekte Authentifizierung

Authentifizierung und Sitzungsverwaltung sind Kernkomponenten moderner Webanwendungen. Durch Authentifizierung erhalten Benutzer Zugriff auf Webanwendungen, indem ihre Identität überprüft wird. Die gängigste Form der Authentifizierung ist die Verwendung eines Benutzernamen- und Kennwortmechanismus. Ein Benutzer gibt diese Anmeldeinformationen ein und der Server überprüft sie. Wenn sie korrekt sind, stellt der Server dem Browser des Benutzers ein Sitzungscookie zur Verfügung. Ein Sitzungscookie ist erforderlich, da Webserver zur Kommunikation HTTP(S) verwenden, das zustandslos ist. Durch das Anhängen von Sitzungscookies weiß der Server, wer welche Daten sendet. Der Server kann dann die Aktionen der Benutzer verfolgen.

Wenn ein Angreifer Schwachstellen in einem Authentifizierungsmechanismus findet, kann er erfolgreich auf die Konten anderer Benutzer zugreifen. Dadurch kann der Angreifer auf vertrauliche Daten zugreifen (je nach Zweck der Anwendung). Einige häufige Schwachstellen in Authentifizierungsmechanismen sind:

Brute-Force-Angriffe: Wenn eine Webanwendung Benutzernamen und Passwörter verwendet, kann ein Angreifer Brute-Force-Angriffe starten, die es ihm ermöglichen, den Benutzernamen und die Passwörter durch mehrere Authentifizierungsversuche zu erraten.
Verwendung schwacher Anmeldeinformationen: Webanwendungen sollten starke Kennwortrichtlinien festlegen. Wenn Anwendungen es Benutzern ermöglichen, Kennwörter wie „Passwort1“ oder allgemeine Kennwörter festzulegen, kann ein Angreifer diese leicht erraten und auf Benutzerkonten zugreifen. Dies ist ohne Brute-Force-Angriffe und ohne mehrere Versuche möglich.
Schwache Sitzungscookies: Sitzungscookies dienen dem Server dazu, Benutzer zu verfolgen. Wenn Sitzungscookies vorhersehbare Werte enthalten, kann ein Angreifer seine eigenen Sitzungscookies setzen und auf die Konten der Benutzer zugreifen.
Abhängig vom genauen Fehler kann es verschiedene Maßnahmen zur Schadensbegrenzung bei fehlerhaften Authentifizierungsmechanismen geben:

Um Angriffe durch Erraten von Passwörtern zu verhindern, stellen Sie sicher, dass die Anwendung eine strenge Passwortrichtlinie durchsetzt.
Um Brute-Force-Angriffe zu vermeiden, stellen Sie sicher, dass die Anwendung nach einer bestimmten Anzahl von Versuchen eine automatische Sperre erzwingt. Dies würde einen Angreifer daran hindern, weitere Brute-Force-Angriffe zu starten.
Implementieren Sie eine Multi-Faktor-Authentifizierung – Wenn ein Benutzer über mehrere Authentifizierungsmethoden verfügt, z. B. Benutzername und Passwort verwendet und einen Code auf seinem Mobilgerät erhält, ist es für einen Angreifer schwierig, auf beide Anmeldeinformationen zuzugreifen und sich so Zugriff auf das Konto zu verschaffen.

Aufgabe 7 Antworten

Was ist die Flagge, die Sie in Darrens Konto gefunden haben?
fe86079416a21a3c99937fea8874b667
Versuchen Sie nun denselben Trick und prüfen Sie, ob Sie sich als Arthur anmelden können.

Keine Antwort nötig
Was ist die Flagge, die Sie in Arthurs Konto gefunden haben?

d9ac0f7db4fda460ac3edeb75d75e16e

Offenlegung sensibler Daten

Wenn eine Webanwendung versehentlich vertrauliche Daten preisgibt, sprechen wir von „Offenlegung vertraulicher Daten“. Dabei handelt es sich häufig um Daten, die direkt mit Kunden verknüpft sind (z. B. Namen, Geburtsdaten, Finanzinformationen usw.), es können aber auch eher technische Informationen wie Benutzernamen und Passwörter sein. Auf komplexeren Ebenen sind häufig Techniken wie ein „Man-in-the-Middle-Angriff“ im Spiel, bei dem der Angreifer Benutzerverbindungen über ein von ihm kontrolliertes Gerät erzwingt und dann die schwache Verschlüsselung aller übertragenen Daten ausnutzt, um Zugriff auf die abgefangenen Informationen zu erhalten (falls die Daten überhaupt verschlüsselt sind …). Natürlich sind viele Beispiele viel einfacher, und in Webanwendungen können Schwachstellen gefunden werden, die ohne fortgeschrittene Netzwerkkenntnisse ausgenutzt werden können. In einigen Fällen können die vertraulichen Daten sogar direkt auf dem Webserver selbst gefunden werden …

Aufgabe 11 Antworten

Schauen Sie sich in der Webanwendung um. Der Entwickler hat einen Hinweis hinterlassen, der darauf hinweist, dass sich in einem bestimmten Verzeichnis vertrauliche Daten befinden.

Wie lautet der Name des genannten Verzeichnisses?
/Vermögenswerte
Navigieren Sie zu dem Verzeichnis, das Sie in Frage 1 gefunden haben. Welche Datei enthält wahrscheinlich vertrauliche Daten?

webapp.db
Verwenden Sie das unterstützende Material, um auf die vertraulichen Daten zuzugreifen. Wie lautet der Kennwort-Hash des Administratorbenutzers?

6eea9b7ef19179a06954edd0f6c05ceb
Knacken Sie das Hash.
Wie lautet das Klartextkennwort des Administrators?

Abonnieren
Als Administrator anmelden. Was ist die Flagge?

THM{Yzc2YjdkMjE5N2VjMzNhOTE3NjdiMjdl}

XML Externe Entity Injektion

Ein XML External Entity (XXE)-Angriff ist eine Sicherheitslücke, die Funktionen von XML-Parsern/-Daten missbraucht. Angreifer können dadurch häufig mit Backend- oder externen Systemen interagieren, auf die die Anwendung selbst zugreifen kann, und die Datei auf diesem System lesen. Angreifer können auch Denial-of-Service-Angriffe (DoS) auslösen oder XXE verwenden, um Server-Side Request Forgery (SSRF) auszuführen, wodurch die Webanwendung dazu veranlasst wird, Anfragen an andere Anwendungen zu stellen. XXE kann sogar Port-Scans ermöglichen und zur Remote-Codeausführung führen.

Es gibt zwei Arten von XXE-Angriffen: In-Band und Out-of-Band (OOB-XXE).
1) Bei einem In-Band-XXE-Angriff kann der Angreifer eine sofortige Antwort auf die XXE-Nutzlast erhalten.

2) Out-of-Band-XXE-Angriffe (auch blinde XXE genannt): Es gibt keine unmittelbare Antwort von der Webanwendung und der Angreifer muss die Ausgabe seiner XXE-Nutzlast in eine andere Datei oder auf seinen eigenen Server spiegeln.

Aufgabe 13 Antworten

Vollständige Form von XML
Erweiterbare Auszeichnungssprache
Ist ein XML-Prolog in XML-Dokumenten zwingend erforderlich?

NEIN
Können wir XML-Dokumente anhand eines Schemas validieren?

Ja
Wie können wir die XML-Version und -Kodierung in einem XML-Dokument angeben?

XML-Prolog

Aufgabe 14 Antworten

Wie definieren Sie ein neues ELEMENT?
!ELEMENT
Wie definieren Sie ein ROOT-Element?

!DOCTYPE
Wie definieren Sie eine neue ENTITÄT?

!JURISTISCHE PERSON

Beispiele für XXE-Nutzlasten

<!DOCTYPE replace [ ]>
 <userInfo>
  Falke
  &Name;
 </userInfo>

<?xml version=”1.0″?>
<!DOCTYPE root [ ]>
&lesen;

Aufgabe 16 Antworten

Versuchen Sie, Ihren eigenen Namen mithilfe einer beliebigen Nutzlast anzuzeigen.
Keine Antwort nötig
Überprüfen Sie, ob Sie die Datei /etc/passwd lesen können

Keine Antwort nötig
Wie lautet der Name des Benutzers in /etc/passwd

Falke
Wo befindet sich der SSH-Schlüssel von Falcon?

/home/falcon/.ssh/id_rsa
Was sind die ersten 18 Zeichen für Falcons privaten Schlüssel

MIIEogIBAAKCAQEA7

Defekte Zugriffskontroll-Sicherheitslücke

Websites haben Seiten, die vor normalen Besuchern geschützt sind. Beispielsweise sollte nur der Administrator der Site auf eine Seite zugreifen können, um andere Benutzer zu verwalten. Wenn ein Website-Besucher auf die geschützte(n) Seite(n) zugreifen kann, für die er keine Zugriffsberechtigung hat, sind die Zugriffskontrollen unterbrochen.

Der Zugriff eines normalen Besuchers auf geschützte Seiten kann zu Folgendem führen:
Möglichkeit, vertrauliche Informationen einzusehen
Zugriff auf nicht autorisierte Funktionen
OWASP hat einige Angriffsszenarien aufgelistet, die Schwächen bei der Zugriffskontrolle aufweisen:

Szenario #1: Die Anwendung verwendet nicht überprüfte Daten in einem SQL-Aufruf, der auf Kontoinformationen zugreift:
pstmt.setString(1, request.getParameter(“acct”));
ResultSet-Ergebnisse = pstmt.executeQuery( );

Ein Angreifer ändert einfach den Parameter „acct“ im Browser, um die gewünschte Kontonummer zu senden. Ohne ordnungsgemäße Überprüfung kann der Angreifer auf das Konto eines beliebigen Benutzers zugreifen.
http://example.com/app/accountInfo?acct=notmyacct

Szenario #2: Ein Angreifer erzwingt einfach das Durchsuchen von Ziel-URLs. Für den Zugriff auf die Administratorseite sind Administratorrechte erforderlich.
http://example.com/app/getappInfo
http://example.com/app/admin_getappInfo

Wenn ein nicht authentifizierter Benutzer auf eine der Seiten zugreifen kann, handelt es sich um einen Fehler. Wenn ein Nicht-Administrator auf die Administratorseite zugreifen kann, handelt es sich um einen Fehler (Verweis auf Szenarien).

Einfach ausgedrückt: Eine fehlerhafte Zugriffskontrolle ermöglicht es Angreifern, Autorisierungen zu umgehen und so vertrauliche Daten anzuzeigen oder Aufgaben auszuführen, als wären sie ein privilegierter Benutzer.

IDOR-Sicherheitslücke

Websites haben Seiten, die vor normalen Besuchern geschützt sind. Beispielsweise sollte nur der Administrator der Site auf eine Seite zugreifen können, um andere Benutzer zu verwalten. Wenn ein Website-Besucher auf die geschützte(n) Seite(n) zugreifen kann, für die er keine Zugriffsberechtigung hat, sind die Zugriffskontrollen unterbrochen.

Der Zugriff eines normalen Besuchers auf geschützte Seiten kann zu Folgendem führen:
Möglichkeit, vertrauliche Informationen einzusehen
Zugriff auf nicht autorisierte Funktionen
OWASP hat einige Angriffsszenarien aufgelistet, die Schwächen bei der Zugriffskontrolle aufweisen:

Szenario #1: Die Anwendung verwendet nicht überprüfte Daten in einem SQL-Aufruf, der auf Kontoinformationen zugreift:
pstmt.setString(1, request.getParameter(“acct”));
ResultSet-Ergebnisse = pstmt.executeQuery( );

Ein Angreifer ändert einfach den Parameter „acct“ im Browser, um die gewünschte Kontonummer zu senden. Ohne ordnungsgemäße Überprüfung kann der Angreifer auf das Konto eines beliebigen Benutzers zugreifen.
http://example.com/app/accountInfo?acct=notmyacct

Szenario #2: Ein Angreifer erzwingt einfach das Durchsuchen von Ziel-URLs. Für den Zugriff auf die Administratorseite sind Administratorrechte erforderlich.
http://example.com/app/getappInfo
http://example.com/app/admin_getappInfo

Wenn ein nicht authentifizierter Benutzer auf eine der Seiten zugreifen kann, handelt es sich um einen Fehler. Wenn ein Nicht-Administrator auf die Administratorseite zugreifen kann, handelt es sich um einen Fehler (Verweis auf Szenarien).

Einfach ausgedrückt: Eine fehlerhafte Zugriffskontrolle ermöglicht es Angreifern, Autorisierungen zu umgehen und so vertrauliche Daten anzuzeigen oder Aufgaben auszuführen, als wären sie ein privilegierter Benutzer.

Sehen Sie sich die Notizen anderer Benutzer an. Was ist die Flagge?

Flagge{fünfvierdrei}

Sicherheitsfehlkonfiguration

Sicherheitsfehlkonfigurationen unterscheiden sich von den anderen Top-10-Sicherheitslücken, da sie auftreten, wenn die Sicherheit hätte richtig konfiguriert werden können, dies jedoch nicht der Fall war.

Zu den Sicherheitsfehlkonfigurationen zählen:

Schlecht konfigurierte Berechtigungen für Cloud-Dienste, wie S3-Buckets
Unnötige Funktionen wie Dienste, Seiten, Konten oder Berechtigungen aktiviert haben
Standardkonten mit unveränderten Passwörtern
Fehlermeldungen, die zu detailliert sind und es einem Angreifer ermöglichen, mehr über das System herauszufinden
Keine Verwendung von HTTP-Sicherheitsheadern oder Offenlegung zu vieler Details im Server: HTTP-Header
Diese Sicherheitslücke kann häufig zu weiteren Sicherheitslücken führen, beispielsweise zu Standardanmeldeinformationen, die Ihnen Zugriff auf vertrauliche Daten gewähren, oder zu XXE- oder Befehlsinjektion auf Administratorseiten.

Für weitere Informationen empfehle ich einen Blick auf den OWASP Top 10 Eintrag für Security Misconfiguration

Standardkennwörter
Diese VM konzentriert sich insbesondere auf Standardkennwörter. Diese sind ein konkretes Beispiel für eine Sicherheitsfehlkonfiguration. Sie könnten und sollten alle Standardkennwörter ändern, aber die Leute tun dies oft nicht.

Dies kommt besonders häufig bei eingebetteten Geräten und IoT-Geräten vor und die Besitzer ändern diese Passwörter oft nicht.

Das Risiko von Standardanmeldeinformationen aus der Sicht eines Angreifers ist leicht vorstellbar. Der Zugriff auf Admin-Dashboards, Dienste für Systemadministratoren oder Hersteller oder sogar auf die Netzwerkinfrastruktur könnte bei einem Angriff auf ein Unternehmen unglaublich nützlich sein. Von der Datenfreigabe bis hin zu einfachem RCE können die Auswirkungen von Standardanmeldeinformationen schwerwiegend sein.

Im Oktober 2016 wurde Dyn (ein DNS-Anbieter) durch einen der denkwürdigsten DDoS-Angriffe der letzten 10 Jahre offline genommen. Die Datenflut stammte hauptsächlich von IoT- und Netzwerkgeräten wie Routern und Modems, die mit der Mirai-Malware infiziert waren.

Wie hat die Malware die Systeme übernommen? Über Standardkennwörter. Die Malware verfügte über eine Liste mit 63 Benutzernamen/Kennwort-Paaren und versuchte, sich bei exponierten Telnet-Diensten anzumelden.

Der DDoS-Angriff war bemerkenswert, weil er viele große Websites und Dienste offline nahm. Amazon, Twitter, Netflix, GitHub, Xbox Live, PlayStation Network und viele weitere Dienste waren in drei Wellen von DDoS-Angriffen auf Dyn mehrere Stunden lang offline.

Hacken Sie sich in die Webanwendung und finden Sie die Flagge!

thm{4b9513968fd564a87b28aa1f9d672e17}

Cross Site Scripting erklärt

Cross-Site-Scripting, auch XSS genannt, ist eine Sicherheitslücke, die typischerweise in Webanwendungen auftritt. Es handelt sich um eine Art Injektion, die es einem Angreifer ermöglichen kann, schädliche Skripte auszuführen und auf dem Computer eines Opfers auszuführen.

Eine Webanwendung ist anfällig für XSS, wenn sie nicht bereinigte Benutzereingaben verwendet. XSS ist in Javascript, VBScript, Flash und CSS möglich. Es gibt drei Haupttypen von Cross-Site-Scripting:
Gespeichertes XSS – die gefährlichste Art von XSS. Dabei stammt eine bösartige Zeichenfolge aus der Datenbank der Website. Dies geschieht häufig, wenn eine Website Benutzereingaben zulässt, die beim Einfügen in die Datenbank nicht bereinigt werden (die „schlechten Teile“ einer Benutzereingabe werden entfernt).
Reflektiertes XSS – die bösartige Nutzlast ist Teil der Anfrage des Opfers an die Website. Die Website fügt diese Nutzlast als Antwort an den Benutzer ein. Zusammenfassend lässt sich sagen, dass ein Angreifer sein Opfer dazu verleiten muss, auf eine URL zu klicken, um seine bösartige Nutzlast auszuführen.
DOM-basiertes XSS – DOM steht für Document Object Model und ist eine Programmierschnittstelle für HTML- und XML-Dokumente. Es stellt die Seite dar, sodass Programme die Dokumentstruktur, den Stil und den Inhalt ändern können. Eine Webseite ist ein Dokument und dieses Dokument kann entweder im Browserfenster oder als HTML-Quelle angezeigt werden.
Weitere XSS-Erklärungen und -Übungen finden Sie im XSS-Raum.

XSS-Nutzdaten
Denken Sie daran, dass Cross-Site-Scripting eine Schwachstelle ist, die ausgenutzt werden kann, um bösartiges JavaScript auf dem Computer eines Opfers auszuführen. Sehen Sie sich einige häufig verwendete Payload-Typen an:

Popups () – Erstellt ein „Hallo Welt“-Nachrichten-Popup im Browser eines Benutzers.
HTML schreiben (document.write) – Überschreiben Sie das HTML der Website, um Ihr eigenes hinzuzufügen (wodurch im Wesentlichen die gesamte Seite verunstaltet wird).
XSS-Keylogger (http://www.xss-payloads.com/payloads/scripts/simplekeylogger.js.html) – Sie können alle Tastenanschläge eines Benutzers protokollieren und so sein Passwort und andere vertrauliche Informationen erfassen, die er auf der Webseite eingibt.
Port-Scanning (http://www.xss-payloads.com/payloads/scripts/portscanapi.js.html) – Ein kleiner lokaler Port-Scanner (weitere Informationen hierzu finden Sie im TryHackMe XSS-Raum).
XSS-Payloads.com (http://www.xss-payloads.com/) ist eine Website mit Payloads, Tools, Dokumentation und mehr rund um XSS. Sie können XSS-Payloads herunterladen, die Schnappschüsse von einer Webcam machen oder sogar einen leistungsfähigeren Port- und Netzwerkscanner erhalten.

Navigieren Sie in Ihrem Browser zu http://MACHINE_IP/ und klicken Sie in der Navigationsleiste auf die Registerkarte „Reflected XSS“. Erstellen Sie eine reflektierte XSS-Nutzlast, die ein Popup mit der Meldung „Hallo“ auslöst.

XSSShatmehrzu bieten,alsSiedenken
Erstellen Sie auf derselben reflektierenden Seite eine reflektierte XSS-Nutzlast, die ein Popup mit der IP-Adresse Ihres Computers verursacht.

ReflectiveXss4TheWin
Navigieren Sie nun in Ihrem Browser zu http://MACHINE_IP/ und klicken Sie in der Navigationsleiste auf die Registerkarte „Stored XSS“. Erstellen Sie ein Konto.

Fügen Sie dann einen Kommentar hinzu und prüfen Sie, ob Sie Ihr eigenes HTML einfügen können.

HTML_T4gs
Erstellen Sie auf derselben Seite ein Warn-Popup-Fenster, das mit Ihren Dokument-Cookies auf der Seite angezeigt wird.

W3LL_D0N3_LVL2
Ändern Sie „XSS Playground“ in „Ich bin ein Hacker“, indem Sie einen Kommentar hinzufügen und Javascript verwenden.

Websites können mit XSS leicht verunstaltet werden

Unsichere Deserialisierungsschwachstelle

„Unsichere Deserialisierung ist eine Schwachstelle, die auftritt, wenn nicht vertrauenswürdige Daten verwendet werden, um die Logik einer Anwendung zu missbrauchen“ (Acunetix., 2017)

Diese Definition ist, gelinde gesagt, immer noch recht weit gefasst. Bei unsicherer Deserialisierung werden von einer Anwendung verarbeitete Daten einfach durch Schadcode ersetzt. Dadurch ist alles von DoS (Denial of Service) bis RCE (Remote Code Execution) möglich, was der Angreifer nutzen kann, um in einem Pentesting-Szenario Fuß zu fassen.

Dieser Schadcode nutzt insbesondere den legitimen Serialisierungs- und Deserialisierungsprozess von Webanwendungen aus. Wir erklären diesen Prozess und warum er in modernen Webanwendungen so weit verbreitet ist.

OWASP bewertet diese Sicherheitslücke aus folgenden Gründen mit 8 von 10 Punkten:

  • Geringe Ausnutzbarkeit. Diese Schwachstelle ist oft von Fall zu Fall unterschiedlich – es gibt kein zuverlässiges Tool/Framework dafür. Aufgrund dieser Natur müssen Angreifer die Funktionsweise des ToE gut verstehen.
  • Der Exploit ist nur so gefährlich, wie es die Fähigkeiten des Angreifers zulassen, oder vielmehr der Wert der offengelegten Daten. Jemand, der beispielsweise nur einen DoS-Angriff verursachen kann, wird die Anwendung unzugänglich machen. Die geschäftlichen Auswirkungen davon sind je nach Infrastruktur unterschiedlich – einige Organisationen werden sich problemlos erholen, andere jedoch nicht.

Was ist gefährdet?

Zusammenfassend handelt es sich dabei letztlich um jede Anwendung, die Daten speichert oder abruft, ohne dass für die abgefragten oder gespeicherten Daten Validierungen oder Integritätsprüfungen durchgeführt werden. Einige Beispiele für Anwendungen dieser Art sind:

  • E-Commerce-Websites
  • Foren
  • APIs
  • Anwendungslaufzeiten (Tomcat, Jenkins, Jboss usw.)

Wenn ein Cookie den Pfad webapp.com/login hätte, welche URL müsste der Benutzer aufrufen?
webapp.com/login
Wie lautet das Akronym für die Webtechnologie, auf der Secure Cookies basieren?

HTTPS

Aufgabe 25 Flaggen

1. Flagge (Cookie-Wert)
THM{gutes_altes_Base64_hm}
2. Flagge (Admin-Dashboard)

THM{hier ist die Admin-Flagge}

Aufgabe 26 Flagge

Datei:flagge.txt
4a69a7ff9fd68

Komponenten mit bekannten Schwachstellen

Gelegentlich stellen Sie möglicherweise fest, dass das Unternehmen/die Organisation, bei der Sie einen Penetrationstest durchführen, ein Programm verwendet, das bereits eine gut dokumentierte Sicherheitslücke aufweist.

Nehmen wir beispielsweise an, dass ein Unternehmen seine WordPress-Version seit einigen Jahren nicht mehr aktualisiert hat und Sie mithilfe eines Tools wie wpscan feststellen, dass es sich um Version 4.6 handelt. Eine kurze Recherche wird zeigen, dass WordPress 4.6 für einen nicht authentifizierten Remote Code Execution (RCE)-Exploit anfällig ist. Und noch besser: Sie können einen bereits erstellten Exploit auf Exploit-DB finden.

Wie Sie sehen, wäre dies ziemlich verheerend, da es für den Angreifer sehr wenig Arbeit erfordert, da die Schwachstelle oft bereits bekannt ist und jemand anderes sie bereits ausgenutzt hat. Die Situation wird noch schlimmer, wenn Sie bedenken, dass dies wirklich recht leicht passieren kann. Wenn ein Unternehmen ein einziges Update für ein von ihm verwendetes Programm verpasst, kann es für eine beliebige Anzahl von Angriffen anfällig sein.

Aus diesem Grund hat OWASP dies auf der Verbreitungsskala mit 3 (was hoch bedeutet) bewertet. Es ist für ein Unternehmen unglaublich einfach, ein Update für eine Anwendung zu verpassen.

Aufgabe 29 Antworten

Wie viele Zeichen enthält /etc/passwd (verwenden Sie wc -c /etc/passwd, um die Antwort zu erhalten)
1611

Unzureichende Protokollierung und Überwachung

Beim Einrichten von Webanwendungen sollte jede vom Benutzer ausgeführte Aktion protokolliert werden. Die Protokollierung ist wichtig, da im Falle eines Vorfalls die Aktionen der Angreifer nachverfolgt werden können. Sobald ihre Aktionen nachverfolgt werden, können ihr Risiko und ihre Auswirkungen bestimmt werden. Ohne Protokollierung gäbe es keine Möglichkeit festzustellen, welche Aktionen ein Angreifer ausgeführt hat, wenn er Zugriff auf bestimmte Webanwendungen erhält. Zu den größeren Auswirkungen dieser Aktionen gehören:

regulatorischer Schaden: Wenn ein Angreifer Zugriff auf persönlich identifizierbare Benutzerinformationen erhält und dies nicht protokolliert wird, sind nicht nur die Benutzer der Anwendung betroffen, sondern den Anwendungseigentümern drohen je nach Vorschriften möglicherweise Geldstrafen oder strengere Maßnahmen.
Risiko weiterer Angriffe: Ohne Protokollierung bleibt die Anwesenheit eines Angreifers möglicherweise unentdeckt. Dies könnte einem Angreifer ermöglichen, weitere Angriffe gegen Besitzer von Webanwendungen zu starten, indem er Anmeldeinformationen stiehlt, die Infrastruktur angreift und mehr.
Die in den Protokollen gespeicherten Informationen sollten Folgendes umfassen:

HTTP-Statuscodes
Zeitstempel
Benutzernamen
API-Endpunkte/Seitenstandorte
IP-Adressen
Diese Protokolle enthalten vertrauliche Informationen. Daher ist es wichtig, sicherzustellen, dass die Protokolle sicher gespeichert werden und mehrere Kopien dieser Protokolle an verschiedenen Standorten gespeichert werden.

Wie Sie vielleicht bemerkt haben, ist die Protokollierung wichtiger, nachdem ein Verstoß oder Vorfall aufgetreten ist. Im Idealfall ist eine Überwachung vorhanden, um verdächtige Aktivitäten zu erkennen. Das Ziel der Erkennung dieser verdächtigen Aktivitäten besteht darin, den Angreifer entweder vollständig zu stoppen oder seine Auswirkungen zu verringern, wenn seine Anwesenheit viel später als erwartet erkannt wurde. Häufige Beispiele für verdächtige Aktivitäten sind:

mehrere unberechtigte Versuche für eine bestimmte Aktion (normalerweise Authentifizierungsversuche oder Zugriff auf nicht autorisierte Ressourcen, z. B. Admin-Seiten)
Anfragen von ungewöhnlichen IP-Adressen oder Standorten: Dies kann zwar darauf hinweisen, dass jemand anderes versucht, auf das Konto eines bestimmten Benutzers zuzugreifen, es kann aber auch zu einer hohen Rate an falsch-positiven Ergebnissen führen.
Einsatz automatisierter Tools: Bestimmte automatisierte Tools lassen sich leicht identifizieren, z. B. anhand des Werts von User-Agent-Headern oder der Geschwindigkeit von Anfragen. Dies kann darauf hinweisen, dass ein Angreifer automatisierte Tools verwendet.
Gängige Payloads: In Webanwendungen verwenden Angreifer häufig Cross Site Scripting (XSS)-Payloads. Das Erkennen der Verwendung dieser Payloads kann darauf hinweisen, dass jemand unbefugte/böswillige Tests an Anwendungen durchführt.
Das bloße Erkennen verdächtiger Aktivitäten ist nicht hilfreich. Diese verdächtigen Aktivitäten müssen nach ihrer Auswirkungsstufe bewertet werden. Beispielsweise haben bestimmte Aktionen eine größere Auswirkung als andere. Auf diese Aktionen mit höherer Auswirkung muss früher reagiert werden, daher sollten sie einen Alarm auslösen, der die Aufmerksamkeit der betreffenden Partei erregt.

Setzen Sie dieses Wissen in die Praxis um, indem Sie diese Beispielprotokolldatei analysieren.

Welche IP-Adresse verwendet der Angreifer?
49.99.13.16
Welche Art von Angriff wird durchgeführt?

Rohe Gewalt

TryHackMe OWASP TOP 10 2021 | Raum Antworten

Sehen Sie sich die Notizen anderer Benutzer an. Was ist die Flagge?

Flagge{fünfvierdrei}

Schauen Sie sich in der Web-App um. Der Entwickler hat einen Hinweis hinterlassen, dass sich in einem bestimmten Verzeichnis vertrauliche Daten befinden. 

Wie lautet der Name des genannten Verzeichnisses?

/Vermögenswerte

Navigieren Sie zu dem Verzeichnis, das Sie in Frage 1 gefunden haben. Welche Datei enthält wahrscheinlich vertrauliche Daten?

webapp.db

Verwenden Sie das unterstützende Material, um auf die vertraulichen Daten zuzugreifen. Wie lautet der Kennwort-Hash des Administratorbenutzers?

6eea9b7ef19179a06954edd0f6c05ceb

Knacken Sie das Hash.
Wie lautet das Klartextkennwort des Administrators?

 Abonnieren

Melden Sie sich als Administrator an. Was ist die Flagge?

THM{Yzc2YjdkMjE5N2VjMzNhOTE3NjdiMjdl}

Welche seltsame Textdatei befindet sich im Stammverzeichnis der Website?

drpepper.txt

Wie viele Benutzer gibt es, die keine Root-/Dienst-/Daemon-Benutzer sind?

0

Wie ist die Shell des Benutzers eingestellt?

Apache

Wie ist die Shell des Benutzers eingestellt?

/sbin/nologin

Welche Version von Alpine Linux läuft?

3.16.0

Welchen Wert hat die Flagge in Josephs Bericht?

THM{Kann_nicht_gespart_werden!}

Wie lautet der Name der Datenbankdatei (die mit der Erweiterung .db) im aktuellen Verzeichnis?

todo.db

Ändern Sie den Code, um den Inhalt der app.py Datei, die den Quellcode der Anwendung enthält. Was ist der Wert der geheime Flagge Variable im Quellcode?

THM{Nur_eine_kleine_Fehlkonfiguration}

Was ist der Inhalt der Datei /opt/flag.txt?

THM{Aber das ist keine Schuld!}

Was ist die Flagge, die Sie in Darrens Konto gefunden haben?

fe86079416a21a3c99937fea8874b667

Was ist die Flagge, die Sie in Arthurs Konto gefunden haben?

d9ac0f7db4fda460ac3edeb75d75e16e

Was ist der SHA-256-Hash von https://code.jquery.com/jquery-1.12.4.min.js?

sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=

Versuchen Sie, sich als Gast bei der Anwendung anzumelden. Wie lautet das Passwort des Gastkontos?

Gast

Wie heißt das Cookie der Website, das ein JWT-Token enthält?

JWT-Sitzung

Welche Flagge wird dem Administratorbenutzer angezeigt?

THM{Keine_Cookies_von_Fremden_annehmen}

Welche IP-Adresse verwendet der Angreifer?

Welche Art von Angriff wird durchgeführt?

Rohe Gewalt

Erkunden Sie die Website. Welcher Host hat als Einziger Zugriff auf den Admin-Bereich?

lokaler Host

Aktivieren Sie die Schaltfläche „Lebenslauf herunterladen“. Wohin verweist der Serverparameter?

sichere-datei-speicherung.com

Mithilfe von SSRF können Sie die Anwendung veranlassen, die Anfrage an Ihre AttackBox statt an den sicheren Dateispeicher zu senden. Sind in der abgefangenen Anfrage API-Schlüssel enthalten?

THM{Hallo_ich_bin_nur_ein_API_Schlüssel}

Video-Playlist-Komplettlösungen

Über den Autor

Ich erstelle Notizen zur Cybersicherheit, Notizen zum digitalen Marketing und Online-Kurse. Ich biete auch Beratung zum digitalen Marketing an, einschließlich, aber nicht beschränkt auf SEO, Google- und Meta-Anzeigen und CRM-Verwaltung.

Artikel anzeigen