绕过WAF和用黑客破解XOR

黑客解码

您可能不知道黑客扩展我最近一直在研究。它具有基于标签的转换,比BURP中的内置解码器强大得多。基于标签的转换背后的想法是,标签会转换其内容,然后将转换传递给下一个外部标签,这使您可以轻松执行多个级别的编码。

例如,将字符串编码为基础64您只使用基础64标签:

<@基础64_0>测试<@//基础64_0>

您也可以执行多个编码级别,例如,假设您要将字符串转换为十六进制,然后基础64编码它,您首先使用十六进制标签,然后基础64标签:

<@基础64_1> <@十六进制_0(“”)>测试<@/十六进制_0> <@//基础64_1>

十六进制TAG具有一个分离器参数,该参数将每个十六进制字符串 - “测试”分开,将传递给标签函数,并将其作为分隔符。

使用hackvertor

当扩展名加载时,它将在Burp中创建一个名为Hackvertor的新标签。在标签中,有一个输入框和一个输出框。您输入要在输入框中转换的文本并选择它,然后单击标签hackvertor自动运行转换,并且转换出现在输出框中,为方便起见,如果您想再次运行转换,则有一个转换按钮。有一些标签类别,例如编码,解码等,可让您轻松找到所需的标签。Hackvertor还具有Repeater样式选项卡,可让您运行该工具的多个版本。

黑客屏幕截图

绕过Cloudflare WAF

最近,我在Repeater之类的工具中将hackvertor标签在实际请求中可用,您可以右键单击中继器请求中,然后选择“ hackvertor”菜单以在请求中添加标签,并且在发送请求之前,它将自动运行转换。您也可以通过首先将它们定义为中继器,然后将其发送给入侵者,也可以在入侵者中使用它们,这是如此强大,因为您可以使用占位符使用多个级别的编码。您甚至可以在代理中使用它们,但默认情况下会关闭。如果要打开它,则可以在主打burp菜单中选择“ hackvertor”菜单,然后单击“允许代理中的标签”。

现在,我将向您展示如何使用中继器中的标签绕过Cloudflare WAF。将以下URL发送到中继器:https://waf.party/xss/xss.php?x=

然后,在平等输入以下代码之后:

在中继请求中选择警报(1),然后使用hackvertor bapp启用右键单击选定的文本,然后单击hackvertor然后XSS然后throw_eval。这会将标签添加到请求中,如果您击中,您会看到响应包含:

如果您想检查它实际上有效,您只需要右键单击“请求编辑器”,然后从上下文菜单中选择hackvertor并复制URL,然后将所有标签转换后,这将产生URL。如果您使用Burp的复制URL命令,则将仅使用标签复制URL。

解码rotn

一切始于我女儿的问题。我穿着Bsides曼彻斯特2016年的T恤,它的前部有一些二进制,她问:“爸爸所有这些数字意味着什么?”。我告诉她这是二进制的,问她是否要解码。然后,我们开始将二进制键入hackvertor键入hackvertor,我注意到二进制解码后,它是一个base64编码的字符串,然后看起来像一个腐烂编码的字符串。我们对腐烂编码的字符串进行了攻击,并解码了该消息,但它让我想到,如果hackvertor可以自动解码腐烂编码的字符串该怎么办。

它必须识别像随机胡言乱语的单词这样的英语。我开始创建一个IS_LIKE_ENGLISH标签,起初我认为您可以使用Bigrams和Trigrams只是寻找跟随它们的通用字母来确定英语单词,但这并不像我想象的那样简单。然后在谷歌搜索后,我发现了一个漂亮的很棒的网站。他们使用四个字母的序列及其在英语中的频率。该网站也有一些简单的Python代码这基于对单词和四句话的分析产生分数。我在Java中重写了代码,并在Hackvertor中实现了代码。

下一步是改善自动解码器。自动解码器是一个自动尝试确定字符串如何编码并多次解码的标签。我添加了一个简单的正则态度,该正则是在或更多的A-Z字符上,然后是空格,逗号或连字符。然后循环25次以违反腐烂编码的字符串,并从每个弦乐中获得得分,我计算了每个平均值,如果最佳分数大于平均值,则二十张,它将自动解码腐烂编码的字符串。我不会告诉你二进制解码是什么,我会让你自己找出答案。这是由Santi建模的T恤的照片。

Santi与Bsides Manchester 2016 T恤 <@auto_decode_0>01010111 01101101 00110101 01101000 01100011 01001000 01010110 01111001 01011010 01101101 01100100 01111001 01011010 01010011 01000010 01000111 01100101 01101101 00110101 00110101 01100101 01010011 00110001 01000111 01100011 01000111 00110101 00110101 01100011 01101001 01000010 01010011 01100001 00110010 01001110 01111001 01011010 01011000 01011010 00110110 01100011 01101101 01000110 01101110 01100010 01101110 01101011 0110011101010111 01101101 00110101 01110111 01100100 01011000 01011010100101001101000 01100011 0110011 001111111101 001111111111 <@/@/@/auto_decode_0>

詹姆斯还有一件带有不同消息的扬声器衬衫,所以我进入了hackvertor,看看它是否会自动解码该消息。它奏效了,您可以自己看到以下内容粘贴到输入框中。

<@auto_decode_10>01011010 01101110 01100001 01110000 01110101 01110010 01100110 01100111 01110010 01100101 00101100 00100000 01100110 01100010 00100000 01111010 01101000 01110000 01110101 00100000 01100111 01100010 00100000 01101110 01100001 01100110 01101010 01110010 01100101 00100000 01110011 01100010 01100101<@/auto_decode_10>

不用说,如果自动rotn开裂PWNS任何生产代码,我们都会非常有趣。

解密XOR重复密钥加密

我打算在那里完成博客文章,但后来詹姆斯挑战我对重复XOR加密进行解码。使用绝对出色的加密网站实用密码学我了解了有关XOR和频率分析的所有知识。第一步是确定密钥长度。您可以使用每个关键候选人的频率分析来执行此操作,我将30个用作最大的关键长度猜测。我将每个字符存储在一个频率表中,并每次在密文中出现它们时会增加它们。当您拥有所有频率时,您可以为每个列和频率计算重合(或锤距)的索引。一旦您获得了每个关键候选人的巧合索引,我就获得了前7名,并通过除以密钥长度候选者的范围,然后将IC排序的前7位排序,并将顶部归为猜测的钥匙。

我花了很多时间尝试提高关键猜测的准确性,并多次重写代码。这值得信赖的信号博客表示您可以通过在前5-6位候选人之间使用最大的共同点来提高确定关键长度的准确性,但是在我的测试中,我无法提高准确性。无论如何,一旦拥有钥匙长度,您只需循环浏览密文和每个字符,然后根据字符结果分配得分。我将大部分代码基于凉爽的Python实用程序阿列克西·海尔曼(Alexey Hellman)。

最后,我重复使用is_like_english函数,以确定文本的分数是否成功。这适用于小文本,但失败了较大的文本,这是因为您获得的文本越多,因此我将固定值更改为平均值和此工作之间的差异百分比,而不管Ciphertext的何种长度。对于非常小的密文,XOR解密将失败,我认为这是因为没有足够的密文来执行频率分析以正确确定每个字符解密的密钥长度和得分。如果您想到一种改进的方法,请提交拉动请求。

为了演示自动解码,我已经使用键进行了XOR,然后将其编码。当您将输入输入到输入框时,因为hackvertor将自动解码十六进制,猜测键长,然后自动解密XOR加密,甚至为您提供正确的标签以重现编码。

<@auto_decode_8>1C090C1E05041C101C523D296324212F000D020C04061D001C216F36383668231619064521010606376F3724732E080D0F561617171A003B3B3A6B3630110C18031717074F1037292C39366808174C0545061B00523E2E372E7D68231A4B03161B1A0852313A373F3A26064E0E120217541C1133212D223D2F41170E150D1C1B031D35366F6B2A27144308170B521D0B173C3B2A2D2A68150B0E5613170616523E2E372E203C41151E1A0B17060E103B232A3F3A2D124D4B391000541D17212A22393020041118560300111E07372137272A68140D08191317064F10202E2D2F732604144B00101E1A0A00332D2A273A3C1843081A0401070A01723B2B2A276823161906451B074F063A2A632D3A3A12174B020A52060A023D3D3765<@/auto_decode_8>

重复的XOR确实不时使用,因此希望此功能将有助于防止某些应用程序使用外观静态加密。

回到所有文章

相关的研究

每日Swig的推荐故事beplay2018官网