sábado, 17 de enero de 2015

PHP HARDENING ILUSTRADO - PARTE 1




Aplicando Seguridad en la Configuración en Tiempo de Ejecución

Bueno amigos como venimos hablando de diferentes cosas de seguridad informática, hoy toca el turno que hablemos de lo que debemos de configurar en PHP para que tenga de una forma básica seguridad cuando se ejecuta código programado en PHP.

Este artículo lo llame:

"PHP HARDENING - ILUSTRADO" 

Se enfocará en una de las partes mas importantes de PHP, que es en el Tiempo de Ejecución que esta íntimamente relacionado  con  la forma en que se ejecutaran las diferentes instrucciones de PHP y daremos ejemplos de ataques que se podrían realizar cuando esta mal configurado el parámetro del que hablemos.
 .
Primeramente daremos una definición de lo que es PHP pero esta la tomaremos de PHP.NET ya que lo importante es la seguridad que le pondremos directamente al PHP.INI.
 .
QUE ES PHP? 

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML.

Pero además en su forma básica es interpretado y también puede ser COMPILADO/EMBEDIDO lo que en ingles seria (Compiled/Embedded) que es el proceso de convertirlo a un Portable ejecutable (PE) Windows.

Pero ¿qué significa realmente? 
 
Tomaremos como base el código que nos da la página oficial PHP.net:
.



En lugar de usar muchos comandos para mostrar HTML (como en C o en Perl), las páginas de PHP contienen HTML con código incrustado que hace "algo" (en este caso, mostrar "¡Hola, soy un script de PHP!). El código de PHP está encerrado entre las etiquetas especiales de comienzo y final <?php y ?> que permiten entrar y salir del "modo PHP".

Lo que distingue a PHP de algo del lado del cliente como Javascript es que el código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El cliente recibirá el resultado de ejecutar el script, aunque no se sabrá el código subyacente que era. El servidor web puede ser configurado incluso para que procese todos los ficheros HTML con PHP, por lo que no hay manera de que los usuarios puedan saber qué se tiene debajo de la manga.

Ahora después de esta breve descripción de PHP empezaremos con lo que realmente nos importa vamos a ponerle Seguridad Básica al archivo PHP.INI que es el archivo encargado de la configuración y es leído al arrancar PHP cuando lo tenemos instalado como modulo del servidor web. 

Nota: cabe señalar que aquí hablaremos de la configuración de su seguridad básica del archivo PHP.ini  y no hablaremos de como escribir código de una página web de forma segura o como asegurar el código que escribes en PHP,  ese tema sera en otro artículo.

ok continuemos, entremos en detalle:


**************************
ERROR HANDLING AND LOGGING
************************** 


Primeramente hablaremos de una opción muy importante y que en muchos casos eh visto que este tipo de sección del PHP.ini si no se configura como lo haremos ahorita, mostrará mucha información al atacante al momento de buscar vulnerabilidades en el código de la página web:
.
.


Como sabemos estas opciones afectan al medio ambiente de ejecución de PHP y tienen que ver con todo lo referente al manejo y despliegue de los mensajes que va teniendo el código ejecutado en un servidor con el modulo de PHP instalado.

pero como podemos ver en la imagen tomada del php.ini arriba en su configuración básica esta activada la opción:

ERROR_REPORTING = E_ALL & ~E_NOTICE

y amigos esto es algo que NO debe de estar activado del lado del cliente, ya que esta opción es usada por los hackers para desplegar y obtener información como los son mensajes de algún error, noticia, precauciones, etc. como se muestra en la imagen siguiente que al leer el codigo de la pagina web   nos manda un mensaje con un NOTICE.




por eso es importante desactivar esa opción

 como en lineas siguientes les mostrare donde y como la desactivamos, simplemente le insertamos antes del parametro un ";" el cual la desactivará y ya no mostrará ningún mensaje básicamente quedando así el parámetro:


;ERROR_REPORTING = E_ALL & ~E_NOTICE

y con esto primera opción lista 

quedaría asi el despliegue de la información en la pagina:



NOTA: cabe señalar que esto no es el PLUS ULTRA que te protegerá contra esos ataques, esta protección es básica y pondrá en aprietos a los hacker´s novatos solamente.

Recuerden que entre menos datos muestres a los que visitan tu pagina !MEJOR!

************************************* 


Esperen la Segunda Parte que serán muchas partes  jejejejej y como siempre desde los años 90´s eh dicho en mis tutoriales al final:

! creo que este arroz ya se coció !  

necesitas conferencias de Seguridad Informática - Contactame 

http://www.x25.org.mx/curriculum/
www.ccat.edu.mx 





 

7 comentarios:

  1. Muy bien el contenido gracias por compartir, esperando proximos posts!!

    ResponderEliminar
  2. Así es, el mostrar los errores de ejecución, puede "costarte muy caro"...

    ResponderEliminar
  3. muy buen aporte esperamos los siguients..post:!

    ResponderEliminar
  4. exacto amigos y en las opciones que veremos en unos dias pondre mas tips para asegurar basicamente nuestros sistemas

    ResponderEliminar

Crowdstrike -> Solución de errores de actualización de CrowdStrike con BitLocker habilitado

En este pequeño articulo ver como componer el problema de CROWDSTRIKE cuando esta habilitado el BITLOCKER, cabe resaltar que puede ser una e...