Bike | HTB Starting Point Writeup T1M07

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


  1. Welche Software führt den Dienst aus, der den in der ersten Frage genannten http/Web-Port überwacht?
    Node.js

  1. Wie lautet der Name des Web-Frameworks laut Wappalyzer?
    Express

  1. Wie lautet der Name der Schwachstelle, auf die wir mit {{7*7}} testen?
    Server side Template Injection

  1. Was ist die Template-Engine, die in Node.JS verwendet wird?
    Handelbars

  1. Wie lautet der Name der BurpSuite-Registerkarte, die zum Codieren von Text verwendet wird?
    Decoder

  1. Um Sonderzeichen in unseren Payloads in einer HTTP-Anfrage zu senden, müssen wir die Payloads kodieren. Welche Art der Kodierung verwenden wir?URL

  1. 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.


  1. Welche Variable ist der Name des Top-Level Scope in Node.JS?
    global

  1. 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.