Translated ['src/pentesting-web/account-takeover.md'] to ja

This commit is contained in:
Translator 2025-04-20 14:57:51 +00:00
parent a5652624a6
commit 0bc6fd356c
2 changed files with 73 additions and 23 deletions

View File

@ -4,7 +4,7 @@
## **認証の問題**
アカウントのメールアドレスを変更しようとし、確認プロセスを**確認する必要があります**。もし**弱い**と判明した場合、メールアドレスを意図した被害者のものに変更し、確認します。
アカウントのメールアドレスを変更しようとし、確認プロセスを**確認する必要があります**。もし**弱い**と判断された場合、メールアドレスを意図した被害者のものに変更し、その後確認します。
## **Unicode正規化の問題**
@ -14,10 +14,10 @@
[**このトーク**](https://www.youtube.com/watch?v=CiIyaZ3x49c)で説明されているように、前述の攻撃はサードパーティのアイデンティティプロバイダーを悪用して行うこともできます:
- 被害者に似たメールアドレスを持つサードパーティのアイデンティティでアカウントを作成し、いくつかのUnicode文字を使用します(`vićtim@company.com`)。
- 被害者に似たメールアドレスを持つサードパーティのアイデンティティでアカウントを作成します(例: `vićtim@company.com`)。
- サードパーティのプロバイダーはメールを確認しないべきです。
- アイデンティティプロバイダーがメールを確認する場合、ドメイン部分を攻撃することができるかもしれません`victim@ćompany.com`としてそのドメインを登録し、アイデンティティプロバイダーがドメインのASCIIバージョンを生成し、被害者プラットフォームがドメイン名を正規化することを期待します。
- このアイデンティティプロバイダーを介して被害者プラットフォームにログインし、Unicode文字を正規化し、被害者アカウントにアクセスできるようにします。
- もしアイデンティティプロバイダーがメールを確認する場合、ドメイン部分を攻撃することができるかもしれません。例えば: `victim@ćompany.com`としてそのドメインを登録し、アイデンティティプロバイダーがドメインのasciiバージョンを生成することを期待します。
- このアイデンティティプロバイダーを通じて被害者のプラットフォームにログインし、Unicode文字を正規化して被害者のアカウントにアクセスできるようにします。
詳細については、Unicode正規化に関する文書を参照してください
@ -29,15 +29,15 @@ unicode-injection/unicode-normalization.md
ターゲットシステムが**リセットリンクの再利用を許可する**場合、`gau``wayback`、または`scan.io`などのツールを使用して**さらに多くのリセットリンクを見つける**努力をする必要があります。
## **アカウント乗っ取り前**
## **アカウント乗っ取り前の準備**
1. 被害者のメールアドレスを使用してプラットフォームにサインアップし、パスワードを設定する必要があります(確認を試みる必要がありますが、被害者のメールにアクセスできない場合は不可能になるかもしれません)。
2. 被害者がOAuthを使用してサインアップし、アカウントを確認するまで待つ必要があります。
1. 被害者のメールアドレスを使用してプラットフォームにサインアップし、パスワードを設定ます(確認を試みる必要がありますが、被害者のメールにアクセスできない場合は不可能かもしれません)。
2. 被害者がOAuthを使用してサインアップし、アカウントを確認するまで待ます。
3. 通常のサインアップが確認されることを期待し、被害者のアカウントにアクセスできるようにします。
## **CORSの誤設定によるアカウント乗っ取り**
ページに**CORSの誤設定**が含まれている場合、ユーザーから**機密情報を盗む**ことができ、**アカウントを乗っ取る**か、同じ目的のために認証情報を変更させることができるかもしれません:
ページに**CORSの誤設定**が含まれている場合、ユーザーから**機密情報を盗む**ことができ、**アカウントを乗っ取る**ことができるか、同じ目的のために認証情報を変更させることができるかもしれません:
{{#ref}}
cors-bypass.md
@ -61,7 +61,7 @@ xss-cross-site-scripting/
## **同一オリジン + クッキー**
制限されたXSSやサブドメインの乗っ取りが見つかった場合、クッキーを操作例えば、固定するして被害者アカウントを危険にさらすことができるかもしれません
制限されたXSSやサブドメインの乗っ取りが見つかった場合、クッキーを操作例えば、固定するして被害者アカウントを危険にさらすことができるかもしれません:
{{#ref}}
hacking-with-cookies/
@ -75,7 +75,7 @@ reset-password.md
## **レスポンス操作**
認証レスポンスを**単純なブール値に減らすことができる場合、falseをtrueに変更して**アクセスできるか確認してください
認証レスポンスを**単純なブール値に減らすことができる場合、falseをtrueに変更して**アクセスできるか確認します
## OAuthによるアカウント乗っ取り
@ -103,9 +103,9 @@ oauth-to-account-takeover.md
[このレポート](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea)から:
- 攻撃者が新しいメールアドレスに変更を要求します。
- 攻撃者メールの変更を確認するためのリンクを受け取ります。
- 攻撃者が被害者にリンクを送信し、クリックさせます。
- 攻撃者が新しいメールアドレスに変更をリクエストします。
- 攻撃者メールの変更を確認するためのリンクを受け取ります。
- 攻撃者は被害者にそのリンクを送信し、クリックさせます。
- 被害者のメールアドレスが攻撃者が示したものに変更されます。
- 攻撃者はパスワードを回復し、アカウントを乗っ取ることができます。

View File

@ -471,17 +471,67 @@ window.search = window.search || {};
showResults(true);
}
var branch = lang === "en" ? "master" : lang
fetch(`https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.json`)
.then(response => response.json())
.then(json => init(json))
.catch(error => { // Try to load searchindex.js if fetch failed
var script = document.createElement('script');
script.src = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.js`;
script.onload = () => init(window.search);
document.head.appendChild(script);
(async function loadSearchIndex(lang = window.lang || 'en') {
/* ───────── paths ───────── */
const branch = lang === 'en' ? 'master' : lang;
const baseRemote = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/${branch}`;
const remoteJson = `${baseRemote}/searchindex.json`;
const remoteJs = `${baseRemote}/searchindex.js`;
const localJson = './searchindex.json';
const localJs = './searchindex.js';
const TIMEOUT_MS = 5_000;
/* ───────── helpers ───────── */
const fetchWithTimeout = (url, opt = {}) =>
Promise.race([
fetch(url, opt),
new Promise((_, r) => setTimeout(() => r(new Error('timeout')), TIMEOUT_MS))
]);
const loadScript = src =>
new Promise((resolve, reject) => {
const s = document.createElement('script');
s.src = src;
s.onload = resolve;
s.onerror = reject;
document.head.appendChild(s);
});
/* ───────── 1. remote JSON ───────── */
try {
const r = await fetchWithTimeout(remoteJson);
if (!r.ok) throw new Error(r.status);
return init(await r.json());
} catch (e) {
console.warn('Remote JSON failed →', e);
}
/* ───────── 2. remote JS ───────── */
try {
await loadScript(remoteJs);
return init(window.search);
} catch (e) {
console.warn('Remote JS failed →', e);
}
/* ───────── 3. local JSON ───────── */
try {
const r = await fetch(localJson);
if (!r.ok) throw new Error(r.status);
return init(await r.json());
} catch (e) {
console.warn('Local JSON failed →', e);
}
/* ───────── 4. local JS ───────── */
try {
await loadScript(localJs);
return init(window.search);
} catch (e) {
console.error('Local JS failed →', e);
}
})();
// Exported functions
search.hasFocus = hasFocus;
})(window.search);