如何骗过fortify扫描 sql injection

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何骗过fortify扫描 sql injection相关的知识,希望对你有一定的参考价值。

参考技术A 除了改变设计以外无解。
因为 SQL 的编译方式,本来就不接受 "将来源表格或资料库或资料来源当参数" 这种方式。除非 SQL 厂商改变 SQL 编译方式支援它。
否则请改变设计,至於要怎麼将同一个 schema 用在多个环境,请参考多租户架构的资料切割作法。

从 asp.net 上的 Fortify 扫描打开重定向或标题操作问题

【中文标题】从 asp.net 上的 Fortify 扫描打开重定向或标题操作问题【英文标题】:Open Redirect or Header Manipulation issues from Fortify scan on asp.net 【发布时间】:2011-08-10 05:46:01 【问题描述】:

我们对 ASP.net 应用程序进行了 Fortify 扫描。我们发现有很多标题操作问题。所有的问题都指向 Response.Redirect()。请查看下面我对参数进行编码的代码。即使这样,下面的代码也算作标题操作问题。

            int iCount = 0;
            foreach (string Name in Request.QueryString.Keys)
            
                iCount++;
                if (iCount > 1)
                
                    url += "&";
                
                url += Name;
                if (Request.Params[Name]!=null)
                
                    url += "=" + AntiXss.UrlEncode(Request.Params[Name]);
                
            
            Response.redirect(Server.UrlPathEncode(page.root) + "\Test.aspx?" + url);

有人可以让我知道还需要在此处进行更改以解决问题吗?

【问题讨论】:

【参考方案1】:

去掉Server.UrlPathEncode(page.root)部分并使用Server.Transfer()而不是Response.Redirect()

Server.Transfer() 将用户转移到同一站点上的另一个页面,并且几乎不会造成意外将某人引导到另一个站点的危险。

Response.Redirect() 适用于您想将某人重定向到另一个网站。

此外,Fortify 不喜欢Request.Params[],因为它可能含糊不清。在某些服务器上,细心的攻击者可能会发送一个 UTF-7 或非打印版本的名称作为请求变量之一,并让变量的名称包含实际的 XSS 注入,或覆盖 GET 请求具有相同名称的 cookie 的值。确保名称和值都是 htmlencoded,并考虑使用 Request.QueryString[parametername] 而不是 Request.Params[parametername] 以避免 Fortify 出现更多问题。

希望这可以帮助您解决 Fortify 问题!

【讨论】:

【参考方案2】:

似乎 Fortify 将名称视为用户定义,这将触发“Manupulation”错误。如果是真的,请尽可能使用预定义的列表。

【讨论】:

以上是关于如何骗过fortify扫描 sql injection的主要内容,如果未能解决你的问题,请参考以下文章

如何基于Fortify扫描结果使TFS构建失败

Fortify Sql 注入 for Oracle

Fortify SCA 脚本扫描 shell 脚本

wvss漏洞扫描和fortify漏洞扫描的区别

谁有fortify sca能扫描的安全漏洞种类明细

fortify代码扫描使用教程