From 057d6e8b051268d63677ec5013557947a9916a6c 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 el --- src/pentesting-web/account-takeover.md | 18 +++---- theme/ht_searcher.js | 70 ++++++++++++++++++++++---- 2 files changed, 69 insertions(+), 19 deletions(-) diff --git a/src/pentesting-web/account-takeover.md b/src/pentesting-web/account-takeover.md index 38704e98d..b5bf93bb9 100644 --- a/src/pentesting-web/account-takeover.md +++ b/src/pentesting-web/account-takeover.md @@ -4,7 +4,7 @@ ## **Πρόβλημα Εξουσιοδότησης** -Το email ενός λογαριασμού θα πρέπει να προσπαθήσει να αλλάξει, και η διαδικασία επιβεβαίωσης **πρέπει να εξεταστεί**. Εάν βρεθεί **ασθενής**, το email θα πρέπει να αλλάξει σε αυτό του προοριζόμενου θύματος και στη συνέχεια να επιβεβαιωθεί. +Το email ενός λογαριασμού θα πρέπει να προσπαθήσει να αλλάξει, και η διαδικασία επιβεβαίωσης **πρέπει να εξεταστεί**. Αν βρεθεί **ασθενής**, το email θα πρέπει να αλλάξει σε αυτό του προοριζόμενου θύματος και στη συνέχεια να επιβεβαιωθεί. ## **Πρόβλημα Κανονικοποίησης Unicode** @@ -16,7 +16,7 @@ - Δημιουργήστε έναν λογαριασμό στον τρίτο πάροχο ταυτότητας με παρόμοιο email με το θύμα χρησιμοποιώντας κάποιο χαρακτήρα unicode (`vićtim@company.com`). - Ο τρίτος πάροχος δεν θα πρέπει να επαληθεύσει το email -- Εάν ο πάροχος ταυτότητας επαληθεύσει το email, ίσως μπορείτε να επιτεθείτε στο μέρος του τομέα όπως: `victim@ćompany.com` και να καταχωρήσετε αυτόν τον τομέα και να ελπίζετε ότι ο πάροχος ταυτότητας θα δημιουργήσει την ascii έκδοση του τομέα ενώ η πλατφόρμα του θύματος κανονικοποιεί το όνομα τομέα. +- Αν ο πάροχος ταυτότητας επαληθεύσει το email, ίσως μπορείτε να επιτεθείτε στο μέρος του τομέα όπως: `victim@ćompany.com` και να καταχωρήσετε αυτόν τον τομέα και να ελπίζετε ότι ο πάροχος ταυτότητας θα δημιουργήσει την ascii έκδοση του τομέα ενώ η πλατφόρμα του θύματος κανονικοποιεί το όνομα τομέα. - Συνδεθείτε μέσω αυτού του παρόχου ταυτότητας στην πλατφόρμα του θύματος που θα πρέπει να κανονικοποιήσει τον χαρακτήρα unicode και να σας επιτρέψει να αποκτήσετε πρόσβαση στον λογαριασμό του θύματος. Για περισσότερες λεπτομέρειες, ανατρέξτε στο έγγραφο σχετικά με την Κανονικοποίηση Unicode: @@ -27,7 +27,7 @@ unicode-injection/unicode-normalization.md ## **Επαναχρησιμοποίηση Συνδέσμου Επαναφοράς** -Εάν το σύστημα στόχος επιτρέπει τον **σύνδεσμο επαναφοράς να επαναχρησιμοποιηθεί**, θα πρέπει να καταβληθούν προσπάθειες για **να βρείτε περισσότερους συνδέσμους επαναφοράς** χρησιμοποιώντας εργαλεία όπως `gau`, `wayback`, ή `scan.io`. +Αν το στοχοθετημένο σύστημα επιτρέπει τον **σύνδεσμο επαναφοράς να επαναχρησιμοποιηθεί**, θα πρέπει να καταβληθούν προσπάθειες για **να βρείτε περισσότερους συνδέσμους επαναφοράς** χρησιμοποιώντας εργαλεία όπως `gau`, `wayback`, ή `scan.io`. ## **Προ Ανάληψη Λογαριασμού** @@ -35,9 +35,9 @@ unicode-injection/unicode-normalization.md 2. Θα πρέπει να περιμένετε μέχρι το θύμα να εγγραφεί χρησιμοποιώντας OAuth και να επιβεβαιώσει τον λογαριασμό. 3. Ελπίζεται ότι η κανονική εγγραφή θα επιβεβαιωθεί, επιτρέποντας την πρόσβαση στον λογαριασμό του θύματος. -## **Κακή Διαμόρφωση CORS για Ανάληψη Λογαριασμού** +## **Λάθος Ρύθμιση CORS για Ανάληψη Λογαριασμού** -Εάν η σελίδα περιέχει **κακές διαμορφώσεις CORS** μπορεί να είστε σε θέση να **κλέψετε ευαίσθητες πληροφορίες** από τον χρήστη για να **αναλάβετε τον λογαριασμό του** ή να τον κάνετε να αλλάξει τις πληροφορίες αυθεντικοποίησης για τον ίδιο σκοπό: +Αν η σελίδα περιέχει **λάθη ρύθμισης CORS** μπορεί να είστε σε θέση να **κλέψετε ευαίσθητες πληροφορίες** από τον χρήστη για να **αναλάβετε τον λογαριασμό του** ή να τον κάνετε να αλλάξει τις πληροφορίες αυθεντικοποίησης για τον ίδιο σκοπό: {{#ref}} cors-bypass.md @@ -45,7 +45,7 @@ cors-bypass.md ## **CSRF για Ανάληψη Λογαριασμού** -Εάν η σελίδα είναι ευάλωτη σε CSRF μπορεί να είστε σε θέση να κάνετε τον **χρήστη να τροποποιήσει τον κωδικό πρόσβασής του**, το email ή την αυθεντικοποίηση ώστε να μπορείτε στη συνέχεια να αποκτήσετε πρόσβαση σε αυτό: +Αν η σελίδα είναι ευάλωτη σε CSRF μπορεί να είστε σε θέση να κάνετε τον **χρήστη να τροποποιήσει τον κωδικό πρόσβασής του**, το email ή την αυθεντικοποίηση ώστε να μπορείτε στη συνέχεια να αποκτήσετε πρόσβαση σε αυτό: {{#ref}} csrf-cross-site-request-forgery.md @@ -53,7 +53,7 @@ csrf-cross-site-request-forgery.md ## **XSS για Ανάληψη Λογαριασμού** -Εάν βρείτε ένα XSS στην εφαρμογή μπορεί να είστε σε θέση να κλέψετε cookies, τοπική αποθήκευση, ή πληροφορίες από τη σελίδα που θα μπορούσαν να σας επιτρέψουν να αναλάβετε τον λογαριασμό: +Αν βρείτε ένα XSS στην εφαρμογή μπορεί να είστε σε θέση να κλέψετε cookies, τοπική αποθήκευση, ή πληροφορίες από τη σελίδα που θα μπορούσαν να σας επιτρέψουν να αναλάβετε τον λογαριασμό: {{#ref}} xss-cross-site-scripting/ @@ -61,7 +61,7 @@ xss-cross-site-scripting/ ## **Ίδια Προέλευση + Cookies** -Εάν βρείτε έναν περιορισμένο XSS ή μια ανάληψη υποτομέα, θα μπορούσατε να παίξετε με τα cookies (σταθεροποιώντας τα για παράδειγμα) για να προσπαθήσετε να συμβιβάσετε τον λογαριασμό του θύματος: +Αν βρείτε ένα περιορισμένο XSS ή μια ανάληψη υποτομέα, θα μπορούσατε να παίξετε με τα cookies (σταθεροποιώντας τα για παράδειγμα) για να προσπαθήσετε να συμβιβάσετε τον λογαριασμό του θύματος: {{#ref}} hacking-with-cookies/ @@ -75,7 +75,7 @@ reset-password.md ## **Μανιπουlation Απόκρισης** -Εάν η απόκριση αυθεντικοποίησης μπορούσε να **μειωθεί σε μια απλή boolean απλά προσπαθήστε να αλλάξετε το false σε true** και δείτε αν αποκτάτε πρόσβαση. +Αν η απόκριση αυθεντικοποίησης μπορούσε να **μειωθεί σε μια απλή boolean απλά προσπαθήστε να αλλάξετε το false σε true** και δείτε αν αποκτάτε πρόσβαση. ## OAuth για Ανάληψη Λογαριασμού 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;