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

This commit is contained in:
Translator 2025-04-20 14:57:42 +00:00
parent 198790beef
commit 1f6f61c8f5
2 changed files with 65 additions and 15 deletions

View File

@ -4,7 +4,7 @@
## **Проблема авторизації** ## **Проблема авторизації**
Електронну пошту облікового запису слід спробувати змінити, і процес підтвердження **повинен бути перевірений**. Якщо він виявиться **слабким**, електронну пошту слід змінити на електронну пошту запланованої жертви, а потім підтвердити. Електронну пошту облікового запису слід спробувати змінити, і процес підтвердження **повинен бути перевірений**. Якщо він виявиться **слабким**, електронну пошту слід змінити на адресу запланованої жертви, а потім підтвердити.
## **Проблема нормалізації Unicode** ## **Проблема нормалізації Unicode**
@ -37,7 +37,7 @@ unicode-injection/unicode-normalization.md
## **Неправильна конфігурація CORS для взлому облікового запису** ## **Неправильна конфігурація CORS для взлому облікового запису**
Якщо сторінка містить **неправильні конфігурації CORS**, ви можете **вкрасти чутливу інформацію** у користувача, щоб **взяти під контроль його обліковий запис** або змусити його змінити інформацію для авторизації з тією ж метою: Якщо сторінка містить **неправильні конфігурації CORS**, ви можете **вкрасти чутливу інформацію** у користувача, щоб **взяти під контроль його обліковий запис** або змусити його змінити інформацію про авторизацію з тією ж метою:
{{#ref}} {{#ref}}
cors-bypass.md cors-bypass.md
@ -45,7 +45,7 @@ cors-bypass.md
## **CSRF для взлому облікового запису** ## **CSRF для взлому облікового запису**
Якщо сторінка вразлива до CSRF, ви можете змусити **користувача змінити свій пароль**, електронну пошту або аутентифікацію, щоб потім отримати до неї доступ: Якщо сторінка вразлива до CSRF, ви можете змусити **користувача змінити свій пароль**, електронну пошту або аутентифікацію, щоб потім отримати до них доступ:
{{#ref}} {{#ref}}
csrf-cross-site-request-forgery.md csrf-cross-site-request-forgery.md
@ -106,7 +106,7 @@ oauth-to-account-takeover.md
- Зловмисник запитує зміну своєї електронної пошти на нову - Зловмисник запитує зміну своєї електронної пошти на нову
- Зловмисник отримує посилання для підтвердження зміни електронної пошти - Зловмисник отримує посилання для підтвердження зміни електронної пошти
- Зловмисник надсилає жертві посилання, щоб вона його натиснула - Зловмисник надсилає жертві посилання, щоб вона його натиснула
- Електронна пошта жертви змінюється на ту, що вказав зловмисник - Електронна пошта жертви змінюється на вказану зловмисником
- Зловмисник може відновити пароль і взяти під контроль обліковий запис - Зловмисник може відновити пароль і взяти під контроль обліковий запис
Це також сталося в [**цьому звіті**](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea). Це також сталося в [**цьому звіті**](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea).
@ -114,7 +114,7 @@ oauth-to-account-takeover.md
### Обхід перевірки електронної пошти для взлому облікового запису ### Обхід перевірки електронної пошти для взлому облікового запису
- Зловмисник входить з attacker@test.com і підтверджує електронну пошту під час реєстрації. - Зловмисник входить з attacker@test.com і підтверджує електронну пошту під час реєстрації.
- Зловмисник змінює підтверджену електронну пошту на victim@test.com (без вторинної перевірки при зміні електронної пошти) - Зловмисник змінює підтверджену електронну пошту на victim@test.com (без вторинної перевірки при зміні електронної пошти)
- Тепер веб-сайт дозволяє victim@test.com увійти, і ми обійшли перевірку електронної пошти жертви. - Тепер веб-сайт дозволяє victim@test.com увійти, і ми обійшли перевірку електронної пошти користувача жертви.
### Старі куки ### Старі куки

View File

@ -471,16 +471,66 @@ window.search = window.search || {};
showResults(true); showResults(true);
} }
var branch = lang === "en" ? "master" : lang (async function loadSearchIndex(lang = window.lang || 'en') {
fetch(`https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.json`) /* ───────── paths ───────── */
.then(response => response.json()) const branch = lang === 'en' ? 'master' : lang;
.then(json => init(json)) const baseRemote = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/${branch}`;
.catch(error => { // Try to load searchindex.js if fetch failed const remoteJson = `${baseRemote}/searchindex.json`;
var script = document.createElement('script'); const remoteJs = `${baseRemote}/searchindex.js`;
script.src = `https://raw.githubusercontent.com/HackTricks-wiki/hacktricks/refs/heads/${branch}/searchindex.js`; const localJson = './searchindex.json';
script.onload = () => init(window.search); const localJs = './searchindex.js';
document.head.appendChild(script); 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 // Exported functions
search.hasFocus = hasFocus; search.hasFocus = hasFocus;