House of Einherjar

Reading time: 3 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기

Basic Information

Code

Goal

  • 목표는 거의 모든 특정 주소에 메모리를 할당하는 것입니다.

Requirements

  • 청크를 할당하고 싶을 때 가짜 청크를 생성합니다:
  • 포인터를 자기 자신을 가리키도록 설정하여 무결성 검사를 우회합니다.
  • 한 바이트 오버플로우를 사용하여 한 청크에서 다음 청크로 null 바이트를 전송하여 PREV_INUSE 플래그를 수정합니다.
  • null로 오프셋된 청크의 prev_size에 자신과 가짜 청크 간의 차이를 표시합니다.
  • 가짜 청크의 크기도 무결성 검사를 우회하기 위해 동일한 크기로 설정해야 합니다.
  • 이러한 청크를 구성하려면 힙 누수가 필요합니다.

Attack

  • 공격자가 제어하는 청크 내부에 A 가짜 청크가 생성되어 fdbk가 원래 청크를 가리키도록 하여 보호를 우회합니다.
  • 2개의 다른 청크(BC)가 할당됩니다.
  • B에서 한 바이트를 남용하여 prev in use 비트를 지우고 prev_size 데이터를 C 청크가 할당된 위치와 이전에 생성된 가짜 A 청크 간의 차이로 덮어씁니다.
  • prev_size와 가짜 청크 A의 크기는 검사를 우회하기 위해 동일해야 합니다.
  • 그런 다음, tcache가 채워집니다.
  • 그런 다음, C가 해제되어 가짜 청크 A와 통합됩니다.
  • 그런 다음, 가짜 A 청크에서 시작하여 B 청크를 덮는 새로운 청크 D가 생성됩니다.
  • 여기서 Einherjar의 집이 끝납니다.
  • 이는 빠른 빈 공격 또는 Tcache 중독으로 계속될 수 있습니다:
  • B를 해제하여 빠른 빈 / Tcache에 추가합니다.
  • Bfd가 덮어씌워져 목표 주소를 가리키도록 하여 D 청크를 남용합니다(내부에 B가 포함되어 있음).
  • 그런 다음, 2개의 malloc이 수행되며 두 번째 malloc은 목표 주소를 할당하게 됩니다.

References and other examples

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기