包含Start {{sum =(2 * 2.0)}}等有效负载的URL在帮助器

时间:2017-05-10 11:43:27

标签: asp.net-mvc xss

最近有人向我展示了他们如何通过将网站没有预期的值放入URL并且MVC默认验证消息然后运行它来在MVC网站上执行某些操作。

他们做了类似的事情:

?page=Start%20%7B%7Bsum%3d(2*2.0)%7D%7D%20End

该网站在验证邮件中输入了"值'开始4结束'对页面无效。"所以它做了总和。

在同一个网站上虽然它无法尝试将javascript放入并让它执行。

所以我有点困惑,我找不到有关将这种代码注入网站的任何信息。那么,这是一个大问题吗?您可以使用此语法运行哪种其他类型的代码?你会如何解决这个问题呢?

更新 - 其他信息:

MVC版本是4

页面属性定义为:

public class SearchContext
{
    public int Page { get; set; }
}

将其传递给控制器​​,以便在用户返回时记住该页面:

[HttpGet]
public ActionResult Create( SearchContext searchOptions )
{
    var viewModel = new MyViewModel( ){
        SearchOptions = searchOptions
    };
    // .....
    return View( viewModel );
}

然后剃刀文件有:

@using ( Html.BeginForm( ) )
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor( m => m.SearchOptions.Page )

    // ValidationSummary calculating 'Start 4 End'??
    @Html.ValidationSummary( false )

    // ... form fields .... 

    <span class="right">
        <input type="submit" value="Save" class="button saveOrSubmit" />
    </span>
    @Html.ActionLink( "Cancel", "Index", Model.SearchOptions )
}

样品:

使用/创建?page = Hello enter image description here

使用/Create?Page=Start%20%7B%7Bsum%3d(2*2.0)%7D%7D%20End enter image description here

1 个答案:

答案 0 :(得分:0)

好的,刚刚发现它是一个Angular页面,摘要位于Angular评估范围内......