¿Cómo se obliga a un proceso a ejecutar código binario?

0

Quiero entender cómo se explota un proceso vulnerable de Internet en algunas computadoras para ejecutar código binario arbitrario.

Comprendo cómo se podrían usar los desbordamientos de búfer para sobrescribir la dirección de retorno para hacer que el proceso salte a una ubicación que no debía, pero no sé cómo es posible que un proceso ejecute un código binario arbitrario. recibe de un atacante.

Parece que si un atacante envía un código binario a un proceso, nunca se colocará en la sección .text, por lo que seguirá siendo no ejecutable, incluso si "devuelve" entra en él. Los desbordamientos de pila y montón no escribirían en la sección donde se almacena el código, por lo que aún tendrán un bit de no ejecución.

Editar: Para ser más claros, la parte principal que no entiendo es la siguiente:

  • la sección .text donde se almacenan las instrucciones de CPU ensambladas binarias no se puede modificar
  • la sección .data / .bss está marcada como no ejecutable por lo que la información allí solo se tratará como datos, nunca será ejecutada por la CPU
pregunta emberfang 18.05.2014 - 17:00
fuente

1 respuesta

1

Un ataque habitual de desbordamiento de búfer envía al servidor un mensaje que no solo sobrescribe una dirección de retorno, sino que también incluye el código que el atacante desea ejecutar. La dirección de retorno se sobrescribiría para que el programa salte al mensaje, que luego se interpretará como un código y se ejecutará.

A veces no hay suficiente espacio para el código de shell completo. En ese caso, el atacante podría usar otros métodos para colocar su código de shell en una ubicación de memoria conocida. Esto se puede hacer enviando datos a funciones que no son vulnerables a sí mismas pero que aceptan grandes cantidades de datos y las almacenan en una ubicación de memoria predecible.

    
respondido por el Philipp 19.05.2014 - 02:05
fuente

Lea otras preguntas en las etiquetas