Bike | HTB Starting Point Writeup T1M07
In diesem Writeup geht es um die Starting Point Maschine "Bike" auf Hack The Box.
Wie immer, dass passende Video zum Beitrag hier: https://youtu.be/rPAJil4_zq0
Welche TCP-Ports erkennt nmap als offen? Beantworten die Frage mit einer Liste von Ports, die durch Kommas ohne Leerzeichen getrennt sind, von niedrig bis hoch.22,80
- Welche Software führt den Dienst aus, der den in der ersten Frage genannten http/Web-Port überwacht?
Node.js
- Wie lautet der Name des Web-Frameworks laut Wappalyzer?
Express
- Wie lautet der Name der Schwachstelle, auf die wir mit {{7*7}} testen?
Server side Template Injection
- Was ist die Template-Engine, die in Node.JS verwendet wird?
Handelbars
- Wie lautet der Name der BurpSuite-Registerkarte, die zum Codieren von Text verwendet wird?
Decoder
- Um Sonderzeichen in unseren Payloads in einer HTTP-Anfrage zu senden, müssen wir die Payloads kodieren. Welche Art der Kodierung verwenden wir?
URL
- Wenn wir einen Payload von HackTricks verwenden, um zu versuchen, Systembefehle auszuführen, erhalten wir eine Fehlermeldung zurück. Was bedeutet "not defined" in der Fehlermeldung?
require
Nachdem der Burpsuite Proxy eingeschaltet wurde, geben wir Text in das Feld ein und klicken auf submit. Nun finden wir die anfrage im Proxyreiter von Burpsuite
Die Anfrage können wir jetzt and den Repeater weiterleiten
Nun suchen wir uns eine Payload den wir ausführen wollen, in dem Fall den Payload von der Seite Hacktricks . diesen müssen wir allerdings als URL Encoden.
Die URL kopieren wir uns und fügen sie statt dem Text beim Repeater ein. Nach dem absenden sehen wir, dass require
nicht definiert ist.
- Welche Variable ist der Name des Top-Level Scope in Node.JS?
global
- Wenn wir diese Schwachstelle ausnutzen, können wir als der Benutzer, unter dem der Webserver läuft, Befehle ausführen. Wie lautet der Name dieses Benutzers?
root
um den Payload nutzen zu können, müssen wir einen Weg finden um auf das Objekt “process” zugreifen zu können.
Dafür ändern wir unseren Payload leicht ab.
{{this.push "return process.mainModule.require('child_process').execSync('whoami');"}}
Für die Flag passen wir nun noch einmal unseren Payload an und tauschen whoami
gegen cat /root/flag.txt
wenn wir den neuen Payload nun im Repeater ausführen, erhalten wir unsere Flag.