查询中接受的正文参数(ASP.NetC #)

34gzjxbg  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(205)

最近我的项目经过年度扫描和一些漏洞被发现其中之一是身体参数接受查询我已经搜索了很多,但无法找到任何解决方案。谁能帮我一下。

PDF内容
**CVSS评分:**5.0
**实体:**ViewGeneratedLicense.aspx(Page)
**风险:**可能会收集有关Web应用程序的敏感信息,例如用户名,密码,机器名和/或敏感文件位置。可能会说服天真的用户提供敏感信息,例如用户名,密码,信用卡号码,社会安全号码等。原因:Web应用程序编程或配置不安全
**修复:**不接受查询字符串中发送的body参数

差异:从请求中删除主体参数:dlEQnbwh+SU0fnNggvrn41XqVCYrGzcGkfx1U2vWIFuouDJj179CSwOlev0Kt8bKAywMLBjGIVsO3vKyfMN/Af4t kLgsMCBjYKg3WCbLwP4OyLzHuNzwbmjFixYeKmsOgNg3Fm78wUEiU/A1Ylq6vy5kybGhTbFDiUT7aK7RE48c3ry PH9wOA/8dBSa4/gObQISeh9s1NCSvrKAXpWrGUJTZGSRQ6LacRwWjT/B1x4=
添加到请求的查询参数:dlEQnbwh+SU0fnNggvrn41XqVCYrGzcGkfx1U2vWIFuouDJj179CSwOlev0Kt8bKAywMLBjGIVsO3vKyfMN/Af4t kLgsMCBjYKg3WCbLwP4OyLzHuNzwbmjFixYeKmsOgNg3Fm78wUEiU/A1Ylq6vy5kybGhTbFDiUT7aK7RE48c3ry PH9wOA/8dBSa4/gObQISeh9s1NCSvrKAXpWrGUJTZGSRQ6LacRwWjT/B1x4=
已从请求中删除正文参数:60 E89 E49查询参数添加到请求:60E89E49
已从请求中删除正文参数:
添加到请求的查询参数:
已从请求中删除正文参数:RTzm2ACJxwCcqznNO4Wvc54r2vCBI7D4zpx5pjId8Fa4ECNizBeorXO9wOTWYPXO9p6GxfhMRCINxxbw2xvSWf9P 9KPShEp7iXodQHNW/n9xdPVf9hRUq0fx4ZcUTASpv/Vau6AmreXgo6L8ceeLRO4mpW29Zvm/y6iH4dsj4jVZdX4i b+Z/tnbdxZmSDVZC
添加到请求的查询参数:RTzm2ACJxwCcqznNO4Wvc54r2vCBI7D4zpx5pjId8Fa4ECNizBeorXO9wOTWYPXO9p6GxfhMRCINxxbw2xvSWf9P 9KPShEp7iXodQHNW/n9xdPVf9hRUq0fx4ZcUTASpv/Vau6AmreXgo6L8ceeLRO4mpW29Zvm/y6iH4dsj4jVZdX4i b+Z/tnbdxZmSDVZC
已从请求中删除正文参数:1234查询参数已添加到请求:1234从请求中删除主体参数:添加到请求的Go Query参数:Go方法操作自:POST to:GET Reasoning:测试结果似乎表明存在漏洞,因为测试响应与原始响应相似,表明应用程序处理了在查询中提交的主体参数
我不确定解决方案。根据PDF给出的解决方案(修复:不接受在查询字符串中发送的正文参数????)

ymdaylpp

ymdaylpp1#

我不确定你使用的是哪个版本的ASP.NET,但是在旧版本中,如果你没有显式地用[FromQuery][FromBody]之类的东西标记参数,ASP.NET会遍历所有可能的源代码并试图找到信息。这意味着你可以有这样的代码:

public class Credentials
{
    public string Username { get; set; }
    public string Password { get; set; }
}

public class FooController : ApiController
{
    [HttpPost]
    public IHttpActionResult DoSomething(Credentials credentials)
    {
        // Do some stuff
        return Ok();
    }
}

字符串

  • intent* 用于用户在请求正文中包含凭证(敏感信息)。但是,如果您不提供主体,而 do 在查询参数中提供值,Asp.NET将找到这些值并绑定它们。以下请求将起作用:

POST /API/Foo?用户名=john&密码=pas$w0rd
这是一个安全风险,因为查询参数通常记录在中间服务器中,因此密码可以以纯文本形式显示。
解决方案是评估这些方法,并适当地注解参数,以便它们绑定到查询参数 * 或 * 请求主体 *,但不是两者都绑定 *:

public IHttpActionResult DoSomething([FromBody] Credentials credentials)

相关问题