从这一章开端,正式进入了进犯阶段。BeEF供给了很多的进犯模块,能够直接运用。除了已有的模块,BeEF还供给了API,能够运用API来自行开发新的进犯模块。这一章,要介绍怎么绕过同源战略,还会介绍BeEF的一个强壮的功用Tunneling Proxy。
绕过同源战略
笔者在第一章就现已介绍了SOP(同源战略),SOP把具有相同主机名 、协议和端口的页面视为同一来历。不同来历的资源之间交互是受到约束的。由于SOP的存在,BeEF只能对被勾子钩住的页面地点域进行操作。假如有方法绕过SOP,那么无疑会使进犯面扩展。
绕过SOP可从两方面下手。第一个是从浏览器本身和插件的缝隙下手,一些旧版的浏览器曾被发现有绕过SOP的缝隙,旧版的插件也有相似的状况(JAVA,Adobe Flash等)。由于笔者本身才能约束,无法介绍这一方面的相关内容,读者能够自行查阅相关信息。第二个是Web的开发者过错的设置导致,下面介绍这一方面。
SOP与DOM
js或其它协议拜访DOM时,也是需求恪守SOP。可是有时候子域之间需求彼此拜访,比如要login.site.com的代码拜访admin.site.com中的表单。那么开发人员能够经过设置document.domain特点来到达意图。以login.site.com和admin.site.com来举个比如。为了使login.site.com拜访admin.site.com的表单,那么开发人员会在admin.site.com的页面中参加:
document.domian = "site.com"
admin.site.com页面有了这一句js句子,那么site.com下一切页面的js都能够拜访admin.site.com页面的DOM了。假如test.site.com中有XSS缝隙,那么进犯者能够运用BeEF钩住它,然后接着来进犯admin.site.com。这样不经意之间就会放宽了SOP,扩展了BeEF的进犯面了。
SOP与CORS
还记得上一章提过的跨域资源同享( CORS)吗?跨站恳求能够正常建议,可是由于SOP的原因,回来成果会被浏览器阻拦。CORS机制答应进行跨域拜访。假如开发者设置过错,这也会使BeEF的进犯面扩展。举个比如,为了使user.site.com拜访login.site.com的资源,开发人员或许会在login.site.com的服务器设置回来以下呼应首部:
Access-Control-Allow-Origin: *.site.com
Access-Control-Allow-Methods: OPTIONS, GET, POST
由于有上面的首部,所以会导致site.com下的一切子域都能够拜访login.site.com的资源(浏览器不会阻拦)。假如test.site.com中有XSS缝隙,那么进犯者能够运用BeEF钩住它,然后接着来进犯login.site.com。这样不经意之间就会放宽了SOP,扩展了BeEF的进犯面了。
Tunneling Proxy
前面讲了那么多理论,都是为后边的进犯做准备。这是第一个介绍的进犯模块,所以笔者挑了一个笔者个人认为BeEF中最为强壮的兵器之一:Tunneling Proxy。
简略来说Tuneling Proxy是把被钩住的浏览器作为一个署理,这项技能也被叫做浏览器署理。
1. 进犯者向Hook-domain.com主页向地道署理发送一个GET恳求。
2. 地道署理接收到恳求后,它解析收到的HTTP恳求,将其转换成AJAX恳求,然后经过上一章说介绍的通讯技能(XMLHttpRequest或WebSocket)将该恳求刺进被勾连的浏览器要履行的后续JavaScript代码中。
3. 被勾连的浏览器接收到数据后,会向Hook-domain.com的主页宣布一个AJAX恳求。由所以浏览器宣布的恳求,所以它会带上Hook-domain.com的Cookie一同发送。
4. Hooke-domain.com接到被勾连的浏览器的恳求后,返会HTTP呼应。呼应的内容会被勾子截取,直接发送回给署理地道。所以呼应的内容不会在被勾连的浏览器中显现。
5.呼应的内容从被勾连的浏览器发送给署理地道。
6.呼应被发送回进犯者这儿。
上面便是浏览器署理的基本原理,实践的进程要杂乱的多(主要是转换成ajax恳求的进程要杂乱些),单单看原理或许很难了解它终究有什么效果。下面给个比如,笔者强烈推荐读者也实践操作一次。
下面是测验环境:
本次测环境依旧是kali体系,而且需求运用到三个不同的浏览器。笔者运用 firefox 的 -P 选项创建了三个不同profile的浏览器,它们三个彼此之间是不会同享数据的。
浏览器
效果
浏览器A
登录BeEF服务器。
浏览器B
作为受害者, 且登录了Freebuf网站。
浏览器C
作为进犯者,经过Tuneling proxy来盗取浏览器B的会话。
敞开BeEF服务器, 接着运用浏览器A登录BeEF服务器。
运用浏览器B拜访Freebuf网站,接着登录。然后回来主页,运用Burp Suite截取回来的数据,并在里边注入勾子。
这时的浏览器B如下图,笔者现已登录,而且这个页面现已注入了勾子:
浏览器B的使命现已完毕了,从现在开端到测验完毕,只需一向坚持这个姿态就能够了。
这时的浏览器A如下图,能够看到浏览器B现已被钩住了:
敞开Tunneling Proxy,在kali中默许敞开Tunneling Proxy功用。假如是自主装置BeEF,需求敞开,配置文件是beef目录的extensions/proxy/config.yaml。保证有下图的设置, 修改后重启BeEF:
敞开了Tunneling Proxy功用之后,接着是挑选一个被勾连的浏览器做为署理。在这个比如中自然是挑选被钩住的浏览器B。在浏览器A中,点击左上方的主机,然后点击右键,挑选Use as Proxy。
[1] [2] 黑客接单网