House of Rabbit
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
빠른 빈 fd 포인터 또는 크기를 수정할 수 있는 능력: 이는 빠른 빈의 청크의 전방 포인터 또는 크기를 변경할 수 있음을 의미합니다.
malloc_consolidate
를 트리거할 수 있는 능력: 이는 큰 청크를 할당하거나 상단 청크를 병합하여 힙이 청크를 통합하도록 강제할 수 있습니다.
겹치는 청크 생성: 하나의 청크가 다른 청크와 겹치도록 하여 추가적인 힙 조작을 가능하게 합니다.
가짜 청크 위조: 힙 작업 중에 할당기를 속여 가짜 청크를 합법적인 청크로 취급하게 합니다.
목표: 빠른 빈 청크의 크기를 조작하여 겹치는 청크를 생성합니다.
1단계: 청크 할당
우리는 각각 0x40 바이트인 두 개의 청크를 할당합니다. 이 청크는 해제되면 빠른 빈 목록에 배치됩니다.
Step 2: Free Chunks
우리는 두 청크를 해제하고, 이를 fastbin 목록에 추가합니다.
Step 3: 청크 크기 수정
우리는 chunk1
의 크기 메타데이터를 0xa1로 변경합니다. 이는 통합 중에 할당자를 속이기 위한 중요한 단계입니다.
Step 4: Trigger malloc_consolidate
Allocating a large chunk triggers the malloc_consolidate
function, merging small chunks in the fast bin. The manipulated size of chunk1
causes it to overlap with chunk2
.
After consolidation, chunk1
overlaps with chunk2
, allowing for further exploitation.
fd
pointerObjective: Create a fake chunk by manipulating the fast bin fd
pointer.
Step 1: Allocate Chunks
설명: 우리는 가짜 청크를 설정하기 위해 두 개의 청크, 하나는 더 작고 하나는 더 큰 청크를 할당합니다.
단계 2: 가짜 청크 만들기
chunk2
에 가짜 청크 메타데이터를 작성하여 더 작은 청크를 시뮬레이션합니다.
3단계: chunk1
해제
설명: 우리는 chunk1
을 해제하여 fastbin 목록에 추가합니다.
단계 4: chunk1
의 fd
수정
설명: 우리는 chunk1
의 포워드 포인터(fd
)를 chunk2
내부의 가짜 청크를 가리키도록 변경합니다.
단계 5: malloc_consolidate
트리거하기
Allocating a large chunk again triggers malloc_consolidate
, which processes the fake chunk.
The fake chunk becomes part of the fastbin list, making it a legitimate chunk for further exploitation.
House of Rabbit 기법은 빠른 빈 청크의 크기를 수정하여 겹치는 청크를 생성하거나 fd
포인터를 조작하여 가짜 청크를 만드는 것을 포함합니다. 이를 통해 공격자는 힙에서 합법적인 청크를 위조할 수 있어 다양한 형태의 악용이 가능해집니다. 이러한 단계를 이해하고 연습하면 힙 악용 기술이 향상됩니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)