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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Basic Information
Code
- Check the example from https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- Or the one from https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (you might need to fill the tcache)
Goal
- 목표는 거의 모든 특정 주소에 메모리를 할당하는 것입니다.
Requirements
- 청크를 할당하고 싶을 때 가짜 청크를 생성합니다:
- 포인터를 자기 자신을 가리키도록 설정하여 무결성 검사를 우회합니다.
- 한 바이트 오버플로우를 사용하여 한 청크에서 다음 청크로 null 바이트를 전송하여
PREV_INUSE
플래그를 수정합니다. - null로 오프셋된 청크의
prev_size
에 자신과 가짜 청크 간의 차이를 표시합니다. - 가짜 청크의 크기도 무결성 검사를 우회하기 위해 동일한 크기로 설정해야 합니다.
- 이러한 청크를 구성하려면 힙 누수가 필요합니다.
Attack
- 공격자가 제어하는 청크 내부에
A
가짜 청크가 생성되어fd
와bk
가 원래 청크를 가리키도록 하여 보호를 우회합니다. - 2개의 다른 청크(
B
와C
)가 할당됩니다. B
에서 한 바이트를 남용하여prev in use
비트를 지우고prev_size
데이터를C
청크가 할당된 위치와 이전에 생성된 가짜A
청크 간의 차이로 덮어씁니다.- 이
prev_size
와 가짜 청크A
의 크기는 검사를 우회하기 위해 동일해야 합니다. - 그런 다음, tcache가 채워집니다.
- 그런 다음,
C
가 해제되어 가짜 청크A
와 통합됩니다. - 그런 다음, 가짜
A
청크에서 시작하여B
청크를 덮는 새로운 청크D
가 생성됩니다. - 여기서 Einherjar의 집이 끝납니다.
- 이는 빠른 빈 공격 또는 Tcache 중독으로 계속될 수 있습니다:
B
를 해제하여 빠른 빈 / Tcache에 추가합니다.B
의fd
가 덮어씌워져 목표 주소를 가리키도록 하여D
청크를 남용합니다(내부에B
가 포함되어 있음).- 그런 다음, 2개의 malloc이 수행되며 두 번째 malloc은 목표 주소를 할당하게 됩니다.
References and other examples
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- CTF https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_einherjar/#2016-seccon-tinypad
- 포인터를 해제한 후 null화되지 않으므로 여전히 해당 데이터에 접근할 수 있습니다. 따라서 청크가 정렬되지 않은 빈에 배치되고 포함된 포인터가 누출됩니다(libc leak) 그리고 새로운 힙이 정렬되지 않은 빈에 배치되어 얻은 포인터에서 힙 주소가 누출됩니다.
- baby-talk. DiceCTF 2024
strtok
에서 null 바이트 오버플로우 버그.- House of Einherjar를 사용하여 겹치는 청크 상황을 만들고 Tcache 중독으로 임의 쓰기 원시를 얻습니다.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.