Bueno, este post básicamente pretende dar una explicación de lo que es un script de Shell PHP, sus usos, finalidades, sus malos usos y como protegernos de ellos.

A los fines de esta explicación, nos basta con saber que un Shell es un programa que nos facilita la interacción con un sistema operativo, es decir, nos permite controlarlo, en esta definición genérica, tanto el MS-DOS, como las ventanas de Windows, o la consola de Linux, calificarían como Shell.

Extrapolado esto al mundo de la seguridad informática, tenemos que un Shell en PHP, es un programa escrito íntegramente en lenguaje PHP (muy utilizado en sitios y portales webs), que nos brinda una interfase mediante la cual podemos ejecutar comandos, desde la Web (se instala como una pagina Web dinámica), dentro del servidor donde lo alojemos.

Los hay desde muy simples, hasta bastante completos, con amplias funciones , como la de explorar los directorios en el servidor en que se encuentre, crear archivos y eliminar, crear directorios y eliminar, editar archivos en texto plano, establecer una conexión MySQL, PostgreSQL u Oracle, establecer una conexión con NetCat, cambiar permisos a los elementos del servidor, etc.

Ejemplo de Shell PHP - captura parcial

Estos programas de gestión remota, generalmente son usados por Atacantes, para instalarlos en webs de manera ilegitima, con lo cual en esos usos poco éticos, los Shell se utilizarían como troyanos y/o backdoor.

Permiten el control del servidor de una manera que el usuario legitimo desconoce(por eso lo de puerta trasera), y generalmente están ocultos y codificados, infectan el código de los archivos originales de las webs(por eso lo de troyano, es un código oculto y osfucado, para dificultar su detección).

La manera que logra un Hacker Malicioso (La palabra correcta seria Cracker o Atacante) instalar un Shell de php, es aprovechando fallas en las programaciones de los portales Web, o en los programas instalados en los servidores.

Hay distintos sistemas webs que en su funcionamiento necesitan incluir archivos o código externo, y si no están correctamente programados y asegurado el servidor, un atacante podría usar esa debilidad para introducir su código Shell en el servidor.

Hay varias medidas que uno puede tomar para evitar la mayor parte de las vulnerabilidades conocidas:

  • Mantener el software actualizado al día.
  • Configurar correctamente los permisos de ejecución y visibilidad de los archivos del portal Web.
  • Ocultar versiones, mensajes de error e indicios de que configuración tenemos instalada.
  • Incluir carpetas protegidas a las áreas de administración.
  • Realizar un monitoreo periódico de los archivos para ver si no se modifico su tamaño o contenido, ni agregaron nuevos.
  • Cambiar los nombres de los usuarios por defecto.
  • Revisar el Log de acceso y error.
  • Revisar las IPs de origen y actividad para detectar anomalías.
  • Usar contraseñas seguras, cambiarlas periódicamente.
  • Tener un buen antivirus en la PC  desde la cual vamos a administrar el sitio.
  • No usar redes publicas para conectarnos al servidor.
  • Usar software de proveedores confiables y de mantenimiento continuo.
  • Al usar plugins o agregados de desconocidos, revisar que sean seguros internamente.
  • Anotarnos en los boletines de seguridad de los sistemas que estemos usando.
  • Ser concientes del valor de lo que queramos proteger y actuar consecuentemente.
  • Concientizar a todos los usuarios del sistema para que también tomen los recaudos necesarios al utilizarlo.
  • Recordar siempre:

“una cadena es tan fragil como su eslabón mas débil.”

Bueno, esto fue solo una introducción y un par de tips, pero el tema da para mucho más.

Lo dejamos aquí por ahora 🙂