一、ms08-067漏洞背景
1、原理:
MS08-067漏洞是通过MSRPC over SMB通道调用Server程序中的NEtPathCanonicalize函数时触发的,而 NetPathCanonicalize 函数在远程访问其他主机时,会调用 NetpwPathCanonicalize 函数,对远程访问的路径进行规范化,而在 NetpwPathCanonicalize 函数中存在的逻辑错误,造成栈缓冲区可被溢出,而获得远程代码执行(Remote Code Execution)。漏洞全称是“Windows Server服务RPC请求缓冲区溢出漏洞”,攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC(Remote Procedure Call,远程过程调用)请求,造成栈缓冲区内存错误,从而被利用实施远程代码执行。
2、445端口:
445端口的作用是实现一些共享文件夹以及一些共享打印机的访问工作,只要在局域网络的范围之内就能进行轻松的访问工作,其中主要包括SMB网络服务和MSRPC网络服务。
SMB(Server Message Block,服务器消息块)首先提供了 Windows 网络中最常用的远程文件与打印机共享网络服务,其次,SMB的命名管道是 MSRPC 协议认证和调用本地服务的承载传输层。
SMB 作为应用层协议,其直接运行在TCP 445端口上,也可通过调用 NBT 的 TCP 139端口来接收数据。
MSRPC(Microsoft Remote Procedure Call,微软远程过程调用)是对 DCE/RPC 在 Windows 系统下的重新改进和实现,用以支持Windows系统中的应用程序能够无缝地通过网络调用远程主机上服务进程中的过程。
3、路径规范化:
路径规范化就是把路径字符串中的 / 转换成 \,同时去除相对路径。
4、msfconsole相关命令:
- back 从当前环境返回
- banner 显示一个MSF banner
- color 颜色转换
- connect 连接一个主机
- info 显示一个或多个模块的信息
- irb 进入irb脚本模式
- jobs 显示和管理作业
- kill 杀死一个进程
- load 加载一个插件
- loadpath 在一个路径搜索并加载模块
- quit 退出MSF
- resource 运行存储在一个文件中的命令
- route 查看一个会话的路由信息
- search 搜索模块名和描述
- set 给一个变量赋值
- setg 把一个值赋给全局变量
- show 显示所给类型的模块,或所有模块
- sleep sleep函数,睡眠时间
- unload 卸载一个模块
- unset 解除一个或多个变量
- unsetg 解除一个或多个全局变量
- use 通过名称选择一个模块
- version 显示MSF和控制台库版本号
二、漏洞复现:
kali:192.168.79.128
windows:192.168.79.131
首先查看windows中是否打开445端口,在cmd中执行netstat -an
关闭windows的防火墙
使用namp工具扫描查看是否存在漏洞
扫描发现存在漏洞ms08-067,打开Msfconsole模块并查找相关漏洞
根据提示使用use命令,加载找到的模块,再使用show options命令显示ms08-67模块所需参数
用set rhosts ,set rport,set targets命令定位攻击目标
使用run命令或者exploit命令开始渗透
向靶机发送大量数据,造成缓冲区溢出,渗透成功获得权限,使用shell命令。
使用dir命令可以查看目录,结束复现。