Explorando Linux Shell (Terminal) de forma remota usando PHP Shell


PHP Shell o Shell PHP es un programa o script escrito en PHP (Preprocesador de hipertexto Php) que proporciona Terminal Linux (Shell es un concepto mucho más amplio) en el navegador. PHP Shell le permite ejecutar la mayoría de los comandos de shell en el navegador, pero no todos debido a sus limitaciones.

Actualización: Recientemente, encontré una herramienta muy prometedora llamada 'Wetty (Web + tty)', que proporciona un acceso completo a la terminal de Linux a través de un protocolo HTTP o HTTPS y le permite ejecutar todos los comandos y programas de Linux como si estuviera sentado frente a un terminal real o virtual.

Para obtener más información sobre la instalación y el uso de Wetty, visite: Cómo instalar Wetty para acceder a la terminal Linux a través del navegador web

PHP Shell es muy útil para ejecutar comandos de Shell en un servidor web remoto, similar a Telnet y SSH. Puede ser útil para mover, descomprimir y manejar archivos más grandes o archivos masivos en Web-Server. Administrar y mantener un servidor web usando PHP Shell es mucho más fácil, siempre que el usuario tenga conocimientos prácticos de los programas Shell.

Cuando ya existían Telnet y SSH, cuál es la necesidad de phpshell, es una pregunta que puede surgirle a la mente. La respuesta es: en muchos casos, el firewall es tan restrictivo que nada, aparte de HTTP (S), pasa, en ese caso phpshell le permite obtener acceso al shell en un servidor remoto.

Sin embargo, no puede ejecutar un programa GUI o un script/programa interactivo usando PHP Shell. Podría ser una limitación, pero esta limitación es una bendición, ya que la desactivación de GUI significa mayor seguridad.

Descarga PHP Shell

La última versión se puede descargar desde aquí:

  1. http://sourceforge.net/projects/phpshell/?sourceu003ddlp

Cómo instalar PHP Shell

Como se indicó anteriormente, PHP Shell está escrito en PHP, por lo que no necesita instalarlo, simplemente mueva el archivo archivado a su directorio de trabajo apache/httpd y, por supuesto, debe tener Apache y PHP instalados.

Instale en sistemas basados en Debian usando el comando apt-get.

# apt-get install apache2 
# apt-get install php5 libapache2-mod-auth-mysql php5-mysql
# service apache2 start

Instale en sistemas basados en Red Hat usando el comando yum.

# yum install httpd 
# yum install php php-mysql
# service httpd start

Por defecto, el directorio de trabajo de apache/http es:

en distro/var/www basado en Debian

en distro/var/www/html basado en Red Hat

Nota: Se puede cambiar a cualquier otra carpeta y se recomienda como medida de seguridad.

Mueva el archivo de almacenamiento PHP Shell descargado al directorio de trabajo de Apache. Aquí estoy usando el sistema Debian, por lo que mi directorio de trabajo de Apache es.

# mv phpshell-2.4.tar.gz /var/www/

Descomprimir shell php

# tar -zxvf phpshell-2.4.tar.gz

Elimina el archivo comprimido.

# rm -rf phpshell-2.4.tar.gz

Cambie el nombre de la carpeta de shell php a algo difícil de adivinar, como medida de seguridad. Por ejemplo, me muevo a la carpeta phpshell (ahora tecmint-nix) y cambio el nombre de phpshell.php a index.php para que seas redirigido directamente a la página de índice y no al contenido de la carpeta.

# mv phpshell-2.4 tecmint-nix 
# cd tecmint-nix/
# mv phpshell.php index.php

Bien, es hora de abrir su navegador web y navegar a "http://127.0.0.1/tecmint-nix".

Por defecto, ningún nombre de usuario o contraseña funcionará, por lo tanto, debe agregar el nombre de usuario y la contraseña manualmente.

Para crear un nombre de usuario y contraseña, llame al script pwhash.php que ya está en la carpeta phpshell como “http://127.0.0.1/tecmint-nix/pwhash.php“.

Ingrese el nombre de usuario y la contraseña en la página php anterior y haga clic en "Actualizar".

Como se indica en la sección Resultado, debe agregar la línea sha como tal copiando y pegando en config.php en la sección [usuario].

Abra el archivo config.php con su editor favorito.

# nano config.php

Agrega la línea.

tecmint = "sha1:673a19a5:7e4b922b64a6321716370dad1fed192cdb661170"

Como está en la [sección de usuario], obviamente su sha1 será único basado en su nombre de usuario y contraseña.

Guarde el archivo config.php con los cambios actuales y salga de él.

Ahora es el momento de iniciar sesión. Visite http://127.0.0.1/tecmint-nix. Inicie sesión con su "Nombre de usuario" y "Contraseña".

Sí, ha iniciado sesión con éxito en su phpshell. Ahora puede ejecutar la mayor parte del programa de shell con tanta fluidez como si estuviera ejecutando esos comandos y scripts en su propio sistema.

Ciertos cuellos de botella de PHP Shell

  1. No se admiten entradas adicionales, es decir, una vez que se inicia un programa, no se puede utilizar ningún script interactivo.
  2. Todo el servidor web está configurado para agotar el tiempo de espera en un período de tiempo determinado, digamos 30 segundos. Esta limitación es del servidor web/Apache y no de phpshell.
  3. Cada comando en phpshell debe ser estrictamente un trazador de líneas. Phpshell no entiende el comando en continuación o un comando de varias líneas como en bucles.

Recuerde que es muy importante tener protegido con contraseña PHP Shell, o de lo contrario, todos podrán husmear en sus archivos y quizás también eliminarlos. Tómese el tiempo necesario para proteger su instalación de PHP Shell.

Este artículo tiene como objetivo informarle sobre el aspecto más amplio y la implementación de shell de una manera mucho más lúcida.

Eso es todo por ahora, de mi parte. Pronto estaré aquí de nuevo con otro tema interesante que les encantará leer. Hasta entonces, estad atentos y conectados a tecmint. ¡Disfrutar!