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:

  1. {{$on}}: AngularJS evalúa $on y encuentra el objeto asociado al sistema de eventos.
  2. .constructor: Desde $on, accede al constructor base Function.
  3. ('alert(1)'): Usa el constructor Function para crear una nueva función cuyo cuerpo es alert(1).
  4. (): Invoca la función creada dinámicamente, ejecutando alert(1) en el navegador.

El resultado es el siguiente, completando el laboratorio al actualizar la página:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *