mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-29 08:01:00 +00:00
5.3 KiB
5.3 KiB
Off by one overflow
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- **💬 Discordグループ**に参加するか、telegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローする
- ハッキングトリックを共有するには、 HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出してください。
基本情報
1バイトのオーバーフローへのアクセスを持つことで、攻撃者は前のサイズのメタデータ情報を変更し、実際に解放されるチャンクを改ざんすることができ、最終的には別の合法的なチャンクを含むチャンクを生成できます。
コード例:
- https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking_free_chunks.c
- この攻撃はTcachesの使用によりもはや機能しません。
- さらに、より大きなチャンクを使用して悪用しようとすると、エラーが発生します:
malloc(): invalid next size (unsorted)
ゴール
- チャンクを別のチャンクの中に含ませ、その2番目のチャンクに対する書き込みアクセスを可能にし、含まれるチャンクを上書きできるようにする
必要条件
- 前のサイズのメタデータ情報を変更するための1バイトのオーバーフロー
攻撃
- 3つのメモリチャンク(a、b、c)が順番に予約されます。その後、中間のチャンクが解放されます。最初のチャンクには1バイトのオーバーフロー脆弱性があり、攻撃者はそれを悪用して0x00を挿入します(前のバイトが0x10であれば、中間のチャンクが実際より0x10小さいことを示します)。
- 次に、中間の解放されたチャンク(b)に2つのより小さなチャンクが割り当てられますが、
b + b->size
はcチャンクを更新しないため、指定されたアドレスが適切なサイズよりも小さいためです。 - 次に、b1とcが解放されます。
c - c->prev_size
はまだb(今はb1)を指しているため、両方が1つのチャンクに統合されます。ただし、b2はまだb1とcの間にあります。 - 最後に、新しいmallocが実行され、このメモリ領域を再取得し、実際にb2を含むことになり、新しいmallocの所有者がb2の内容を制御できるようになります。
この画像は攻撃を完璧に説明しています:
参考文献
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- **💬 Discordグループ**に参加するか、telegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローする
- ハッキングトリックを共有するには、 HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出してください。