Wir haben die Befehlseinfügung und -ausführung in Node JS behandelt. Das Szenario umfasste ein Eingabefeld, das Benutzereingaben als Zahlen an eine Rechnerfunktion weitergibt, die eine EVAL()-Funktion verwendet, um die Ausgabe der Rechenoperation zu berechnen und an den Benutzer zurückzugeben. Die EVAL()-Funktion und der Rechner implementieren keine Art von Eingabevalidierung, was es uns ermöglichte, Node JS-Methoden wie readdirsync() und readfilesync() zu verwenden und aufzurufen, um vertrauliche Dateien zu lesen. Dies war Teil von HackTheBox JSCalc Web-Herausforderung.

Holen Sie sich Hinweise zum OSCP-Zertifikat

Praktische Hinweise zur Burp Suite

Der komplette praktische Kurs zum Penetrationstest von Webanwendungen

BESCHREIBUNG DER HERAUSFORDERUNG
In den geheimnisvollen Tiefen des digitalen Meeres haben technisch versierte Tintenfische einen speziellen JavaScript-Rechner entwickelt. Diese Kopffüßler-Ingenieure verfügen über mehrere Arme und komplexe Problemlösungsfähigkeiten und verwenden ihn für alles, von der Berechnung der Tintenstrahl-Flugbahn bis hin zur Tiefsee-Mathematik. Der Versuch, ihn auszutricksen, geschieht auf eigene Gefahr! 🦑

Video-Highlights

Erfahren Sie mehr über die aktive Node.js Prozess, verwenden Sie das globale Objekt Prozess. Require() wird nicht benötigt, da es global ist. Es bietet eine Fülle hilfreicher Funktionen und Techniken, um mehr Kontrolle über Systeminteraktionen zu erlangen.

Beispielsweise wird das aktuelle Arbeitsverzeichnis des Node.js-Prozesses zurückgegeben durch verarbeiten.cwd(). Ich habe unser Programm verwendet, um dies zu testen, und habe die Ergebnisse erhalten. Burp wurde nicht aktiviert. Ich musste nur die Browserkonsole verwenden, um die Nutzlast zu untersuchen und die Antwort zu sehen.

Ziel der Challenge war das Lesen von Daten aus einer flag.txt-Datei auf dem Server. Dabei kann das Node.js-Modul fs helfen, das mit require('fs') angefordert werden muss. Von jeder Methode gibt es synchrone und asynchrone Versionen. Das Arbeiten mit dem Dateisystem wird ermöglicht (Zugriff auf, Verwaltung und Änderung von Dateien usw.). Es umfasst eine breite Palette von Techniken und Attributen. Der Inhalt des Verzeichnisses kann mit der Methode readdir() oder readdirSync() (synchrone Version) der Klasse fs aufgelistet werden, die ähnlich wie die Befehle ls bzw. dir unter Linux bzw. Microsoft Windows funktioniert.

Zur Lösung dieser Herausforderung haben wir die folgende Nutzlast verwendet

erfordern('fs').schreibgeschützt('/App').zuString()

erfordern('fs').readdirSync(‘../’).toString()

erfordern('fs').lesenFileSync(„/flag.txt“).zuString()

Video-Komplettlösung

Ü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