JSShell de Daniel Abeles es una webshell multiusuario con una parte servidor escrita en Python con Flask y otra cliente en Javascript y HTML. Aunque inicialmente se creó para debuggear navegadores algo "exóticos", puede utilizarse para otros propósitos, siempre baja la responsabilidad y riesgo de cada uno.
Instalación
Se recomienda usar un entorno virtual y python 3.6. aunque versiones anteriores funcionan también bien:
pyenv virtualenv -p python3.6 venv
pyenv activate venv
virtualenv -p python3.6 venv
source venv/bin/activate
Para ambos:
pip install -r requirements.txt
Características
- Multicliente
- Soporta objetos DOM cyclic
- Scripts Pre flight
- Command queue
- Command Context
Ejecución
Creación de la base de datos:
python db_handler.py create
Iniciar el servidor (en background):
python run.py
Navegar con un navegador a la dirección del servidor:
http://dirección_ip:5000 (El puerto puede ser cambiado)
Abre el shell interactivo
python shell.py
Opcional : Scripts pre flight
Esos son los scripts que se ejecutarán en cada registro de un nuevo cliente. Utilízalos sabiamente :)
Uso
La interfaz de shell contiene varios comandos (puedes verlos usando el comando help).
Utilizando la cola (queue) de comandos, se pueden lanzar múltiples comandos y el cliente los ejecutará uno por uno. Todos los comandos se ejecutan utilizando un solo contexto, por lo que los comandos usados han de estar relacionados.
Para ver los comandos emitidos a un cliente, seleccione primero un cliente:
>> select 1
A continuación, ejecuta coms para ver todos los comandos del cliente:
(Client 1) >> coms
Para ver el comando completo y su salida completa (en el comando coms la salida se trunca para ajustarse a la pantalla):
(Client 1) >> com 1
Flujo de trabajo
Una vez finalizadas todas las instalaciones y la configuración, el workflow de la aplicación es el siguiente:
- El cliente visita la página principal http: //dirección_ip:5000/
- Hace una solicitud de registro al servidor
- Espera órdenes
- Mientras tanto, en el servidor, ejecutas comandos usando el script shell.py
- El cliente está a la espera de los comandos del servidor, hasta que aparece un nuevo, lo lanza y lo ejecuta
- Una vez que haya terminado de ejecutar, enviará el resultado al servidor
- Ahora, usando el comando coms, podemos ver la salida del comando
Manejo de la base de datos
Se ha incluido un script que se usó para pruebas: db_handler.py. Incluye varias funcionas para manejar y probar la base de datos.
Proyecto: https://github.com/Den1al/JSShell
Instalación
Se recomienda usar un entorno virtual y python 3.6. aunque versiones anteriores funcionan también bien:
pyenv virtualenv -p python3.6 venv
pyenv activate venv
virtualenv -p python3.6 venv
source venv/bin/activate
Para ambos:
pip install -r requirements.txt
Características
- Multicliente
- Soporta objetos DOM cyclic
- Scripts Pre flight
- Command queue
- Command Context
Ejecución
Creación de la base de datos:
python db_handler.py create
Iniciar el servidor (en background):
python run.py
Navegar con un navegador a la dirección del servidor:
http://dirección_ip:5000 (El puerto puede ser cambiado)
Abre el shell interactivo
python shell.py
Opcional : Scripts pre flight
Esos son los scripts que se ejecutarán en cada registro de un nuevo cliente. Utilízalos sabiamente :)
Uso
La interfaz de shell contiene varios comandos (puedes verlos usando el comando help).
Utilizando la cola (queue) de comandos, se pueden lanzar múltiples comandos y el cliente los ejecutará uno por uno. Todos los comandos se ejecutan utilizando un solo contexto, por lo que los comandos usados han de estar relacionados.
Para ver los comandos emitidos a un cliente, seleccione primero un cliente:
>> select 1
A continuación, ejecuta coms para ver todos los comandos del cliente:
(Client 1) >> coms
Para ver el comando completo y su salida completa (en el comando coms la salida se trunca para ajustarse a la pantalla):
(Client 1) >> com 1
Flujo de trabajo
Una vez finalizadas todas las instalaciones y la configuración, el workflow de la aplicación es el siguiente:
- El cliente visita la página principal http: //dirección_ip:5000/
- Hace una solicitud de registro al servidor
- Espera órdenes
- Mientras tanto, en el servidor, ejecutas comandos usando el script shell.py
- El cliente está a la espera de los comandos del servidor, hasta que aparece un nuevo, lo lanza y lo ejecuta
- Una vez que haya terminado de ejecutar, enviará el resultado al servidor
- Ahora, usando el comando coms, podemos ver la salida del comando
Manejo de la base de datos
Se ha incluido un script que se usó para pruebas: db_handler.py. Incluye varias funcionas para manejar y probar la base de datos.
Proyecto: https://github.com/Den1al/JSShell
Comentarios
Publicar un comentario