Pruebas de seguridad: desbordamientos de búfer

Un desbordamiento del búfer surge cuando un programa intenta almacenar más datos en un área de almacenamiento temporal de datos (búfer) de los que se pretendía almacenar. Dado que los búferes se crean para contener una cantidad finita de datos, la información adicional puede desbordarse en búferes adyacentes, corrompiendo así los datos válidos que contienen.

Ejemplo

A continuación se muestran ejemplos clásicos de desbordamiento de búfer. Demuestra un simple desbordamiento de búfer causado por el primer escenario en el que se basa en datos externos para controlar su comportamiento. No hay forma de limitar la cantidad de datos que el usuario ha ingresado y el comportamiento del programa depende de la cantidad de caracteres que haya introducido el usuario.

...
   char bufr[BUFSIZE]; 
   gets(bufr);
   ...

Las manos en

Step 1- Necesitamos iniciar sesión con nombre y número de habitación para tener acceso a Internet. Aquí está la instantánea del escenario.

Step 2 - También habilitaremos "Mostrar campos de formulario ocultos" en Burp Suite como se muestra a continuación -

Step 3- Ahora enviamos una entrada en el campo de nombre y número de habitación. También intentamos inyectar un número bastante grande en el campo de número de habitación.

Step 4- Los campos ocultos se muestran como se muestra a continuación. Hacemos clic en aceptar términos.

Step 5 - El ataque tiene éxito de tal manera que, como resultado del desbordamiento del búfer, comenzó a leer las ubicaciones de memoria adyacentes y se mostró al usuario como se muestra a continuación.

Step 6- Ahora permítanos iniciar sesión con los datos mostrados. Después de iniciar sesión, se muestra el siguiente mensaje:

Mecanismos preventivos

  • Revisión de código
  • Capacitación para desarrolladores
  • Herramientas del compilador
  • Desarrollando funciones seguras
  • Escaneo periódico