Vue.js
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
XSS Sinks in Vue.js
v-html Direktief
Die v-html
direktief render rou HTML, so enige <script>
(of 'n attribuut soos onerror
) ingebed in ongesuiwerde gebruikersinvoer voer onmiddellik uit.
<div id="app">
<div v-html="htmlContent"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
htmlContent: '<img src=x onerror=alert(1)>'
}
})
</script>
v-bind met src of href
Binding 'n gebruikersstring aan URL-draende eienskappe (href
, src
, xlink:href
, formaction
…) laat payloads soos javascript:alert(1)
toe om te loop wanneer die skakel gevolg word.
<div id="app">
<a v-bind:href="userInput">Click me</a>
</div>
<script>
new Vue({
el: '#app',
data: {
userInput: 'javascript:alert(1)'
}
})
</script>
v-on met gebruiker-beheerde handlers
v-on
kompileer sy waarde met new Function
; as daardie waarde van die gebruiker kom, gee jy vir hulle kode-uitvoering op 'n skinkbord.
<div id="app">
<button v-on:click="malicious">Click me</button>
</div>
<script>
new Vue({
el: '#app',
data: { malicious: 'alert(1)' }
})
</script>
Dinamiese attribuut / gebeurtenis name
Gebruiker-geleverde name in v-bind:[attr]
of v-on:[event]
laat aanvallers toe om enige attribuut of gebeurtenis handler te skep, wat statiese analise en baie CSP-reëls omseil.
<img v-bind:[userAttr]="payload">
<!-- userAttr = 'onerror', payload = 'alert(1)' -->
Dinamiese komponent (<component :is>
)
Die toelaat van gebruikersstringe in :is
kan arbitrêre komponente of inline sjablone monteer—gevaarlik in die blaaiers en katastrofies in SSR.
<component :is="userChoice"></component>
<!-- userChoice = '<script>alert(1)</script>' -->
Onbetroubare sjablone in SSR
Tydens bediener-kant weergawe, loop die sjabloon op jou bediener; die invoeging van gebruiker HTML kan XSS tot volle Afgeleë Kode Uitvoering (RCE) opgradeer. CVE's in vue-template-compiler
bewys die risiko.
// DANGER – never do this
const app = createSSRApp({ template: userProvidedHtml })
Filters / render functions that eval
Erfgoedfilters wat render stringe bou of eval
/new Function
op gebruikersdata aanroep, is 'n ander XSS-vak—vervang hulle met berekende eienskappe.
Vue.filter('run', code => eval(code)) // DANGER
Ander Algemene Kw vulnerabilities in Vue Projekte
Prototipe besoedeling in plugins
Deep-merge helpers in sommige plugins (bv., vue-i18n) het aanvallers toegelaat om na Object.prototype
te skryf.
import merge from 'deepmerge'
merge({}, JSON.parse('{ "__proto__": { "polluted": true } }'))
Oop omleidings met vue-router
Om ongekontroleerde gebruikers-URL's na router.push
of <router-link>
te stuur, kan lei na javascript:
URI's of phishing-domeine.
this.$router.push(this.$route.query.next) // DANGER
CSRF in Axios / fetch
SPAs het steeds bediener-kant CSRF tokens nodig; SameSite koekies alleen kan nie outomaties ingediende kruis-oorsprong POSTs blokkeer nie.
axios.post('/api/transfer', data, {
headers: { 'X-CSRF-TOKEN': token }
})
Click-jacking
Vue-apps kan in rame geplaas word tensy jy beide X-Frame-Options: DENY
en Content-Security-Policy: frame-ancestors 'none'
stuur.
X-Frame-Options: DENY
Content-Security-Policy: frame-ancestors 'none';
Content-Security-Policy valkuils
Die volle Vue-bou benodig unsafe-eval
; skakel oor na die runtime-bou of vooraf-gecompileerde sjablone sodat jy daardie gevaarlike bron kan laat vaar.
Content-Security-Policy: default-src 'self'; script-src 'self';
Verskaffingsketting-aanvalle (node-ipc – Maart 2022)
Die sabotasie van node-ipc—getrek deur Vue CLI—het gewys hoe 'n transitive afhanklikheid arbitrêre kode op ontwikkelingsmasjiene kan uitvoer. Pin weergawes en oudit gereeld.
npm ci --ignore-scripts # safer install
Versterking Kontrolelys
- Sanitiseer elke string voordat dit
v-html
bereik (DOMPurify). - Whitelist toegelate skemas, eienskappe, komponente, en gebeurtenisse.
- Vermy
eval
en dinamiese templates heeltemal. - Patching afhanklikhede weekliks en monitor advies.
- Stuur sterk HTTP koppe (CSP, HSTS, XFO, CSRF).
- Vergrendel jou voorsieningsketting met oudit, vergrendel lêers, en onderteken verbintenisse.
Verwysings
- https://www.stackhawk.com/blog/vue-xss-guide-examples-and-prevention/
- https://medium.com/@isaacwangethi30/vue-js-security-6e246a7613da
- https://vuejs.org/guide/best-practices/security
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.