Esto significa que si dos procesos intentan acceder a un mismo recurso compartido al mismo tiempo, puede ocurrir que la salida de uno o ambos procesos sea impredecible, o incluso que se produzca un comportamiento no deseado en el sistema.
Los atacantes pueden aprovecharse de las condiciones de carrera para llevar a cabo ataques de denegación de servicio (DoS), sobrescribir datos críticos, obtener acceso no autorizado a recursos, o incluso ejecutar código malicioso en el sistema.
Por ejemplo, supongamos que dos procesos intentan acceder a un archivo al mismo tiempo: uno para leer y el otro para escribir. Si no hay un mecanismo adecuado para sincronizar el acceso al archivo, puede ocurrir que el proceso de lectura lea datos incorrectos del archivo, o que el proceso de escritura sobrescriba datos importantes que necesitan ser preservados.
El impacto de las condiciones de carrera en la seguridad depende de la naturaleza del recurso compartido y del tipo de ataque que se pueda llevar a cabo. En general, las condiciones de carrera pueden permitir a los atacantes acceder a recursos críticos, modificar datos importantes, o incluso tomar el control completo del sistema. Por lo tanto, es importante que los desarrolladores y administradores de sistemas tomen medidas para evitar y mitigar las condiciones de carrera en sus sistemas.
La aplicación muestra un cuadro de entrada, donde puede insertar su nombre de usuario e ir a la siguiente pantalla, haciendo clic en "Hacerlo mío".
La aplicación verifica si el nombre de usuario contiene caracteres especiales como `"` y `\` y los borra. También aplica un filtrado estricto en el texto utilizando el siguiente regex: [A-Za-z0-9 ]**
- elimina `"` y `\` del nombre de usuario.
- abre `hello.sh` archivo.
- escribe un comando en él.
- cierra el archivo.
- registra información útil.
- comprueba si el nombre de usuario está en el formato `[A-Za-z0-9 ]*`
- devuelve el nombre de usuario si el regex tiene éxito.
• 2).boot_clean() que elimina todos los archivos de hola (`hello.sh` y `hello.txt`).
• 3).boot_run() ejecuta el `hello.sh` archivo.
• 4). boot_reset()restablece el sistema a la configuración predeterminada
se crea el archivo hello.sh con el contenido de hello.txt, además de que crea dos contenidos en log.txt de fecha
Cuando intentamos inyectar código nos limpia el archivo hello.txt por tanto la bash del archivo sh no lo puede ejecutar .
O lo podemos hacer mediante un script;
2 Escenario
Esta es la web.
Es decir ponemos lo que sea y nos descarga el siguiente archivo.
Si vemos el código.
Si observamos el código, vemos que la aplicación obtiene el parámetro de consulta, escribe en un archivo llamado shared-file.txt, luego abre el archivo y lo envía de vuelta como respuesta.
Hay un margen entre cuando mete el contenido en el archivo y luego lo presenta para que lo descarguemos.
También si hay muchos usuarios creando archivos muy rápido nosotros podríamos llegar a verlos, lo hacemos mediante un bucle infinito
Interceptamos la petición y mientras tanto enviaremos un par de solicitudes de Burpsuite:
Y al ejecutarlo con el bucle infinito podemos ver el archivo de la otra persona:
Si miramos en los registros veremos:
No hay comentarios:
Publicar un comentario