hacktricks/binary-exploitation/heap/house-of-einherjar.md

4 KiB

Casa de Einherjar

Aprende hacking en AWS de cero a héroe con htARTE (Experto en Equipo Rojo de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

Información Básica

Código

Objetivo

  • El objetivo es asignar memoria en casi cualquier dirección específica.

Requisitos

  • Crear un chunk falso cuando queremos asignar un chunk:
  • Establecer punteros para que apunten a sí mismos y evadir las comprobaciones de integridad
  • Desbordar por uno de un chunk a otro para modificar el previo en uso
  • Indicar en el prev_size del chunk abusado por desbordamiento por uno la diferencia entre él mismo y el chunk falso
  • El tamaño del chunk falso también debe haber sido establecido con el mismo tamaño para evadir las comprobaciones de integridad
  • Para construir estos chunks, necesitarás una fuga de heap.

Ataque

  • Se crea un chunk falso dentro de un chunk controlado por el atacante apuntando con fd y bk al chunk original para evadir protecciones
  • Se asignan 2 otros chunks (B y C)
  • Abusando del desbordamiento por uno en el chunk B, se limpia el bit prev in use y se sobrescribe los datos de prev_size con la diferencia entre el lugar donde se asigna el chunk C, al chunk falso A generado antes
  • Este prev_size y el tamaño en el chunk falso A deben ser iguales para evadir las comprobaciones.
  • Luego, se llena la tcache
  • Luego, se libera C para que se consolide con el chunk falso A
  • Luego, se crea un nuevo chunk D que comenzará en el chunk falso A y cubrirá el chunk B
  • La casa de Einherjar termina aquí
  • Esto puede continuar con un ataque de fast bin:
  • Liberar B para agregarlo al fast bin
  • Se sobrescribe el fd de B haciendo que apunte a la dirección objetivo abusando del chunk D (ya que contiene a B dentro)
  • Luego, se realizan 2 mallocs y el segundo va a estar asignando la dirección objetivo

Referencias y otros ejemplos