
NodeXP - Ein Tool zur serverseitigen JavaScript-Injection, das Node.js-Schwachstellen erkennen und ausnutzen kann.
NodeXP ist ein integriertes Werkzeug, geschrieben in Python 2.7, das in der Lage ist, mögliche Schwachstellen in Node.js-Diensten zu erkennen und diese automatisiert auszunutzen, basierend auf S(erver)S(ide)J(avascript)I(njection)-Angriffen!
Laden Sie NodeXP herunter, indem Sie das Git-Repository klonen:
git clone https://github.com/esmog/nodexp
Um eine Liste aller Optionen zu erhalten, führen Sie aus:
python2.7 nodexp -h
Beispiele für POST- und GET-Fälle entsprechend:
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://nodegoat.herokuapp.com/contributions" --pdata="preTax=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA"
python2.7 nodexp.py --url="http://192.168.64.30/?name=[INJECT_HERE]" -c="connect.sid=s:i6fKU7kSLPX1l00WkOxDmEfncptcZP1v.fy9whjYW0fGAvbavzYSBz1C2ZhheDuQ1SU5qpgVzbTA" --tech=blind
Um sich mit NodeXP vertraut zu machen, müssen Sie möglicherweise die bereitgestellten Node.js-Testdienste (/testbeds) einrichten und mit der Nutzung des Werkzeugs beginnen. Ein lokaler Rechner mit einem laufenden Node.js-Server ist erforderlich.
Zunächst sollten Sie die Pakete 'body-parser' und 'express' in den GET- und POST-Verzeichnissen installieren.
Gehen Sie auf Ihrem lokalen Rechner in das Verzeichnis 'testbeds/GET' und fügen Sie den folgenden Befehl ins Terminal ein:
npm install express --save
Gehen Sie in das Verzeichnis 'testbeds/POST' und fügen Sie die folgenden Befehle ins Terminal ein:
npm install body-parser --save
npm install express --save
Nach der korrekten Installation der Pakete können Sie jeden Dienst ausführen, indem Sie den Befehl 'node' und die gewünschte JS-Datei ausführen (z. B. node eval.js).
Sobald Ihr Server läuft, können Sie NodeXP ausführen und es an diesen Diensten testen!
Ein Beispiel für den GET-Fall sehen Sie unten:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/?name=[INJECT_HERE]
Ein Beispiel für den POST-Fall sehen Sie unten:
python2.7 nodexp.py --url=http://localiprunningnodejsserver:3001/post.js --pdata=username=[INJECT_HERE]
Die Payloads, die sowohl für die Blind- als auch für die ergebnisbasierte Injection-Technik verwendet werden, sind in "/files/blind_payloads.txt" und "/files/payloads.txt" gespeichert.
Payloads werden in jeder ungeraden Zeilennummer der Textdateien geschrieben, und im Fall der ergebnisbasierten Injection werden ihre erwarteten Antworten in jeder geraden Zeilennummer der Datei "payloads.txt" als durch Kommas getrennte Liste geschrieben. Gerade Zeilennummern der Datei "blind_payloads.txt" sind leer.
Um den Injectionsprozess zu stoppen, wird "---end(nextline)---end" als Trennzeichen verwendet, das das Parsen und Injizieren von Payloads sowohl für Blind- als auch für ergebnisbasierte Injection-Fälle stoppen kann.
Jeder Benutzer kann die Payload-Textdateien mit eigenen Payloads warten und aktualisieren, solange er/sie die obigen Anweisungen befolgt.
Der Zweck des Werkzeugs ist streng akademisch und wurde entwickelt, um meine Masterarbeit durchzuführen. Es könnte auch beim Prozess eines Penetrationstests von Node.js-Diensten hilfreich sein. Jegliche andere böswillige oder illegale Nutzung des Werkzeugs wird ausdrücklich nicht empfohlen und ist eindeutig nicht Teil des Zwecks dieser Forschung.
NodeXP - Version 1.2.2