Burpsuite宏的介绍

Brupsuite的宏(Macros),是一个预先定义好的HTTP请求序列,这个序列中可以包含一个或多个HTTP请求。在Burpsuite的会话管理规则(Session Handling Rules)中使用宏,可以完成多种任务,典型的使用方式包括:

通过页面的跳转验证当前的会话是否仍然有效;

执行登陆动作获取新的有效会话;

获取前一次HTTP请求响应的Token或其它参数,作为后续请求的输入参数(如CSRF Token的绕过);

扫描或模糊测试时,执行一些先前请求,确保扫描请求能被正常执行;

测试请求执行之后,执行后续的请求操作(如结合Intruder使用不同账号登陆后进行批量投票)。

下面通过具体的案例,演示如何通过Burpsuite的宏绕过CSRF TOKEN验证和保持会话有效。

演示环境

Web:Metasploitable2(包含多个Web应用,本次使用演示使用DVWA)

工具:Firefox + Burpsuite 1.7.26 + Sqlmap

使用宏绕过CSRF TOKEN验证

在Firefox设置代理为Burpsuite,登陆DVWA,安全级别设置为high,定位到CSRF页面,本次演示地址为http://1.1.2.61/dvwa/vulnerabilities/csrf/

DVWA的CSRF漏洞存在于密码修改页面,在浏览器输入密码提交,密码修改成功。

Clipboard Image.png

在Burp代理的HTTP history中找到修改密码的请求包,发送到Repeater测试,由于user_token已失效,密码修改失败,HTTP状态码为302,重定向到index.php页面。

Clipboard Image.png

下面,开始使用宏绕过CSRF验证:

第一步:录制宏

宏的管理界面位于Project Options → Sessions,点击Add,新建一个宏。

Clipboard Image.png

从HTTP请求记录中选择获取CSTF TOKEN的请求,选择后确定。

如果历史记录中没有该请求,可以点击右上角的Intercept开关按钮,关闭代理截断,然后在浏览器中执行一次修改密码操作。

Clipboard Image.png

之后进入宏编辑界面,输入宏的名字,名字可随便写。我这里命名为Get_CSRF_TOKEN,填写宏名字后点击右边的Configure item进入下一步设置。

Clipboard Image.png

宏设置页面,指定参数的位置。点击右下角Add进行参数添加。

Clipboard Image.png

输入参数名称(需和密码修改请求中的参数名一致),使用指定开始和结束位置的方式,在请求响应内容中找到token,鼠标选择保持高亮,点击确定。然后在Configure Macro ItemMacro Editor全部点击确定,完成宏的录制。

Clipboard Image.png

完成后可以在宏列表框中看到刚才录制的宏。

Clipboard Image.png

第二步 添加会话处理规则

会话处理规则处,点击Add,添加一条新的规则。

Clipboard Image.png

填写规则描述(使用便于区分的文字内容),添加一个动作,在请求之前运行一个宏。

Clipboard Image.png

动作编辑中,选择刚才录制的宏,选择只更新指定的参数,输入Token产生名称user_token,点击确定。

Clipboard Image.png

完成动作编辑后,回到会话操作规则编辑界面,选择Scope,设置这个宏的作用域。

Clipboard Image.png

完成上述操作后,会话处理规则列表中有了新增的规则。

Clipboard Image.png

第三步 验证规则是否生效

回到Repeater页面(确保会话登陆有效,如超时,请重新登陆),再次发送密码修改的请求包,可以看到在提交请求后,user_token值自动更新,密码修改成功。

Clipboard Image.png

使用宏维持会话有效

在Web应用的安全测试或扫描中,长时间无操作、或意外触发Logout,均会导致会话失效,访问请求跳转到登陆页面,需要再次登陆,手工登陆会有一些繁琐,其实完全可以使用Burpsuite的宏在会话失效后完成自动登录。

第一步:分析登陆过程

在Firefox中,点击Logout退出登陆,然后重新登陆DVWA,Burp抓包分析登陆过程。登陆退出后,页面跳转到login.php,服务器响应内容中包含user_token

Clipboard Image.png

重新执行登陆时,登陆请求中包含上一次得到的user_token

Clipboard Image.png

登陆成功后,服务器响应302,跳转到index.php

Clipboard Image.png

第二步 创建用户登陆宏

理清登陆流程后,根据这个流程创建一个用户登陆的宏。账号重新登陆时,需要两个动作,第一个是GET请求login.php页面,获取user_token,下一个动作是发现账号、密码和user_token进行登陆。在录制宏选项中,按住Ctrl,选择两个请求。

Clipboard Image.png

两个条目分别进行配置:

Clipboard Image.png

第一个动作的GET请求,与前面CSRF绕过的配置一样,选择user_token位置,添加变量。

Clipboard Image.png

第二个动作,POST请求中的几个参数,username、password、Login都保持不变,user_token使用宏里上一次请求的参数返回值。

Clipboard Image.png

完成后保持宏,命名为User_Login

第三步 创建会话处理规则

添加一条新的规则,规则描述为User_Login(可随意写)。添加规则动作,选择Check session is valid,验证会话是否有效。

Clipboard Image.png

设置判断会话是否失效的标志和会话失效后的操作,会话失效后,运行之前的登陆宏,从宏的请求响应中更新参数值。

Clipboard Image.png

Clipboard Image.png

Tools Scope选择上Proxy,URL Scope添加整个DVWA路径。

Clipboard Image.png

第四步 验证规则有效性

浏览器清楚所有Cooke,输入DVWA地址,Burpsuite宏自动登录网站,浏览器页面不会跳转到登陆页面,而是直接进入主界面。

Clipboard Image.png

Burpsuite宏和其它工具结合使用

通过前面两个宏的操作,经过Burpsuite的HTTP请求,可以实现CSRF Token绕过和会话失效后的自动登录,使用其它工具对Web应用进行测试时,可以将代理指向Burpsuite,避免了Token和会话失效影响工具的漏洞发现。

与Sqlmap的结合使用

使用DVWA的Sqli页面演示,当面页面id参数存在SQL注入漏洞。由于会话已经失效,使用Sqlmap无法发现漏洞。

Clipboard Image.png

将Sqlmap代理指向为Burpsuite,所有HTTP请求经过Burpsuite,注入测试成功。

Clipboard Image.png

Burpsuite历史记录中,可以查看Sqlmap的注入请求记录。

Clipboard Image.png

参考文档

Burpsuite Documentation – Options Sessions | 中文翻译:BurpSuite全局参数设置和使用

Burpsuite Documentation – Session Handling Rule Editor

Automating Web Apps Input fuzzing via Burp Macros

*本文原创作者:Shad0wpf_