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
: Це можна зробити, або виділивши велику частину, або об'єднавши верхню частину, що змушує купу об'єднувати частини.
Створити перекриваючі частини: Щоб одна частина перекривалася з іншою, що дозволяє подальші маніпуляції з купою.
Підробити фальшиві частини: Щоб обманути аллокатор, змусивши його вважати фальшиву частину легітимною під час операцій з купою.
Objective: Create an overlapping chunk by manipulating the size of a fastbin chunk.
Step 1: Allocate Chunks
Ми виділяємо два шматки по 0x40 байт кожен. Ці шматки будуть поміщені в список швидких бінів після звільнення.
Крок 2: Звільнити шматки
Ми звільняємо обидва шматки, додаючи їх до списку fastbin.
Крок 3: Змінити Розмір Шматка
Ми змінюємо метадані розміру chunk1
на 0xa1. Це критично важливий крок, щоб обманути аллокатор під час консолідації.
Крок 4: Викликати malloc_consolidate
Виділення великого блоку викликає функцію malloc_consolidate
, об'єднуючи маленькі блоки в швидкому бін. Маніпульований розмір chunk1
призводить до його перекриття з chunk2
.
Після консолідації chunk1
перекривається з chunk2
, що дозволяє подальшій експлуатації.
fd
Мета: Створити фейковий блок, маніпулюючи вказівником fd
швидкого біна.
Крок 1: Виділити блоки
Пояснення: Ми виділяємо два шматки, один менший і один більший, щоб налаштувати купу для фейкового шматка.
Крок 2: Створити фейковий шматок
Ми записуємо підроблену метадані частини в chunk2
, щоб змоделювати менші частини.
Крок 3: Звільнити chunk1
Пояснення: Ми звільняємо chunk1
, додаючи його до списку fastbin.
Крок 4: Змінити fd
chunk1
Пояснення: Ми змінюємо вказівник вперед (fd
) chunk1
, щоб він вказував на наш фейковий шматок всередині chunk2
.
Крок 5: Викликати malloc_consolidate
Виділення великого блоку знову викликає malloc_consolidate
, який обробляє фейковий блок.
Фейковий блок стає частиною списку fastbin, що робить його легітимним блоком для подальшої експлуатації.
Техніка House of Rabbit полягає в модифікації розміру блоку fast bin для створення перекриваючих блоків або маніпуляції вказівником fd
для створення фейкових блоків. Це дозволяє зловмисникам підробляти легітимні блоки в купі, що відкриває можливості для різних форм експлуатації. Розуміння та практика цих кроків покращить ваші навички експлуатації купи.