8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Kestrel 不太喜欢用虚假的 root 逃逸来欺骗攻击者

Michael Currie 2月前

7 0

因此我想到了一个绝妙的主意,通过设置一个无意义的响应来伪造路径逃逸来欺骗攻击者。有一次,这曾经做过一些有趣的事情GET /../../etc/passwd HTTP/1.0所以我......

因此我想到了一个绝妙的主意,通过设置一个无意义的响应来伪造逃跑路径,从而欺骗攻击者。

有一次这曾经做过一些有趣的事情

GET /../../etc/passwd HTTP/1.0

所以我写道:

        app.MapGet("/../../etc/passwd", () => """
root:ZghOT0eRm4U9s:0:0::/:/bin/sh
""");

但它根本不起作用:

GET /../../etc/passwd HTTP/1.0

HTTP/1.1 404 Not Found
Content-Length: 0
Connection: close
Date: Tue, 27 Aug 2024 01:51:19 GMT
Server: Kestrel

怎么回事?

(这是一个 troll app.MapGet() 条目,浪费了脚本小子的时间。如果它永远得不到修复,损失就不大了。它使用最少的 API,因为整个应用程序将使用最少的 API 来完成包括静态文件解析在内的所有事情。)

帖子版权声明 1、本帖标题:Kestrel 不太喜欢用虚假的 root 逃逸来欺骗攻击者
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Michael Currie在本站《asp.net-core》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这是由 Kestrel ,它将 /../../etc/passwd 路径变成 /etc/passwd .

    来自 Kestrel 测试,例如 Http2 / Http3 :

    // ...
    [InlineData("/a/b/c/../d", "/a/b/d")] // Navigation processed
    [InlineData("/a/b/c/../../../../d", "/d")] // Navigation escape prevented
    // ...
    public async Task Path_DecodedAndNormalized(string input, string expected)
    

    因此,“后退导航”将被处理到“应用程序根目录”,但不会再进一步​​处理,因此应用程序级别的路线模式应该只是 /etc/passwd

    app.MapGet("/etc/passwd", ...);
    

    更新型多巴胺

    这个想法是具体的, /etc/passwd 是一个 404,但 ../../etc/ 密码返回一些东西

    然后,您可以尝试获取“原始目标”并例如使用条件处理程序管道(将其添加到管道的开始处的某个位置):

    app.UseWhen(context =>
        {
            var httpRequestFeature = context.Features.Get<IHttpRequestFeature>();
            var rawTarget = httpRequestFeature?.RawTarget;
            return rawTarget == "/../../etc/passwd";
        },
        appBuilder => appBuilder.Run(
           ctx => ctx.Response.WriteAsync("root:ZghOT0eRm4U9s:0:0::/:/bin/sh")));
    
  • 具体来说,/etc/passwd 是 404,但 ../../etc/password 返回了某些内容,因此扫描器认为发现了错误。无论如何,这只是一个好奇心,并不重要。

返回
作者最近主题: