From 9f7764f1f264e208eaca9811f9bdef43ecb94560 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 20 Apr 2025 14:57:46 +0000 Subject: [PATCH] Translated ['src/pentesting-web/account-takeover.md'] to pl --- src/pentesting-web/account-takeover.md | 16 +++--- theme/ht_searcher.js | 70 ++++++++++++++++++++++---- 2 files changed, 68 insertions(+), 18 deletions(-) diff --git a/src/pentesting-web/account-takeover.md b/src/pentesting-web/account-takeover.md index 6c3d036b7..3a1d530c6 100644 --- a/src/pentesting-web/account-takeover.md +++ b/src/pentesting-web/account-takeover.md @@ -19,7 +19,7 @@ Jak wyjaśniono w [**tej prezentacji**](https://www.youtube.com/watch?v=CiIyaZ3x - Jeśli dostawca tożsamości weryfikuje adres e-mail, być może możesz zaatakować część domeny, na przykład: `victim@ćompany.com` i zarejestrować tę domenę, mając nadzieję, że dostawca tożsamości wygeneruje wersję ascii domeny, podczas gdy platforma ofiary znormalizuje nazwę domeny. - Zaloguj się za pośrednictwem tego dostawcy tożsamości na platformie ofiary, która powinna znormalizować znak unicode i umożliwić dostęp do konta ofiary. -Aby uzyskać więcej informacji, zapoznaj się z dokumentem na temat Normalizacji Unicode: +Aby uzyskać więcej szczegółów, zapoznaj się z dokumentem na temat Normalizacji Unicode: {{#ref}} unicode-injection/unicode-normalization.md @@ -103,17 +103,17 @@ Te techniki manipulacji są skuteczne w scenariuszach, w których JSON jest wyko Z [tego raportu](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea): -- Napastnik prosi o zmianę swojego e-maila na nowy. -- Napastnik otrzymuje link do potwierdzenia zmiany e-maila. -- Napastnik wysyła ofierze link, aby kliknęła w niego. -- E-mail ofiary zostaje zmieniony na ten wskazany przez napastnika. -- Napastnik może odzyskać hasło i przejąć konto. +- Napastnik prosi o zmianę swojego e-maila na nowy +- Napastnik otrzymuje link do potwierdzenia zmiany e-maila +- Napastnik wysyła ofierze link, aby kliknęła +- E-mail ofiary zostaje zmieniony na ten wskazany przez napastnika +- Napastnik może odzyskać hasło i przejąć konto To również miało miejsce w [**tym raporcie**](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea). ### Ominięcie weryfikacji e-maila w celu przejęcia konta - Napastnik loguje się jako attacker@test.com i weryfikuje e-mail podczas rejestracji. -- Napastnik zmienia zweryfikowany e-mail na victim@test.com (brak dodatkowej weryfikacji przy zmianie e-maila). +- Napastnik zmienia zweryfikowany e-mail na victim@test.com (brak dodatkowej weryfikacji przy zmianie e-maila) - Teraz strona pozwala victim@test.com na logowanie, a my ominięliśmy weryfikację e-maila użytkownika ofiary. ### Stare Ciasteczka @@ -121,7 +121,7 @@ To również miało miejsce w [**tym raporcie**](https://dynnyd20.medium.com/one Jak wyjaśniono [**w tym poście**](https://medium.com/@niraj1mahajan/uncovering-the-hidden-vulnerability-how-i-found-an-authentication-bypass-on-shopifys-exchange-cc2729ea31a9), możliwe było zalogowanie się na konto, zapisanie ciasteczek jako uwierzytelniony użytkownik, wylogowanie się, a następnie ponowne zalogowanie.\ Przy nowym logowaniu, chociaż mogą być generowane różne ciasteczka, stare zaczęły działać ponownie. -## Referencje +## Odnośniki - [https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050](https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050) - [https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea) diff --git a/theme/ht_searcher.js b/theme/ht_searcher.js index 52e150d9a..e77213e96 100644 --- a/theme/ht_searcher.js +++ b/theme/ht_searcher.js @@ -471,16 +471,66 @@ 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;