【渗透案例】前台小姐姐上班摸鱼误入陌生网址—结果被XSS劫持了

16,186 阅读4分钟

beef介绍

BeeF是前欧美最流行的web框架渗透测试平台,parrot和kali等渗透测试系统,都集成Beef,而且Beef有很多好使的payload。

例如,通过XSS这个简单,BeeF可以通过一段编制好的javascript控制目标主机的浏览器,通过浏览器拿到各种信息并且扫描内网信息,非常强大。

beef工作原理简介

1、启动beef,登录beef的Web端Web-beef

2、在网页Web1的代码中植入js代码段

3、用户user1通过浏览器访问网页

4、beef会通过植入js代码,劫持user1的浏览器,获取浏览器的各种信息

5、在Web-beef端可以看到大量user1的信息,以及是否可渗透的选项等。

kali下使用beef

一般情况下,kali、parrot等渗透os都是集成了beef的,如果你的系统没有安装的话,可以使用命令手动安装。

beef的安装目录及结构

apt install beef-xss    #安装beef

systemctl start beef-xss.service  #开启beef 

systemctl stop beef-xss.service     #关闭beef 

systemctl restart beef-xss.service  #重启beef

beef配置IP地址及默认密码

kali下的BeeF配置文件在 /usr/share/beef-xss/config.yaml,其它的配置文件也在这个目录的子目录 下,往后在使用某些功能时,需要修改对应的配置文件。

permitted_hooking_subnet: "0.0.0.0/0"     #指定某个网段,只有在这个网段的浏览器才能被hook
permitted_ui_subnet: "0.0.0.0/0"          #指定某个网段,只有在这个网段的浏览器才能访问管理UI
host: "0.0.0.0"                           #设置beef服务器的主机IP地址,如果有自己的域名,那么可以设置自己的域名, 没有就使用默认
port: "3000"                              #设置beef服务器监听的端口,默认3000,可以设置改成8080,伪装成tomcat,记得端口号需要大于1024
xhr_poll_timeout: 1000                    #受害浏览器轮询beef主机的时间, 默认为1秒,可以设置为更低。
public: ""                                #public hostname/IP address 
public_port: ""                           #experimental 
                   # 这是让BeEF运行在一个反向代理或者NAT环境下才需要设置的。 
web_ui_basepath: "/ui"                    #管理页面的URI, 默认是/ui, 建议修改,这样就不会让别人找到你的管理页面
hook_file: "/hook.js"                     #hook_file 的名称, 建议修改,可以修改为jquery.js之类的来提升隐蔽性
credentials: user: "beef" passwd: "beef"  #管理页面登录的用户名和密码, 这个一定要改,两个都改是最好的

使用beef渗透测试流程

启动beef

启动成功

通过web端访问

1、输入config.xml中配置的用户名和密码,登录beef管理台

2、在网站中hook.js代码

如下图:

3、客户端192.168.107.110,访问这个页面,就会被beef勾住,

浏览器的大量信息就被beef获取到了

4、获取浏览器cookie

5、网页重定向,目标浏览器跳转到你指定的网页

6、登录弹窗,获取用户名和密码

如下图,给目标浏览器一个弹窗,

为装成windows验证,获取用户名密码。

如果,目标浏览器接受了,输入了用户名和密码,

我们在beef端,可以获取对方输入的用户名和密码。

模块颜色及解释

在内部,BeEF可以检测出哪些命令模块可以在当前的浏览器工作, 并用颜色表示:
绿色:命令模块可以在目标浏览器上运行,且用户不会感到任何异常
橙色:命令模块可以在目标浏览器上运行,但是用户可能会感到异常(比如可能会有弹窗,提示,跳转 等)
灰色:命令模块尚未针对此目标进行验证,即不知道能否可运行
红色:命令模块不适用于此目标