From 24ff03ea0de216d56d6aded01d1dc73be2077479 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 12 Aug 2024 13:17:58 +0000 Subject: [PATCH] Translated ['binary-exploitation/common-binary-protections-and-bypasses/ --- .../relro.md | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/binary-exploitation/common-binary-protections-and-bypasses/relro.md b/binary-exploitation/common-binary-protections-and-bypasses/relro.md index 5f3a21b47..bdae7ce2a 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/relro.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/relro.md @@ -1,42 +1,59 @@ # Relro +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} + ## Relro -**RELRO**は**Relocation Read-Only**の略で、**GOT (Global Offset Table)**の上書きに関連するリスクを緩和するためにバイナリで使用されるセキュリティ機能です。この概念を明確にするために、**Partial RELRO**と**Full RELRO**の2つの異なるタイプに分けて説明します。 +**RELRO**は**Relocation Read-Only**の略で、**GOT (Global Offset Table)**の上書きに関連するリスクを軽減するためにバイナリで使用されるセキュリティ機能です。**RELRO**保護には2種類あります:(1) **Partial RELRO**と(2) **Full RELRO**です。どちらもELFファイルから**GOT**と**BSS**の順序を変更しますが、結果と影響は異なります。具体的には、**GOT**セクションを**BSS**の*前*に配置します。つまり、**GOT**は**BSS**よりも低いアドレスにあり、したがって**BSS**内の変数をオーバーフローさせることで**GOT**エントリを上書きすることは不可能です(メモリへの書き込みは低いアドレスから高いアドレスに向かって行われることを思い出してください)。 + +この概念を明確にするために、2つの異なるタイプに分解しましょう。 ### **Partial RELRO** -**Partial RELRO**は、バイナリのパフォーマンスに大きな影響を与えることなくセキュリティを向上させるシンプルなアプローチを取ります。**メモリ内のプログラムの変数よりもGOTを上に配置することで、Partial RELROはバッファオーバーフローがGOTに到達して破損させるのを防ぐことを目指します**。 +**Partial RELRO**は、バイナリのパフォーマンスに大きな影響を与えずにセキュリティを強化するためのよりシンプルなアプローチを取ります。Partial RELROは**.gotを読み取り専用にします(GOTセクションの非PLT部分)**。セクションの残りの部分(.got.pltなど)はまだ書き込み可能であり、したがって攻撃の対象となることに注意してください。この**GOT**が**任意の書き込み**の脆弱性から悪用されるのを防ぐことはありません。 -これは**GOTが任意の書き込み**脆弱性から悪用されるのを防ぎません。 +注:デフォルトでは、GCCはPartial RELROでバイナリをコンパイルします。 ### **Full RELRO** -**Full RELRO**は、**GOTと.fini\_array**セクションを完全に**読み取り専用**にすることで保護を強化します。バイナリが開始されると、すべての関数アドレスが解決され、GOTにロードされます。その後、GOTは読み取り専用としてマークされ、ランタイム中にそれに対する変更を防ぎます。 +**Full RELRO**は、**GOT全体(.gotと.got.pltの両方)および.fini\_array**セクションを完全に**読み取り専用**にすることで保護を強化します。バイナリが起動すると、すべての関数アドレスが解決され、GOTにロードされ、その後、GOTは読み取り専用としてマークされ、実行時にそれに対する変更を効果的に防ぎます。 -ただし、Full RELROのトレードオフはパフォーマンスと起動時間です。Full RELROを有効にするには、GOTを読み取り専用にマークする前に起動時にすべての動的シンボルを解決する必要があるため、**Full RELROが有効になっているバイナリはロード時間が長くなる可能性があります**。この追加の起動オーバーヘッドのため、Full RELROはすべてのバイナリでデフォルトで有効になっているわけではありません。 +ただし、Full RELROのトレードオフはパフォーマンスと起動時間にあります。GOTを読み取り専用としてマークする前に、起動時にすべての動的シンボルを解決する必要があるため、**Full RELROが有効なバイナリは読み込み時間が長くなる可能性があります**。この追加の起動オーバーヘッドが、すべてのバイナリでFull RELROがデフォルトで有効になっていない理由です。 -バイナリでFull RELROが**有効**かどうかを確認することができます。 +バイナリでFull RELROが**有効**かどうかを確認することができます: ```bash readelf -l /proc/ID_PROC/exe | grep BIND_NOW ``` ## バイパス -完全なRELROが有効になっている場合、GOTテーブルに書き込む必要がない別の方法を見つけることで任意の実行を得ることができます。 +フルRELROが有効な場合、バイパスする唯一の方法は、任意の実行を得るためにGOTテーブルに書き込む必要のない別の方法を見つけることです。 -**LIBCのGOTは通常Partial RELRO**であるため、任意の書き込みで変更できます。[libcのGOTエントリをターゲットにする](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**に関する詳細情報**。 +**LIBCのGOTは通常、パーシャルRELROです**ので、任意の書き込みで変更できます。詳細は[Targetting libc GOT entries](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**を参照してください。** {% hint style="success" %} -AWSハッキングの学習と実践:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -GCPハッキングの学習と実践: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-HackTricksのサポート +Support HackTricks -* [**購読プラン**](https://github.com/sponsors/carlospolop)をチェック! -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。 +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}