mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/account-takeover.md'] to sr
This commit is contained in:
parent
d5d4186528
commit
6183f81376
@ -16,7 +16,7 @@ Kao što je objašnjeno u [**ovom predavanju**](https://www.youtube.com/watch?v=
|
|||||||
|
|
||||||
- Kreirati nalog kod treće strane sa sličnim email-om kao žrtva koristeći neki unicode karakter (`vićtim@company.com`).
|
- Kreirati nalog kod treće strane sa sličnim email-om kao žrtva koristeći neki unicode karakter (`vićtim@company.com`).
|
||||||
- Treća strana ne bi trebala da verifikuje email
|
- Treća strana ne bi trebala da verifikuje email
|
||||||
- Ako identitetski provajder verifikuje email, možda možete napasti deo domena kao: `victim@ćompany.com` i registrovati taj domen i nadati se da identitetski provajder generiše ascii verziju domena dok platforma žrtve normalizuje naziv domena.
|
- Ako identitetski provajder verifikuje email, možda možete napasti deo domena kao što je: `victim@ćompany.com` i registrovati taj domen i nadati se da identitetski provajder generiše ascii verziju domena dok platforma žrtve normalizuje naziv domena.
|
||||||
- Prijavite se putem ovog identitetskog provajdera na platformu žrtve koja bi trebala normalizovati unicode karakter i omogućiti vam pristup nalogu žrtve.
|
- Prijavite se putem ovog identitetskog provajdera na platformu žrtve koja bi trebala normalizovati unicode karakter i omogućiti vam pristup nalogu žrtve.
|
||||||
|
|
||||||
Za više detalja, pogledajte dokument o normalizaciji Unicode-a:
|
Za više detalja, pogledajte dokument o normalizaciji Unicode-a:
|
||||||
@ -31,7 +31,7 @@ Ako ciljni sistem dozvoljava **ponovno korišćenje reset linka**, treba uložit
|
|||||||
|
|
||||||
## **Pre preuzimanja naloga**
|
## **Pre preuzimanja naloga**
|
||||||
|
|
||||||
1. Email žrtve treba koristiti za registraciju na platformi, i treba postaviti lozinku (pokušaj potvrde treba izvršiti, iako nedostatak pristupa email-ovima žrtve može učiniti ovo nemogućim).
|
1. Email žrtve treba koristiti za registraciju na platformi, a lozinka treba biti postavljena (pokušaj potvrde treba izvršiti, iako nedostatak pristupa email-ovima žrtve može učiniti ovo nemogućim).
|
||||||
2. Treba čekati dok žrtva ne registruje koristeći OAuth i potvrdi nalog.
|
2. Treba čekati dok žrtva ne registruje koristeći OAuth i potvrdi nalog.
|
||||||
3. Nadamo se da će redovna registracija biti potvrđena, omogućavajući pristup nalogu žrtve.
|
3. Nadamo se da će redovna registracija biti potvrđena, omogućavajući pristup nalogu žrtve.
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ xss-cross-site-scripting/
|
|||||||
|
|
||||||
## **Ista domena + Kolačići**
|
## **Ista domena + Kolačići**
|
||||||
|
|
||||||
Ako pronađete ograničen XSS ili preuzimanje poddomena, mogli biste se igrati sa kolačićima (fiksirajući ih na primer) kako biste pokušali da kompromitujete nalog žrtve:
|
Ako pronađete ograničen XSS ili preuzimanje poddomena, mogli biste se igrati sa kolačićima (fiksirajući ih, na primer) kako biste pokušali da kompromitujete nalog žrtve:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
hacking-with-cookies/
|
hacking-with-cookies/
|
||||||
@ -75,7 +75,7 @@ reset-password.md
|
|||||||
|
|
||||||
## **Manipulacija odgovorom**
|
## **Manipulacija odgovorom**
|
||||||
|
|
||||||
Ako se odgovor na autentifikaciju može **smanjiti na jednostavnu boolean vrednost, samo pokušajte da promenite false u true** i vidite da li dobijate bilo kakav pristup.
|
Ako se odgovor na autentifikaciju može **smanjiti na jednostavnu boolean vrednost, pokušajte da promenite false u true** i vidite da li dobijate bilo kakav pristup.
|
||||||
|
|
||||||
## OAuth za preuzimanje naloga
|
## OAuth za preuzimanje naloga
|
||||||
|
|
||||||
@ -86,16 +86,16 @@ oauth-to-account-takeover.md
|
|||||||
## Injekcija Host zaglavlja
|
## Injekcija Host zaglavlja
|
||||||
|
|
||||||
1. Host zaglavlje se menja nakon iniciranja zahteva za resetovanje lozinke.
|
1. Host zaglavlje se menja nakon iniciranja zahteva za resetovanje lozinke.
|
||||||
2. `X-Forwarded-For` proxy zaglavlje se menja na `attacker.com`.
|
2. `X-Forwarded-For` proxy zaglavlje se menja u `attacker.com`.
|
||||||
3. Host, Referrer i Origin zaglavlja se istovremeno menjaju na `attacker.com`.
|
3. Host, Referrer i Origin zaglavlja se istovremeno menjaju u `attacker.com`.
|
||||||
4. Nakon iniciranja resetovanja lozinke i zatim odabira ponovnog slanja maila, koriste se sve tri prethodno navedene metode.
|
4. Nakon iniciranja resetovanja lozinke i zatim odabira ponovnog slanja maila, koriste se sve tri prethodno navedene metode.
|
||||||
|
|
||||||
## Manipulacija odgovorom
|
## Manipulacija odgovorom
|
||||||
|
|
||||||
1. **Manipulacija kodom**: Status kod se menja na `200 OK`.
|
1. **Manipulacija kodom**: Status kod se menja u `200 OK`.
|
||||||
2. **Manipulacija kodom i telom**:
|
2. **Manipulacija kodom i telom**:
|
||||||
- Status kod se menja na `200 OK`.
|
- Status kod se menja u `200 OK`.
|
||||||
- Telo odgovora se menja na `{"success":true}` ili prazan objekat `{}`.
|
- Telo odgovora se menja u `{"success":true}` ili prazan objekat `{}`.
|
||||||
|
|
||||||
Ove tehnike manipulacije su efikasne u scenarijima gde se JSON koristi za prenos i prijem podataka.
|
Ove tehnike manipulacije su efikasne u scenarijima gde se JSON koristi za prenos i prijem podataka.
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ Ove tehnike manipulacije su efikasne u scenarijima gde se JSON koristi za prenos
|
|||||||
Iz [ovog izveštaja](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea):
|
Iz [ovog izveštaja](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea):
|
||||||
|
|
||||||
- Napadač traži da promeni svoj email na novi
|
- Napadač traži da promeni svoj email na novi
|
||||||
- Napadač dobija link za potvrdu promene email-a
|
- Napadač prima link za potvrdu promene email-a
|
||||||
- Napadač šalje žrtvi link da ga klikne
|
- Napadač šalje žrtvi link da ga klikne
|
||||||
- Email žrtve se menja na onaj koji je naznačio napadač
|
- Email žrtve se menja na onaj koji je naznačio napadač
|
||||||
- Napadač može povratiti lozinku i preuzeti nalog
|
- Napadač može povratiti lozinku i preuzeti nalog
|
||||||
|
@ -471,17 +471,67 @@ 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;
|
||||||
})(window.search);
|
})(window.search);
|
Loading…
x
Reference in New Issue
Block a user