茴香豆安全 - Burp Suite 爆破管理后台
一、前言
- WEB网站渗透测试的最直接目标,就是登陆网站的管理后台,获得网站的控制权,进而获得网站服务器的控制权,最后突破到内网
- 除了之前我们学习的 sql注入、cookie劫持等技术,管理员账号密码暴力破解也是经常使用的方法。很多安全意识不强的人(大多数人),会使用自己的生日,一些简单的字母或者数字组合来作为自己的密码,这就为暴力破解提供了可乘之机
二、相关工具准备
- Burp Suite,是用于攻击web应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。
- 在线靶场,我们这次使用 http://59.63.200.79:8003/dami_5=/
- 推荐使用火狐Firefox浏览器,并安装上Proxy插件,因为我们很多渗透测试都会利用到浏览器的代理功能,安装插件会更加方便,当然不安装直接设置浏览器的代理也是可以的。没有推荐使用Chrome浏览器是因为插件安装很麻烦,你懂的。
三、具体测试过程
1. 打开靶场网站,寻找管理后台
-
浏览器打开靶场网站
image.png
怎么找一个网站的管理后台,除了使用一些专业的扫描工具,大多数情况下可以直接手动尝试,比如,输入admin、manager、login等,如果是一些主流的cms其实他的管理后台的登录页地址都是固定的
- 我们尝试输入admin,很容易就找了这个网站的后台
http://59.63.200.79:8003/dami_5=/admin.php
image.png
- 一看到登陆界面上有验证码,心就凉了半截,因为验证码的主要作用就是防止暴力破解!,但是也有很多网站的验证码是形同虚设的,比如可以重复使用,比如只做了前端验证等等。我们只能等下先试试了。
2. 打开Burp Suite工具,截获相关请求数据
-
Burp Suite工具有很多版本,有社区免费版和商业收费版等,kali中的是免费版,免费版有很多的限制,并不是很好用,所以建议大家去安装收费版,怎么安装这里就不展开了,请自行百度。
image.png - 最上面一排的tapbar按钮,就对应着Burp的一些功能,我简单介绍下
- Target(目标),显示目标目录结构的的一个功能
- Proxy(代理),拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
- Intruder(入侵),一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
- Repeater(中继器),一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。
- Sequencer(会话),用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
- Decoder(解码器),进行手动执行或对应用程序数据者智能解码编码的工具。
- Comparer(对比),通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
- Extender(扩展),可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
- Options(设置选项),对Burp Suite的一些设置
-
此次测试我们主要使用的到 Proxy和Intruder这两个模块功能。根据上图的红框提示,我们需要把浏览器的代理设置到127.0.0.1:8080
image.png -
我这里是使用的插件,设置起来很方便,强烈推荐。没装插件,或者使用别的浏览器的同学,直接去设置浏览器的代理就行了
image.png -
随便输入账号、密码、验证码,然后点击登录按钮
image.png - Burp中就截获到了相关的数据,下面红框中的username=admin&password=111111&verify=69436,其实就是我们输入的值。注意上面的 intercept is on 按钮必须打开才能截获到数据
3. 暴力破解
-
右键菜单,选择导入数据到Intruder破解模块。
image.png -
此时intruder的tab菜单就变色亮了,切换到此模块。
image.png -
观察下绿色背景的部分,我们发现系统已经自动选择了很多可以爆破的参数,但是实际上我们只要爆破username和password这两个参数就行了,所以先点击clear按钮清除掉全部参数,
image.png -
再双击红框admin选中,点击add按钮,这样就添加了一个 username对应的参数
image.png -
在同样把password对应的值111111选中,设置为参数。这样需要爆破的参数就设置好了,接下来选择爆破的类型。
image.png -
介绍下这四种模式,大多数情况下我们只会使用第一种和第四种,不感兴趣的同学直接跳过
- Sniper标签 这个是我们最常用的,Sniper是狙击手的意思。这个模式会使用单一的payload【就是导入字典的payload】组。它会针对每个position中$$位置设置payload。这种攻击类型适合对常见漏洞中的请求参数单独地进行测试。攻击中的请求总数应该是position数量和payload数量的乘积。
- Battering ram, 这一模式是使用单一的payload组。它会重复payload并且一次把所有相同的payload放入指定的位置中。这种攻击适合那种需要在请求中把相同的输入放到多个位置的情况。请求的总数是payload组中payload的总数。简单说就是一个playload字典同时应用到多个position中
- Pitchfork,这一模式是使用多个payload组。对于定义的位置可以使用不同的payload组。攻击会同步迭代所有的payload组,把payload放入每个定义的位置中。比如:position中A处有a字典,B处有b字典,则a【1】将会对应b【1】进行attack处理,这种攻击类型非常适合那种不同位置中需要插入不同但相关的输入的情况。请求的数量应该是最小的payload组中的payload数量
- Cluster bomb,这种模式会使用多个payload组。每个定义的位置中有不同的payload组。攻击会迭代每个payload组,每种payload组合都会被测试一遍。比如:position中A处有a字典,B处有b字典,则两个字典将会循环搭配组合进行attack处理这种攻击适用于那种位置中需要不同且不相关或者未知的输入的攻击。攻击请求的总数是各payload组中payload数量的乘积。
- 因为我们不知道用户名也不知道密码,我们要爆破两个参数,所以我们要选择第四种攻击模式 Cluster bomb,下面我们来设置每个参数所对应的爆破字典
-
先选择参数位置1(对应的是username用户名的值),然后点击load加载对应的爆破的字典
image.png -
再选择参数位置2 (对应的是password用户密码的值),点击load加载对应的密码字典
image.png - 发现没有,我们用户名采用了一个500多条记录的字典,密码采用了1000多条记录的字典,那么暴力破解最大要尝试多少次呢?红框中已经计算出来了699598次,其实就是两个字典的乘积。
- 合理的字典是爆破能否成功的关键,网络上动辄几百万、上亿条记录的字典其实我们很难使用的,我们应该根据目标网站,结合收集到的各种信息,生成我们自己字典。当然一些常用的弱口令,字母数字组合的字典也是可以用的
-
点击右上角的 start attack 按钮开始攻击,我们选择一条记录,然后点击response,发现错误提示“是账号不存在或者已经禁用”,并不是什么“验证码错误的”提示,再看看其他的记录,都是这样,由此可见这个之前我们所担心的验证码问题并不存在,也就是说他的验证码形同虚设。
image.png
4. 获取用户名和密码
-
暴力破解可能很快得到答案,也可能要持续很久,这个跟你破解的速度,字典的内容有很大的关系。那么我们怎么判断是否破解成功了呢,经过漫长的等待...
image.png -
我们发现Length这一列,别的记录都是1633,而有条记录值是487,那么就很可疑啦,用这条数据的账号密码登陆试试,果然成功了
image.png -
这样我们就拿到了后台管理员的账号和密码,测试到此结束
5. 思考一下
- 这种同时爆破账号密码的多参数模式其实效率是很低的,假设是500的用户名字典+1000字典的密码字典,理论上就要试验500*1000 = 50W次,更何况如果用上几十万条记录的字典,那更是无法想象
- 如果我们分步骤来爆破,先确定账号,再确定密码,那么其实只需要500+1000 = 1500 次,爆破的次数大大减少。但是我们怎么判断账号是否正确呢。这就要借助与很多网站的“贴心”错误提示了,有很多网站你输入错误的用户名会提示,用户名不存在,你如果用户名输对了,会提示密码错误。这样就给了我们可乘之机。
- 实际上这次测试最后真正渗透成功,正是采用了这种方式。这里就不演示了
五、最后
- 本次测试,我们主要学习了使用Burp的暴力破解的功能,如今网络安全攻防技术的发展,有各种各样的方式来防止暴力破解,比如各种验证码,各种活体验证,甚至限制同一个IP对服务器的访问频率等。但是仍然有大量的网站什么防护都没有,存在被爆破破解的隐患。
- 为了网站的安全,减少被暴力破解的风险我们需要注意以下几点
- 账号密码尽可能具有一定的复杂度
- 错误提示不要给的太具体,可以采用统一的错误提示,这样避免各个突破。
- 验证码是必须的,最好每登陆一次就失效,或者有限时间内才能使用。当然也可以采用别的验证方式,总之就是给暴力破解制造难度
- 结合一些其他的安全策略,比如密码错误N次就锁定账号,同一个IP多次登陆错误就锁定等等