首页
论坛
专栏
课程

[翻译]使用Burp Suite执行更复杂的Intruder攻击

2017-12-30 15:27 2355

[翻译]使用Burp Suite执行更复杂的Intruder攻击

2017-12-30 15:27
2355

使用Burp Suite执行更复杂的Intruder攻击


最近我做了一个渗透测试,其中并没有太多的攻击面,但有一个防火墙设备和一种基于浏览器的SSL VPN服务。除了从LinkedIn收集的一些用户名之外,没有太多事情能做,这似乎是一个值得尝试的入口。我希望能通过password spray(解释见文后译者注)破解这些账户,而且我也想要一些可能已经在设备上定义的本地用户,比如root、fwAdmin、admin等。我不太担心这些账号会被锁定,所以最后我就试着对这些账号直接暴力破解。


但是问题出现了,现实总是如此。即便使用了TLS加密,该设备在HTTP请求中也没有提交密码。此处使用了某种摘要算法,看起来像是MD5:



此外,目标URL与其来源表单不同。查看登录过程,我得出结论,我首先需要请求该表单,收集多个值,最后使用我提供的密码进行某种摘要计算。下面的内容来自于登录页面:




我看了一下“processButn()”,确定我至少需要param1,id和sessId来构建响应。我的第一反应是用Burp的宏和参数提取功能来解决这个问题。这使我更进一步,但我遇到了一些困难。具体来说,我无法实现JavaScript是如何处理有效载荷或递归grep操作的。


那么,JavaScript在干什么呢?



它设置了几个cookie,并计算出一个CHAP响应。查看chapDigest()函数,我发现表单中的param1和id值从ASCII十六进制转换为字节,并与密码拼接,最后生成一个md5和并转换回ASCII十六进制。这不是非常复杂,但是跨越了两个请求,sessId也从表单字段移动到了cookie中,而且我不太想深入理解Burp内部机理。


幸运的是,我之前写了一个扩展,我经常用这个扩展来帮助解决这些问题。你可以在这里下载:https://github.com/GeoffWalton/Burp-Command/blob/master/externalCommand.rb


基本上,它允许我使用外部命令处理或生成Intruder的有效载荷。所以首先我需要确保能够正确地计算摘要。我没有设备来实际测试一个有效的登录,所以我只是使用浏览器进行请求,在本地脚本中测试参数,并验证与我的浏览器生成的摘要相匹配的摘要。


我本来可以复制脚本行为,但是从设备上获取JavaScript更容易。我找到了我需要的东西,然后复制并粘贴到本地的js[c]文件中:



除了最后一行之外的所有内容都直接从设备中取出!我只需要拿出参数,并打印出摘要结果。


现在我需要一种获取值的方法!我在Burp中使用了“copy-as curl”,并将结果合并到一个很小的shell脚本中。这个脚本将是我从扩展中调用的实际命令,它将随后调用jsc运行里面的JavaScript代码。最后,它将会合并输出,并且最后的结果便于用作Intruder有效载荷:



如果页面结构很复杂,那么包含一些XPATH查询的Ruby或Python脚本可能是一个更清晰明了的方法,但是在这种情况下,把它们放到bash中会更快。


这个脚本返回了一个没有换行符的单个字符串,其中包括大部分我在做认证时(在标准输入上提供密码)需要的参数。值得指出的是,curl是用Burp作为代理。这意味着Burp会记录这些请求,所以如果客户需要,我会保留完整的请求历史记录。现在我只需要设置Intruder攻击。


第一步:发送一个实际的认证请求给Intruder:



接下来,我做了一些重新整理和编辑的工作,以适应我的脚本输出。请注意,我将cookie名称作为替换值的一部分。我也用插入点“x”替换了我的脚本输出的参数:



接下来,我跳到我的扩展的标签,并配置它来调用我的脚本:



最后,我禁止发送包含未修改的有效载荷的请求,并按照下图所示配置了有效载荷。请记住,它们从上到下运行,从左到右,所以我需要在有效载荷一(Payload set 1)中引用有效载荷三(Payload set 3)来填充该cookie值:



这里在Payload set 2中我填了一些用户名:



最后,在Payload set 3设置了我的密码列表,并且使用我的自定义有效载荷处理器“Command”:



这对于使用Sniper(Intruder标签内的一种攻击类型)的password spray攻击(未展示)是非常理想的,然而对于Cluster bomb(Intruder标签内的另一种攻击类型),Burp对每组仅运行一次有效载荷处理器。我不知道sessId是否可以在此设备上用于重复多次登录,所以这可能是这种暴力破解方法的一个问题,虽然我没有看到任何输出来表明这一点。我只做了一些Repeater实验,表明会话在几秒钟后过期。


尽管如此,Burp仍然是一个很好的工具。你可能会问:“难道你不能用另一个curl命令、Ruby、Python等来编写请求吗?”当然,我已经创建了大部分的脚本逻辑。Burp仍然为我提供了很多价值:

  • 它保留了完整的请求/攻击历史记录;
  • 我不知道成功的登录是什么样子,所以我很高兴能够通过响应的长度容易地排序,并可能在之后使用grep匹配/提取;
  • 我可以很容易地在password spray和暴力破解间切换,而无需重新修改我的脚本;
  • 我可以通过目测检查请求,确保它们看起来正确;再次,重要的是我没有可以参考测试的有效登录或设备。


译者注:

Password spray attack也称reverse brute force attack(反向暴力破解攻击)。在此类攻击中,攻击者针对多个用户名或加密文件测试一个密码(通常是常见的密码),也可能会测试几个精选的密码。此类攻击的攻击者一般不是针对某个特定的用户。


原文地址:

https://www.trustedsec.com/2017/12/complex-intruder-attacks-burp/


本文由看雪论坛翻译小组成员SpearMint翻译



2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

最新回复 (0)
游客
登录 | 注册 方可回帖
返回