Blog

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

26.02.2018 18:30
 
La información escrita en los archivos de registro puede ser de naturaleza sensible y por ende puede proporcionar todo tipo de información valiosa a un pirata informático.
 
Veamos el siguiente archivo "frente.php":
 
<?php
$nombre = $_POST['nombre'];
$clave = $_POST['clave'];
 
$archivo = "protegido/log.txt";
$fh = fopen($archivo, 'a') or die("no se puede abrir el archivo");
$stringData = date("Y/m/d h:i:s", mktime()) . " ";
fwrite($fh, $stringData);
$stringData = $nombre . ":";
fwrite($fh, $stringData);
$stringData = $clave . "\r\n";
fwrite($fh, $stringData);
fclose($fh);
 
if ((($nombre == 'Carlos') && ($clave == 'coche')) || (($nombre == 'Pedro') && ($clave == 'casa'))){
header('Location: admin.php');
} else {
header('Location: frente.php');
}
?>
 
El script escribe el nombre de usuario, la contraseña y la hora al archivo "log.txt" dentro del directorio "protegido/", dejando la información en la ruta de la aplicación por lo que cualquiera que sepa de su existencia (o simplemente esté buscando algo) podrá acceder a la misma. Es de poca utilidad escribir los datos a un archivo de un directorio protegido, tarde o temprano un hacker podría acceder a los mismos.
 
Si bien el registro de información puede ser útil durante la etapa de desarrollo de una aplicación, es importante que los datos registrados una vez que la aplicación entre en uso no expongan información sensible del usuario y/o útil al pirata informático.
 
¡Cuidado, el código fue simplificado para facilitar su comprensión. No use combinaciones usuario/contraseña incrustadas en el programa, mucho menos en texto plano!
 
Artículos relacionados:
 

VULNERABILIDADES DE APLICACIONES WEB: EXPOSICIÓN DE INFORMACIÓN VALIOSA POR MEDIO DE COPIAS DE RESPALDO

26.02.2018 06:35
 
Algunos errores de los programadores o de los administradores de un sitio web o de un servidor pueden parecer triviales, aburridos o tontos. De todos modos convendrá conocerlos porque pueden tener consecuencias graves ya que pueden ser aprovechados por los piratas informáticos para escalar un ataque que en principio puede parecer igual de trivial.
 
Veamos el siguiente script en PHP:
 
$original = $_GET['archivo'];
$respaldo = 'copias_respaldo/'.$original.'~';
copy($original, $respaldo) or die("La copia no pudo realizarse correctamente");
echo 'Copiado con éxito. Volver al editor';
?>
 
El script hará una copia archivo que se ingrese como parámetro y le agregará al final un caracter indicativo de que es un archivo de respaldo: "~". Nótese que la copia fue dejada en la ruta de la aplicación por lo que cualquiera que conozca de su existencia (o simplemente esté buscando algo) podrá acceder al código fuente del archivo original por medio de la red. Un pirata informático puede sacarle mucho provecho a esa información.
 
Este tipo de copias se hacen de forma manual o automática. Sería de poca utilidad ponerlas en un directorio protegido, tarde o temprano un hacker podría acceder a las mismas, por ejemplo, obteniendo una combinación de usuario/contraseña por medio de un ataque de fuerza bruta. Las aplicaciones deben diseñarse para no crear copias de respaldo en los árboles del directorio web servidos por el servidor web. Los archivos copiados deben almacenarse en directorios no accesibles por el servidor web.
 
Esta vulnerabilidad y otras similares son frecuentes. ¿Cuántos de nosotros en algún momento hemos editado algún archivo y hemos dejado el original en los árboles del directorio web servidos por el servidor? A veces hasta dejamos el original de algún archivo al que le hemos corregido alguna vulnerabilidad. Que lo dejemos sin referenciar no hace mucha diferencia, de hecho casi ninguna.
 

LA EMPRESA: LA PUNTUALIDAD ES UN SIGNO DE RESPONSABILIDAD Y RESPETO

23.02.2018 14:54
 
Estar a tiempo en una reunión, cumplir con las funciones encomendadas de manera oportuna es una responsabilidad que asumimos en nuestros centros de trabajo. A veces hay impuntualidad  y no la asumimos como tal sino que aparecen las justificaciones culpando a terceros, como problemas de congestión vehicular, calles y avenidas cerradas, etc.  Debemos tener en cuenta que llegar fuera de hora al trabajo  y estar atrasado en el trabajo en sí, produce estrés.  Si para cumplir con nuestras labores lo hacemos  de manera apresurada se pueden cometer errores. Finalmente, lo que se comunica es el poco interés en el puesto de trabajo y falta de responsabilidad.
 
La puntualidad habla bien de uno, de nuestra manera de organizarnos para planificar actividades, además del interés que le prestamos a lo que hacemos y sobretodo del respeto que tenemos hacia el equipo de trabajo.
 
En las reuniones de capacitación de mi oficina he observado la falta de puntualidad  de algunos de los asistentes y el malestar por parte del personal que llega a tiempo, porque la reunión debe retrasarse esperando algunos minutos y  también genera incomodidad cada vez que alguien ingresa, extendiendo el tiempo programado. En este caso no solo la empresa se afecta porque debe volver a capacitar sobre el mismo tema, sino que el personal que llegó tarde volverá a ser citado porque se perdió parte de la exposición.
 

EL ESTADO DE DESARROLLO DEL PROGRAMA F-35 GENERA PREOCUPACIONES

22.02.2018 09:53
 
Cuando el día 10 del presente mes de febrero la Fuerza Aérea israelí perdió un F-16I por fuego antiaéreo sirio, los expertos se preguntaron por qué, dadas las circunstancias operacionales que le negaron a Israel el elemento sorpresa, no optó por desplegar su furtivo F-35I. Algunos sugirieron que la Fuerza Aérea israelí no confía lo suficiente en la capacidad de la aeronave. De ser así - y no lo estamos afirmando - ¿la desconfianza sería fundada?
 
Según los propios responsables de las pruebas y evaluación del Departamento de Defensa de los Estados Unidos, la idoneidad operativa de la flota F-35 sigue por debajo de los requisitos y depende de soluciones alternativas que no cumplirían con las expectativas del Servicio en situaciones de combate. Durante el año pasado no hubo un cambio sensible en el rendimiento. Para peor, la tasa de disponibilidad mensual en toda la flota se mantienen alrededor del 50 por ciento, una condición que ha existido sin una mejora significativa desde finales del año 2014.
 
El software sigue siendo uno de los mayores dolores de cabeza de este programa de aeronaves tan dependientes del mismo y los retrasos en su desarrollo ya son un problema crónico. Para el colmo el sistema de logística y planificación de ALIS sigue siendo vulnerable a los ciberataques. La combinación de vulnerabilidades y amenazas es considerada grave a tal punto que se sugirió realizar pruebas de operaciones de aeronaves sin acceso a ALIS durante períodos prolongados.
 
Los problemas no terminan ahí: existen restricciones en el reabastecimiento aéreo, deficiencias técnicas clave que afectan el disparo de los misiles aire-aire AIM-120 y deficiencias relacionadas con el sistema de lanzamiento de armas aire-tierra para apoyar a las tropas en tierra. Por su parte el cañón ha fallado constantemente contra los objetivos terrestres durante las pruebas de ametrallamiento; el arma dispara largo y a la derecha. Este último problema es más grave en el F-35A que en las otras dos versiones.
 
La versión F-35B tiene problemas propios: uno de ellos es que siendo la más pesada de las tres variantes generó problemas para encontrar un neumático lo suficientemente fuerte para los aterrizajes convencionales de alta velocidad, lo suficientemente suave como para amortiguar los aterrizajes verticales y lo suficientemente liviano para la estructura  existente de la aeronave cuyo peso siempre estuvo en el límite superior de lo conveniente o incluso por encima del mismo. La vida promedio de los neumáticos del F-35B es inferior a 10 aterrizajes.
 
Queremos agregar algo más. La variante F-35B tiene menor autonomía y capacidad de carga de armas que la de despegue y aterrizaje convencionales. Para un objetivo de 300 millas náuticas de distancia desde el portaaviones, el F-35B puede volar sólo 20 minutos sobre su objetivo antes de tener que regresar en comparación con los 80 minutos que podría tomarse el avión convencional. Cuando Gran Bretaña optó por portaaviones preparados para el despegue corto y el aterrizaje vertical ató su destino aeronaval a esta aeronave. Por esa decisión su capacidad de proyección estratégica se verá drásticamente reducida.
 

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!   

<< 112 | 113 | 114 | 115 | 116 >>