0% encontró este documento útil (0 votos)
139 vistas4 páginas

Vulnerabilidades en Seguridad TIC: Análisis y Soluciones

Este documento contiene 13 ejercicios sobre un programa que tiene vulnerabilidades relacionadas con desbordamientos de búfer. Los ejercicios guían al estudiante a identificar variables clave como "buf" y "ptrs", líneas de código problemáticas, y a explotar las vulnerabilidades mediante el ingreso de cadenas de texto especialmente diseñadas. El último ejercicio pide que el estudiante modifique el código para corregir las vulnerabilidades utilizando funciones seguras.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
139 vistas4 páginas

Vulnerabilidades en Seguridad TIC: Análisis y Soluciones

Este documento contiene 13 ejercicios sobre un programa que tiene vulnerabilidades relacionadas con desbordamientos de búfer. Los ejercicios guían al estudiante a identificar variables clave como "buf" y "ptrs", líneas de código problemáticas, y a explotar las vulnerabilidades mediante el ingreso de cadenas de texto especialmente diseñadas. El último ejercicio pide que el estudiante modifique el código para corregir las vulnerabilidades utilizando funciones seguras.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Proyecto de concienciación en

seguridad de la información

Máster en seguridad TIC

Pablo Gallardo Hiraldo


Máster en seguridad TIC (2018/2019)

EJERCICIO1: Compruebe el resultado que se obtiene cuando se llama


directamente a ./deseos-alt y se le pasa los mismos caracteres de entrada.

EJERCICIO2: el script runbin.sh tiene el siguiente código: while read -r line; do


echo -e $line; done | ./deseos-alt explique el funcionamiento de esta línea.

EJERCICIO3: Realice un resumen de cómo funciona la aplicación: qué se hace en


la función principal del programa, que hace cada una de las funciones que están
definidas en el programa, cuando son llamadas cada una de ellas. Describa
también los diferentes punteros que se definen en el programa y qué utilidad
tienen dentro de la aplicación.

EJERCICIO4: En el programa hay una overflow de la pila. ¿Cuál es el nombre de


la variable que referencia el buffer afectado?

EJERCICIO5: Considere el buffer que ha identificado en el ejercicio anterior. ¿Cuál


es la línea de código que puede provocar el desbordamiento del buffer?.

EJERCICIO6: Hay otra vulnerabilidad, no relacionada con la anterior, que afecta


a una tabla, que no está en la pila, y que se puede indexar fuera de sus límites
(lo cual, entendiéndolo en sentido amplio, es una clase de buffer overflow). ¿Qué
variable contiene esta tabla o buffer?.

EJERCICIO7: Considere el buffer que acaba de identificar. ¿qué línea de código


puede provocar ese desbordamiento del buffer?.

EJERCICIO8: Determine la dirección de los siguientes elementos (la dirección que


ocupan en memoria, no el valor que contienen) que se definen en el programa

2
Máster en seguridad TIC (2018/2019)

(muestra las direcciones en hexadecimal): 1. buf 2. ptrs 3. write_secret 4. p (la


variable local definida dentro del main)

EJERCICIO9: ¿Qué entrada debemos proporcionar al programa de forma que


prtr[s] lea (y entonces intente ejecutar) el contenido de la variable local p en vez
del puntero a función almacenado en el buffer apuntado por ptrs? Puede
determinar la respuesta realizando una pequeña operación matemática con las
direcciones que ha obtenido en el ejercicio anterior (tenga cuidado que tiene en
cuenta el tamaño del puntero cuando haga la aritmética de punteros). Si lo
calcula correctamente, terminará ejecutando la función pat_on_back. Dé la
respuesta como un entero sin signo.

EJERCICIO10: ¿Qué valor debemos escribir de forma que prts[s] lea (e intente
ejecutar) comenzando desde el byte número 65 en buf, esto es buf[64]?
Responda a la cuestión suministrando un valor entero.

EJERCICIO11: La cadena que nos vas a permitir explotar la vulnerabilidad de


inyección de código comentada anteriormente tendrá la siguiente forma:
NUMEJER10\x00CARACTERESDERELLENO\xEE\xEE\xEE\xEE Donde:
- NUMEJER10: el valor entero determinado en el Ejercicio10. -
CARACTERESDERELLENO: cualquier cadena de caracteres que va a actuar de
relleno para llegar hasta la posición 65 de buf.
- \xEE\xEE\xEE\xEE: la dirección de la función a la que queremos saltar (en el
caso de este ejercicio la función write_secret). Tener en cuenta que la
codificación de la dirección debe ser Little endian.

EJERCICIO12: ¿Cuántos bytes necesitas introducir antes de introducir la dirección


de la función write_secret?

EJERCICIO13: Modifique el programa de forma que las vulnerabilidades que


hemos explotado se solucionen. Para ello utilice las funciones seguros que se han
visto en la introducción teórica. A continuación verifique que todas las

3
Máster en seguridad TIC (2018/2019)

operaciones que hemos realizado con anterioridad ya no conllevan ningún


problema de seguridad.

También podría gustarte