Large Bin Attack
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
大きなビンとは何かについての詳細は、このページを確認してください:
Bins & Memory Allocationshow2heap - large bin attackに素晴らしい例があります。
基本的に、最新の「現在の」glibcバージョン(2.35)では、**P->bk_nextsize
**がチェックされておらず、特定の条件が満たされると、大きなビンチャンクの値で任意のアドレスを変更できることがわかります。
その例では、次の条件が見つかります:
大きなチャンクが割り当てられる
最初のものより小さいが同じインデックスの大きなチャンクが割り当てられる
ビン内で最初に挿入される必要があるため、小さくなければならない
(トップチャンクとのマージを防ぐためのチャンクが作成される)
その後、最初の大きなチャンクが解放され、それより大きな新しいチャンクが割り当てられる -> Chunk1が大きなビンに移動
次に、2番目の大きなチャンクが解放される
ここで脆弱性:攻撃者はchunk1->bk_nextsize
を[target-0x20]
に変更できる
その後、チャンク2よりも大きなチャンクが割り当てられるため、チャンク2が大きなビンに挿入され、アドレスchunk1->bk_nextsize->fd_nextsize
がチャンク2のアドレスで上書きされる
他にも潜在的なシナリオがありますが、重要なのは、ビン内の現在のXチャンクよりも小さいチャンクを大きなビンに追加することです。したがって、それはビン内のXの直前に挿入される必要があり、Xの**bk_nextsize
**を変更できる必要があります。そこに小さいチャンクのアドレスが書き込まれるからです。
これはmallocからの関連コードです。アドレスがどのように上書きされたかを理解するためにコメントが追加されています:
これは、libcのglobal_max_fast
グローバル変数を上書きするために使用される可能性があり、より大きなチャンクでのファストビン攻撃を悪用することができます。
この攻撃の別の優れた説明は、guyinatuxedoで見つけることができます。
how2heapに表示されるのと同じ状況での大きなビン攻撃。
書き込みプリミティブはより複雑で、global_max_fast
はここでは無意味です。
エクスプロイトを完了するにはFSOPが必要です。
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)