对 cookie 进行编码和解码以绕过 WAF 规则

编程


你好,

我有一个 .net 6 Web 应用程序,具有天蓝色的广告身份验证。 应用程序被天蓝色应用程序网关包围。 网关 WAF 规则被阻止,并且从网关返回 403 错误。

根本原因:Microsoft Identity Web 身份验证生成具有双连字符 (–) 等特殊字符的 cookie,WAF 正则表达式将它们视为 SQL 注释,并且阻止该请求。

我尝试过的:

我尝试编写自定义中间件来编码和解码 cookie,但它不起作用。

我也无法理解流程,因为概念对我来说不清楚,就像我在中间件的服务器代码中解码和编码cookie一样,但是当用户向网络应用程序发送请求时,最初它会出现到网关,在那里它将被网关阻止。 我不确定这种解决方案如何运作。

如果您除了应用程序网关中的阻止规则之外还遇到过此问题,请分享您的建议。 或者实际上将如何解决

解决方案1

解决方案2

这根本不是我的专业领域,甚至不是我的专业领域……但是,我确实发现这个问题很有趣,并开始进行一些谷歌搜索,是的,我知道,还有一些人工智能建议。

看来您用于编码和解码 cookie 的自定义中间件已正确实现
看来您需要确保在编码/解码期间添加的任何标头都包含在传出请求中。
确保你的Azure应用程序网关没有过度限制,并在必要时考虑调整WAF规则,我看到评论说你对此无法控制,只需检查并确认状态即可。

要处理 .NET 中的“自定义中间件”,请安装必要的软件包(AI 启动,此处不提供任何保证,但可以作为指向正确方向的指针提供帮助…) –

重击
dotnet add package Microsoft.AspNetCore.Authentication
dotnet add package Microsoft.AspNetCore.Authentication.Cookies

在这里休息,使用 C3 复制并粘贴… –

C#
// CustomMiddleware.cs
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;

public class CustomMiddleware
{
    private readonly RequestDelegate _next;

    public CustomMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        // Decode or encode your cookies here
        // For example, decoding:
        // var decodedCookie = context.Request.Cookies["YourCookieName"];
        // var decodedValue = DecodeYourCookie(decodedCookie);
        
        // Encoding example:
        // var encodedValue = EncodeYourCookie(originalValue);
        // context.Response.Cookies.Append("YourCookieName", encodedValue);

        // Call the next delegate/middleware in the pipeline
        await _next(context);
    }
}

在“Startup.cs”中注册中间件 –

C#
// Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

public class Startup
{
    // Other configurations...

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // Other middleware configurations...

        app.UseMiddleware<CustomMiddleware>();

        // Other middleware configurations...
    }
}

Agian,与代码相关的部分是人工智能生成的,可能与您想要实现的目标完全不同步,但可以作为指针提供帮助……

解决方案3

コメント

タイトルとURLをコピーしました