House of Einherjar
Reading time: 6 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
コード
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c の例を確認してください
- または https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation の例(tcacheを埋める必要があるかもしれません)
目標
- ほぼ任意の特定のアドレスにメモリを割り当てることが目標です。
要件
- チャンクを割り当てたいときにフェイクチャンクを作成すること:
- サニティチェックを回避するためにポインタを自分自身を指すように設定する
- 一つのチャンクから次のチャンクへのヌルバイトを使った1バイトのオーバーフローで
PREV_INUSE
フラグを変更する。 - ヌルオフバイの悪用されたチャンクの
prev_size
に自分自身とフェイクチャンクの違いを示す - フェイクチャンクのサイズもサニティチェックを回避するために同じサイズに設定されている必要があります
- これらのチャンクを構築するためには、ヒープリークが必要です。
攻撃
- 攻撃者が制御するチャンク内に
A
フェイクチャンクが作成され、fd
とbk
が元のチャンクを指すように設定されて保護を回避します - 2つの他のチャンク(
B
とC
)が割り当てられます B
のオフバイワンを悪用してprev in use
ビットがクリアされ、prev_size
データがC
チャンクが割り当てられる場所と以前に生成されたフェイクA
チャンクの違いで上書きされます- この
prev_size
とフェイクチャンクA
のサイズはチェックを回避するために同じでなければなりません。 - 次に、tcacheが埋められます
- その後、
C
が解放され、フェイクチャンクA
と統合されます - 次に、新しいチャンク
D
が作成され、フェイクA
チャンクから始まりB
チャンクを覆います - エインヘリヤルの家はここで終了します
- これはファストビン攻撃またはTcacheポイズニングで続けることができます:
B
を解放してファストビン/Tcacheに追加しますB
のfd
が上書きされ、ターゲットアドレスを指すようにし、D
チャンクを悪用します(B
が内部に含まれているため)- 次に、2つのmallocが行われ、2つ目はターゲットアドレスを割り当てることになります
参考文献と他の例
- 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
- ポインタを解放した後、それらはヌル化されないため、データにアクセスすることがまだ可能です。したがって、チャンクが未整理ビンに配置され、その中に含まれるポインタが漏洩します(libc leak)そして、新しいヒープが未整理ビンに配置され、取得したポインタからヒープアドレスが漏洩します。
- baby-talk. DiceCTF 2024
strtok
のヌルバイトオーバーフローバグ。- エインヘリヤルの家を使用してオーバーラッピングチャンクの状況を取得し、Tcacheポイズニングで任意の書き込みプリミティブを取得します。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。