翻译自 PortSwigger Web Security Blog - Bypassing WAFs and cracking XOR with Hackvertor | Blog
原作者:Gareth Heyes \u2028\u2029 (@garethheyes) | Twitter

简介

BurpSuite插件Hackvertor是个基于标签的转换工具。

您可以通过Burp Extender工具中的BApp Store直接安装。

特点

  • 支持各种转义和编码,包括:HTML5实体(HTML5 entities),十六进制,八进制,unicode,url编码等。
  • 使用类似XML的标签来指定使用的编码/转换类型。
  • 可以使用嵌套多个标签来进行编码转换。
  • 标签也可以有参数,像函数一样运行。
  • 它具有自动解码(auto decode)功能,可以猜测所需的转换类型并自动执行多次解码,返回最终结果。
  • 可开启多个tab窗口(像repeater一样可开启多个tab)
  • 字符集转换

基本功能 - 编码转换

我最近一直努力开发的Hackvertor,具有基于标签的转换功能,这样的设计比Burp的内置的Decoder功能强大得多。

因为基于标记的转换,可以实现多层转换:内部的标签先完成第一次转换,并将结果作为输入,交给外部标签做第二次转换,以此类推。

例1 进行base64编码:
<@base64_0>xz<@/base64_0>

例2 进行多级编码(multiple levels of encoding):
<@base64_1><@hex_0(" ")>xz<@/hex_0><@/base64_1>

先使用hex标签将字符串转换为十六进制,然后使用base64标签对其进行base64编码。
注意hex标签有一个分隔符参数,此处使用空格分隔每个 十六进制字符串(hex string)。

例3 选中文本后快捷操作:
先选中需要编码的字符,再点击编码方式如hex

应用 - 编码payload

1.在Repeater/Intruder启动功能

2.在Repeater中
如自己写的XSSpayload为<img/src/onerror=alert(1)>
选中alert(1)并进行如图设置:
右键Hackvertor - XSS - throw_eval
在Burp中看到请求中的payload变为<img/src/onerror=<@throw_eval_1>alert(1)<@/throw_eval_1>>
此时发出的请求中的payload是经过编码的。

可从服务器端看到实际发送的请求。
GET /<img/src/onerror=window.onerror=eval;throw'=alert\x281\x29'> HTTP/1.1
可看到payload为
<img/src/onerror=window.onerror=eval;throw'=alert\x281\x29'>
原本的alert(1)已经被编码成了alert\x281\x29

更方便的办法是使用Hackvertor的 Copy URL等3个按钮都可看到。

应用 - 自动解码

自动解码器是一种标签,可自动尝试确定字符串的编码方式并对其进行多次解码。

自动解码的前提:判断字符串是否为有意义的英文。
作者Google发现了一个很棒的方法Practical Cryptography,并用Java重写了代码并在Hackvertor中实现了这个方法。

下一步是改进自动解码器。
得到可能的英文:添加了一个简单的正则表达式:用于查找 a-z字符,后跟空格,逗号或连字符
自动枚举并判断:然后循环25次以枚举被rotN编码的字符串,并计算每个“结果”的分数,如果某个结果满足分数 > 平均分数 + 20
则它就是rotN自动解码的结果。

例4 Hackvertor自动解码rotN(rot1 rot2 ...):

<@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 01100111 01010111 01101101 00110101 01110111 01100100 01011000 01011010 01101000 01100011 01100111 00111101 00111101<@/auto_decode_0>

看到输出结果为:

<@ascii2bin_21><@base64_22><@rotN_23(13)>Manchester Small-Scale Experimental Machine<@/rotN_23><@/base64_22><@/ascii2bin_21>

可以看到解码过程中的rotN自动枚举并成功发现了英文,得到了所需的文本信息Manchester Small-Scale Experimental Machine

应用 - 解密XOR重复密钥加密

作者从Practical Cryptography学习了密码学中的XOR、频率分析等知识。
解密原理:
1.确定密钥长度:使用频率分析方法,为每个可能的key执行频率分析,作者使用30作为最大的密钥长度,进行猜测。作者花了很多时间来尝试提高关键猜测的准确性并重写代码很多次。大部分代码基于此项目hellman/xortool: A tool to analyze multi-byte xor cipher
2.得到可能的英文:循环遍历密文和每个字符,得到每个转换的结果
3.判断出真正的英文数据:计算这些结果的“分数”,得到正确的解密结果(对于非常小的密文,XOR解密将失败,我认为这是因为没有足够的密文来执行频率分析,无法确定解密的每个字符的密钥长度和分数。如果你有改进方法,请提交pull请求)

例5 解密XOR重复密钥加密(Decrypting XOR repeating key encryption):

<@auto_decode_8>1C090C1E05041C101C523D296324212F000D020C04061D001C216F36383668231619064521010606376F3724732E080D0F561617171A003B3B3A6B3630110C18031717074F1037292C39366808174C0545061B00523E2E372E7D68231A4B03161B1A0852313A373F3A26064E0E120217541C1133212D223D2F41170E150D1C1B031D35366F6B2A27144308170B521D0B173C3B2A2D2A68150B0E5613170616523E2E372E203C41151E1A0B17060E103B232A3F3A2D124D4B391000541D17212A22393020041118560300111E07372137272A68140D08191317064F10202E2D2F732604144B00101E1A0A00332D2A273A3C1843081A0401070A01723B2B2A276823161906451B074F063A2A632D3A3A12174B020A52060A023D3D3765<@/auto_decode_8>

看到输出结果为:

<@ascii2hex_24("")><@xor_25("HackvertorROCKS")>Thousands of organizations use Burp Suite to find security exposures before it's too late. By using cutting-edge scanning technology, you can identify the very latest vulnerabilities. Our researchers frequently uncover brand new vulnerability classes that Burp is the first to report.<@/xor_25><@/ascii2hex_24>

得到了解密结果:

Thousands of organizations use Burp Suite to find security exposures before it's too late. By using cutting-edge scanning technology, you can identify the very latest vulnerabilities. Our researchers frequently uncover brand new vulnerability classes that Burp is the first to report.

重复的XOR加密,这种办法经常被使用,有了这个功能即可发现一些web程序的“加密”。

总结

Hackvertor的设计确实比Burp的内置的Decoder功能强大得多。

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖