Client Side Template Injection (CSTI)
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Zgłębiaj swoją wiedzę w Bezpieczeństwie Mobilnym z 8kSec Academy. Opanuj bezpieczeństwo iOS i Androida dzięki naszym kursom w trybie samodzielnym i zdobądź certyfikat:
Jest to jak Wstrzykiwanie szablonów po stronie serwera, ale po stronie klienta. SSTI może pozwolić na wykonywanie kodu na zdalnym serwerze, CSTI może pozwolić na wykonywanie dowolnego kodu JavaScript w przeglądarce ofiary.
Testowanie tej podatności jest bardzo podobne do przypadku SSTI, interpreter oczekuje szablonu i go wykona. Na przykład, przy ładunku takim jak {{ 7-7 }}
, jeśli aplikacja jest podatna, zobaczysz 0
, a jeśli nie, zobaczysz oryginalny: {{ 7-7 }}
AngularJS to powszechnie używany framework JavaScript, który interaguje z HTML za pomocą atrybutów znanych jako dyrektywy, z których jedną jest ng-app
. Ta dyrektywa pozwala AngularJS przetwarzać zawartość HTML, umożliwiając wykonywanie wyrażeń JavaScript wewnątrz podwójnych klamr.
W scenariuszach, w których dane wejściowe użytkownika są dynamicznie wstawiane do ciała HTML oznaczonego ng-app
, możliwe jest wykonywanie dowolnego kodu JavaScript. Można to osiągnąć, wykorzystując składnię AngularJS w danych wejściowych. Poniżej znajdują się przykłady ilustrujące, jak można wykonać kod JavaScript:
Możesz znaleźć bardzo podstawowy przykład online tej podatności w AngularJS pod adresem http://jsfiddle.net/2zs2yv7o/ oraz w Burp Suite Academy
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ć.
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 tutaj: https://github.com/azu/vue-client-side-template-injection-example
A really good post on CSTI in VUE can be found in https://portswigger.net/research/evading-defences-using-vuejs-script-gadgets
Credit: Gareth Heyes, Lewis Ardern & PwnFunction
Credit: Mario Heiderich
Sprawdź więcej ładunków VUE w https://portswigger.net/web-security/cross-site-scripting/cheat-sheet#vuejs-reflected
Payload:
Więcej ładunków w https://portswigger.net/research/abusing-javascript-frameworks-to-bypass-xss-mitigations
Zgłębiaj swoją wiedzę w Bezpieczeństwie Mobilnym z 8kSec Academy. Opanuj bezpieczeństwo iOS i Androida dzięki naszym kursom w trybie samodzielnym i zdobądź certyfikat:
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)