Отключить кодирование для XSS - PullRequest
0 голосов
/ 18 марта 2020

для моей стажировки мне нужно исследовать инструменты анализа кода, которые анализируют код на наличие уязвимостей из OW ASP top 10. Но мне также нужно сделать подтверждение концепции, чтобы я мог показать, что инструмент анализа кода делает свое дело работа. Поэтому я создаю веб-приложение ASP. NET (с. NET Framework) и добавил экран входа в систему, чтобы я мог выполнить инъекцию SQL (что работает). Вторая уязвимость, которую я хочу проверить, - межсайтовый скриптинг (XSS). Поэтому я сделал экран с таблицей, которая показывает все данные из моей базы данных комментариев. Я добавил кнопку поиска, и при вводе: alert («Test») я получаю уведомление о том, что обнаружено потенциально опасное значение Request.Querystring. Мой коллега сказал, что добавление [ValidateInput (false)] в мой контроллер будет работать, и теперь уведомление пропало, но мое уведомление о том, что ничего не может быть найдено в базе данных, отображается каждый раз. Когда я запускаю приложение и заглядываю внутрь исходного кода на Chrome, я вижу, что значение моего поиска: value = alert ("Test") /> вместо предупреждение ( "Test") . Я знаю, что это кодировка Html, но я не знаю, как отключить эту кодировку, чтобы я мог запустить скрипт.

Это моя модель:

{
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Web.Mvc;

    public partial class Comments
    {
        [AllowHtml]
        public int CommentID { get; set; }
        [DisplayName("Naam:")]
        [AllowHtml]
        public string Name { get; set; }
        [DisplayName("Voer hier uw comment in:")]
        [DataType(DataType.MultilineText)]
        [AllowHtml]
        public string Comment { get; set; }
    }
}

Это мой взгляд:

<body>
    @using (Html.BeginForm("Index", "XSS", FormMethod.Get))
    {
        @Html.TextBox("searchcomment")
        <input id="comment-button" type="submit" value="Search comments" />
    }
    <link rel="stylesheet" type="text/css" href="~/Content/CommentPage.css" />
    <table id="Comments">
        <thead>
            <tr>
                <th>Naam</th>
                <th>Comment</th>
            </tr>
        </thead>
        <tbody>
            @if (Model.Count() == 0)
            {
                <tr>
                    <td colspan="3" style="color:red">
                        No comments found!
                    </td>
                </tr>
            }
            else
            {
                foreach (var comment in Model)
                {
                    <tr>
                        <td>@Html.Raw(comment.Name)</td>
                        <td>@Html.Raw(comment.Comment)</td>
                    </tr>
                }
            }
        </tbody>
    </table>
    <input class="text-center" id="comment-button" type="button" value="Add new comment" onclick="location.href='@Url.Action("NewComment", "XSS")'" />
</body>
</html> 

Это мой контроллер:

using System.Web.Mvc;
using Afstuderen.Models;
using System.Data.SqlClient;
using System.Linq;

namespace Afstuderen.Controllers
{
    public class XSSController : Controller
    {


        // GET: XSS
        [ValidateInput(false)]
        public ActionResult Index(string searchcomment)
        {
            using (CommentsEntities db = new CommentsEntities())
            {
                return View(db.Comments.Where(model => model.Name.Contains(searchcomment) || model.Comment.Contains(searchcomment) || searchcomment == null).ToList());
            }

        }

Я действительно надеюсь, что кто-то можете сказать мне, что я делаю неправильно, и показать мне, как это исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...