Как использовать XSS в Angular с отключенным $ sceProvider - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь внедрить уязвимое приложение XSS, чтобы впоследствии я мог улучшить аспекты безопасности, используя принципы доменного управления. Внешний интерфейс реализован с AngularJS, для которого я отключил $ sceProvider. Тем не менее, любой из примеров атак XSS, которые я пробовал до сих пор, не работал.

HTML-страница:

<div class="row" ng-init="loadArticles()">
    <h1>Existing articles</h1>
    <table id="tabela1"  class="table table-striped table-hover">
        <thead>
        <tr>
            <th>Book title: </th>
            <th>Description: </th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="b in BOOKS track by $index" >
            <td style="padding-right: 15px">{{b.title.value}}</td>
            <td style="padding-right: 15px">{{b.description.value}}</td>
        </tr>
        </tbody>
    </table>
</div>
</div>

ArticleController.js

$scope.loadArticles = function () {
    console.log("loading articles");

    var url = "/api/article/getAll";
    $.ajax({
        type: 'GET',
        url : url,
        contentType: 'application/json',
        dataType: 'text',
        success:  function (data) {
            $scope.BOOKS = JSON.parse(data);
            $scope.$apply();
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            //toaster poruka
            alert('Could not load articles!');
        }
    });
};

Когда, например,

<script>alert();</script>

вводится в описание и отправляется на сервер для сохранения в базе данных; при следующей загрузке страницы она печатается таким же образом, без предупреждения.

1 Ответ

0 голосов
/ 28 июня 2018

Вы не получите его с помощью {{}} или ng-bind, вы можете получить его с помощью ng-bind-html или подобных вещей.

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

angular.module('plunker').config(function ($sceProvider) {
    $sceProvider.enabled(false);
});

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  $scope.x ='<img src="wrongUrl" onerror="alert(1)"/>';
});

<div ng-bind-html="x"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...