House of Einherjar
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
또는 https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation에서 확인하기 (tcache를 채워야 할 수도 있음)
거의 모든 특정 주소에 메모리를 할당하는 것이 목표입니다.
청크를 할당할 때 가짜 청크를 생성합니다:
포인터를 자기 자신을 가리키도록 설정하여 유효성 검사를 우회합니다.
한 청크에서 다음 청크로 null 바이트를 사용한 1바이트 오버플로우로 PREV_INUSE
플래그를 수정합니다.
off-by-null 악용된 청크의 prev_size
에 자기 자신과 가짜 청크 간의 차이를 표시합니다.
가짜 청크의 크기도 유효성 검사를 우회하기 위해 동일한 크기로 설정해야 합니다.
이러한 청크를 구성하기 위해서는 힙 누수가 필요합니다.
공격자가 제어하는 청크 내부에 A
가짜 청크가 생성되고, fd
와 bk
가 원래 청크를 가리키도록 설정하여 보호를 우회합니다.
2개의 다른 청크(B
와 C
)가 할당됩니다.
B
에서 off by one을 악용하여 prev in use
비트를 지우고 prev_size
데이터를 C
청크가 할당된 위치와 이전에 생성된 가짜 A
청크 간의 차이로 덮어씁니다.
이 prev_size
와 가짜 청크 A
의 크기는 검사를 우회하기 위해 동일해야 합니다.
그런 다음, tcache가 채워집니다.
그 후, C
가 해제되어 가짜 청크 A
와 통합됩니다.
그런 다음, 가짜 A
청크에서 시작하여 B
청크를 덮는 새로운 청크 D
가 생성됩니다.
여기서 House of Einherjar가 끝납니다.
이는 빠른 빈 공격 또는 Tcache 오염으로 계속될 수 있습니다:
B
를 해제하여 빠른 빈 / Tcache에 추가합니다.
B
의 fd
가 덮어씌워져 목표 주소를 가리키도록 하여 D
청크를 악용합니다 (이 청크는 B
를 포함하고 있습니다).
그런 다음, 2개의 malloc이 수행되고 두 번째 malloc이 목표 주소를 할당하게 됩니다.
포인터를 해제한 후 nullified되지 않으므로 여전히 데이터에 접근할 수 있습니다. 따라서 청크가 정렬되지 않은 빈에 배치되고 포함된 포인터가 누출됩니다 (libc leak) 그리고 새로운 힙이 정렬되지 않은 빈에 배치되어 얻은 포인터에서 힙 주소가 누출됩니다.
strtok
에서 null-byte 오버플로우 버그.
House of Einherjar를 사용하여 겹치는 청크 상황을 만들고 Tcache 오염으로 임의 쓰기 원시를 얻습니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)