
Descripción
This lab contains a DOM-based cross-site scripting vulnerability in a AngularJS expression within the search functionality.
AngularJS is a popular JavaScript library, which scans the contents of HTML nodes containing the ng-app
attribute (also known as an AngularJS directive). When a directive is added to the HTML code, you can execute JavaScript expressions within double curly braces. This technique is useful when angle brackets are being encoded.
To solve this lab, perform a cross-site scripting attack that executes an AngularJS expression and calls the alert
function.
DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded writeup
Al entrar vemos un blog con la barra de búsqueda que nos ha dicho la descripción del laboratorio que es vulnerable a XSS. En el código de la página vemos que la etiqueta body tiene el atributo ‘ng-app’:

Esto confirma que la página usa AngularJS, por lo que el código para realizar XSS es el siguiente:
{{$on.constructor('alert(1)')()}}
Lo que hace este código es lo siguiente:
{{$on}}
: AngularJS evalúa$on
y encuentra el objeto asociado al sistema de eventos..constructor
: Desde$on
, accede al constructor baseFunction
.('alert(1)')
: Usa el constructorFunction
para crear una nueva función cuyo cuerpo esalert(1)
.()
: Invoca la función creada dinámicamente, ejecutandoalert(1)
en el navegador.
El resultado es el siguiente, completando el laboratorio al actualizar la página:
