经验分享 | Burpsuite中宏的使用
作者:admin | 时间:2017-12-15 00:46:04 | 分类:黑客技术 隐藏侧边栏展开侧边栏
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漏洞存在于密码修改页面,在浏览器输入密码提交,密码修改成功。
在Burp代理的HTTP history中找到修改密码的请求包,发送到Repeater测试,由于user_token
已失效,密码修改失败,HTTP状态码为302,重定向到index.php
页面。
下面,开始使用宏绕过CSRF验证:
第一步:录制宏
宏的管理界面位于Project Options → Sessions
,点击Add
,新建一个宏。
从HTTP请求记录中选择获取CSTF TOKEN的请求,选择后确定。
如果历史记录中没有该请求,可以点击右上角的
Intercept
开关按钮,关闭代理截断,然后在浏览器中执行一次修改密码操作。
之后进入宏编辑界面,输入宏的名字,名字可随便写。我这里命名为Get_CSRF_TOKEN
,填写宏名字后点击右边的Configure item
进入下一步设置。
宏设置页面,指定参数的位置。点击右下角Add
进行参数添加。
输入参数名称(需和密码修改请求中的参数名一致),使用指定开始和结束位置的方式,在请求响应内容中找到token,鼠标选择保持高亮,点击确定。然后在Configure Macro Item
、Macro Editor
全部点击确定,完成宏的录制。
完成后可以在宏列表框中看到刚才录制的宏。
第二步 添加会话处理规则
会话处理规则处,点击Add,添加一条新的规则。
填写规则描述(使用便于区分的文字内容),添加一个动作,在请求之前运行一个宏。
动作编辑中,选择刚才录制的宏,选择只更新指定的参数,输入Token产生名称user_token
,点击确定。
完成动作编辑后,回到会话操作规则编辑界面,选择Scope
,设置这个宏的作用域。
完成上述操作后,会话处理规则列表中有了新增的规则。
第三步 验证规则是否生效
回到Repeater页面(确保会话登陆有效,如超时,请重新登陆),再次发送密码修改的请求包,可以看到在提交请求后,user_token值自动更新,密码修改成功。
使用宏维持会话有效
在Web应用的安全测试或扫描中,长时间无操作、或意外触发Logout,均会导致会话失效,访问请求跳转到登陆页面,需要再次登陆,手工登陆会有一些繁琐,其实完全可以使用Burpsuite的宏在会话失效后完成自动登录。
第一步:分析登陆过程
在Firefox中,点击Logout退出登陆,然后重新登陆DVWA,Burp抓包分析登陆过程。登陆退出后,页面跳转到login.php
,服务器响应内容中包含user_token
。
重新执行登陆时,登陆请求中包含上一次得到的user_token
。
登陆成功后,服务器响应302,跳转到index.php
。
第二步 创建用户登陆宏
理清登陆流程后,根据这个流程创建一个用户登陆的宏。账号重新登陆时,需要两个动作,第一个是GET请求login.php页面,获取user_token,下一个动作是发现账号、密码和user_token进行登陆。在录制宏选项中,按住Ctrl,选择两个请求。
两个条目分别进行配置:
第一个动作的GET请求,与前面CSRF绕过的配置一样,选择user_token
位置,添加变量。
第二个动作,POST请求中的几个参数,username、password、Login都保持不变,user_token
使用宏里上一次请求的参数返回值。
完成后保持宏,命名为User_Login
。
第三步 创建会话处理规则
添加一条新的规则,规则描述为User_Login
(可随意写)。添加规则动作,选择Check session is valid
,验证会话是否有效。
设置判断会话是否失效的标志和会话失效后的操作,会话失效后,运行之前的登陆宏,从宏的请求响应中更新参数值。
Tools Scope选择上Proxy,URL Scope添加整个DVWA路径。
第四步 验证规则有效性
浏览器清楚所有Cooke,输入DVWA地址,Burpsuite宏自动登录网站,浏览器页面不会跳转到登陆页面,而是直接进入主界面。
Burpsuite宏和其它工具结合使用
通过前面两个宏的操作,经过Burpsuite的HTTP请求,可以实现CSRF Token绕过和会话失效后的自动登录,使用其它工具对Web应用进行测试时,可以将代理指向Burpsuite,避免了Token和会话失效影响工具的漏洞发现。
与Sqlmap的结合使用
使用DVWA的Sqli页面演示,当面页面id参数存在SQL注入漏洞。由于会话已经失效,使用Sqlmap无法发现漏洞。
将Sqlmap代理指向为Burpsuite,所有HTTP请求经过Burpsuite,注入测试成功。
Burpsuite历史记录中,可以查看Sqlmap的注入请求记录。
参考文档
Burpsuite Documentation – Options Sessions | 中文翻译:BurpSuite全局参数设置和使用
Burpsuite Documentation – Session Handling Rule Editor
Automating Web Apps Input fuzzing via Burp Macros
*本文原创作者:Shad0wpf_