XSS — 使用 Hex 溢出绕过 WAF

admin 2025年2月17日08:48:11评论17 views字数 1651阅读5分30秒阅读模式
XSS — 使用 Hex 溢出绕过 WAF

今天,我将写我如何使用 Hex Overflow 绕过 BIG IP Local Traffic Manager (F5 Networks) Web 应用程序防火墙的文章。

故事会直线发展,但实际上情况有点倒退。更有可能的是先解决问题,然后知道实际问题是什么。

在我开始之前,非常感谢 @Gareth Heyes为更深入地了解这一点提供了宝贵的帮助!

让我们开始吧!

The XSS

最初,在观察到输入未经过净化之后。我输入了一个简单的有效负载 <svg onload=alert()> 。这立即被阻止了。

XSS — 使用 Hex 溢出绕过 WAFXSS — 使用 Hex 溢出绕过 WAF

所以我开始探测直到块消失,然后得出 <svg onload>,这意味着 onload=(带等号)实际上被阻塞了。看到这个后,我尝试了所有可能的事件处理程序,但没有任何效果。死胡同?

简介 — Hex Overflow

十六进制或十六进制是一个 16 个基数系统,允许 0-F(0123456789ABCDEF) 在 FF 处达到最大值。对我们来说,保留或不安全的字符 [RFC 1738 2.2] 在 URL 中编码是很常见的,URL 是两个十六进制数字,后跟一个百分号“%”,如 %23 是哈希/片段符号“#”的十六进制表示。

当在处理URL时使用格式错误的URL解码器时,会发生十六进制溢出,并且允许字符超过0-F的十六进制限制,超过其他字母的使用,包括符号[ ] { } ;: < > !& 更多。

我的目标中使用的解码器非常混乱,说实话一点也不合理。我可以猜到他们在解码器后面还使用了不止一个 logic。输出都是小写字母,加起来更加混乱。

当您输入 %5% 时,您期望什么?
输出为 'e' 或 0x55。想知道怎么做?解码器获取前5,然后将第二个'%'符号解码为%25,并忽略第一个半字节'2'并从那里获取5。使其成为 %55。由于它是一个溢出字符,因此它会从结果的第一个半字节开始执行 -1,使其成为 %45 大写的“e”。所以 %7% 导致 %65 或大写的 'e'。是的,%8%,%6%分别导致%75或小的'u'和%55或大写的'u'。

现在您可能想知道它是如何处理十六进制的字母部分的?
答案是——非常奇怪!在第一阶段,它正常处理 abcdef,但当溢出时,它调用索引号从 'g' 开始的字母表为 0。

XSS — 使用 Hex 溢出绕过 WAFXSS — 使用 Hex 溢出绕过 WAF

经过进一步观察,我发现它可以用作 2 个不同的集合。而 When Mixed 则是这样的。

XSS — 使用 Hex 溢出绕过 WAFXSS — 使用 Hex 溢出绕过 WAF

如果两个集合中的任何字符一起使用,则第一个半字节可以看到 +1,如果它来自集合的绿色,这意味着输入的 %5g(根据此图表为 %50)将输出 '%(5+1)0' 或 %60 → ' (反引号)。同样,如果它是 %hz(h 来自第 2 组),根据图表为 %13,它将输出 '%(1+2)3' 或 %33 → '3'

最糟糕的是,模式并不总是恒定的,并且无法计算完整的工作流程。有时它是 +1,有些是 +2 或 +3,有些也是对第一个 nibble 的减法。但这种理解足以让我绕过。

旁路

就像一开始我们看到的那样,由于每个处理程序都被阻止,因此不可能绕过这一点,我们需要其他方法。

使用 Hex Overflow — 我们可以使用多种不同的方式生成单个 ASCII 字符。如果你已经理解了,你实际上也可以用 '%3=' 来表示 “=” 等号 (%3d),这可以解释为 %3%3d,其中第一个半字节被忽略,再次变为 %3d。还有 '%zd', '%z=', '%jd', '%it' (在本例中,从第一个半字节开始 -1)。我们可以用所有这些来代替等号,比如 <svg onload%jdonload=alert()>

XSS — 使用 Hex 溢出绕过 WAFXSS — 使用 Hex 溢出绕过 WAF

它又挡住了我们的有效载荷,为什么?这次 alert() 是被阻止的函数。这很容易被可选的链接绕过 → alert?.() .

XSS — 使用 Hex 溢出绕过 WAFXSS — 使用 Hex 溢出绕过 WAF

它不仅仅限于此,还可以使用许多其他方式绕过它,使用十六进制溢出(如 %0d (CR) 生成有效负载的不同部分,例如 %0d (CR) 到 '%0=' 或 '%w=',使有效负载 <svg onload%w==alert()>

结论

这种有缺陷的解码器非常罕见,而且所有解码器的缺陷可能都不一样。玩这个对我来说真的很有趣。

原文始发于微信公众号(安全狗的自我修养):XSS — 使用 Hex 溢出绕过 WAF

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月17日08:48:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XSS — 使用 Hex 溢出绕过 WAFhttps://cn-sec.com/archives/3749240.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息