
内核漏洞
Wwoc
时间不会停
展开
-
[翻译]Exploiting CVE-2015-0057 ——Part 1
前言 NCC的关于CVE-2015-0057漏洞分析的文章写的十分详细,但是是英文的,这里再一边翻译一边阅读一下吧。这里是第一部分的内容,大致说了如何利用漏洞触发点来构造一个新的堆溢出漏洞利用,其中还包括一些前置知识。传送门漏洞点 下面的代码显示了一个相当微妙的bug,下面的代码为win32k!xxxEnableWndSBArrows的汇编:没打补丁前:text:FFFFF97FFF1B157D mov r8d, r13d.text:FFFFF97FFF1B1580 mov rdx,原创 2020-05-27 18:11:31 · 639 阅读 · 1 评论 -
[翻译] Kernel Attacks through User-Mode Callbacks
前言本篇属于前置知识,在后续的CVE复现中需要使用到。原文为英文,一边翻译一边记笔记了!尽量用中文描述的浅显易懂一些。原文传送门1. 背景知识1.1 Win32k.sys介绍 Win32k本质上由三个主要组件组成:图形设备接口(GDI)、窗口管理器(用户)和支持XP/2000和Longhorn (Vista)显示驱动程序模型的DirectX api(有时也被认为是GDI的一部分)。窗口管理器负责管理Windows用户界面,例如控制窗口显示、管理屏幕输出、从鼠标和键盘收集输入以及向应用程序传递原创 2020-05-26 23:36:54 · 823 阅读 · 0 评论 -
CVE-2018-8120 漏洞分析复现-Day2-完成
0x00:前言昨天在最后复现的时候还差一点点,已经知道了漏洞点但是还没有完成利用。使用之前在0 day安全上学到的任意地址写漏洞技术似乎不是那么好直接的使用。其实是需要用到滥用GDI bitmap这个技术,今天来学习!参考文章传送门传送门0x01:GDI bitmap本技术重要的部分在于,当创建一个bitmap时,我们可以泄露出其在内核中的地址。这一泄露在Windows10的v1607版本之后被打上了补丁。当创建一个bitmap时,一个结构被附加到了父进程PEB的GdiSharedH原创 2020-05-25 22:07:14 · 762 阅读 · 0 评论 -
CVE-2018-8120 漏洞分析复现-Day1
0x00:前言对于HEVD靶场的调试告一段落,接下来尝试对一些真实的漏洞进行分析复现。参考:freebuf0x02:背景1. 漏洞描述部分版本Windows系统win32k.sys组件的NtUserSetImeInfoEx()系统服务函数内部未验证内核对象中的空指针对象,普通应用程序可利用该空指针漏洞以内核权限执行任意代码。2. 受影响的版本以下软件版本受到影响。未列出的版本要么超过其支持生命周期,要么不受影响。要确定软件版本或版本的支持生命周期,请查阅Microsoft支持生命周期。W原创 2020-05-24 21:23:24 · 1142 阅读 · 1 评论 -
Windows内核漏洞学习-内核利用程序之池溢出
0x00:前言昨天阅读了内核池的一些原理,与Linux堆还是有很多相似的。今天继续调试HEVD中池溢出攻击。参考的原文:传送门0x01:漏洞原理漏洞源码:NTSTATUS TriggerPoolOverflow(IN PVOID UserBuffer, IN SIZE_T Size) { PVOID KernelBuffer = NULL; NTSTATUS Status = STATUS_SUCCESS; PAGED_CODE(); __try {原创 2020-05-24 00:45:00 · 811 阅读 · 0 评论 -
[翻译]Windows内核漏洞学习-内核池攻击原理
前言在练习HEVD的内核池溢出漏洞之前,首先先需要了解一下内核池溢出的一些攻击方法和原理。这里对kernelpool-exploitation进行翻译阅读一下。kernelpool-exploitation正文ListEntry Flink OverwriteWin7在从ListHeads[n]分配池块(对于给定的块大小)时,使用的安全算法验证的是ListHeads[n]的列表条目结构,而不会去验证即将unlink的实际块的结构。因此,在一个free的块中覆盖它的Flink可能会导致ListH原创 2020-05-22 22:09:40 · 867 阅读 · 0 评论 -
[翻译]Windows 内核池原理 (win7 x86)
0x00:前言查了一下好像没看到啥关于内核池原理的翻译,国外的一个PPT有详细说Win7池溢出的原理。内容比较长,今天来翻译阅读一下Win 7内核的池部分的原理。Kernel Pool Exploitation on Windows 7 0X01:正文1 内核池的基本属性内核池被分为 Non-Paged Pools, Paged Pools, Session Pools等类型。每个池都由一个池描述符所定义该结构为 POOL_DESCRIPTOR 。通过该结构我们可以追踪有多少原创 2020-05-21 15:47:35 · 1141 阅读 · 0 评论 -
Windows内核漏洞学习-UAF
0x00:前言本章所提到的漏洞为UAF(释放后利用),这也是目前我所接触到的第一个复杂一点的内核漏洞。参考文章:传送门0x01:漏洞原理NTSTATUS FreeUaFObject() { NTSTATUS Status = STATUS_UNSUCCESSFUL; PAGED_CODE(); __try { if (g_UseAfterFreeObject) { DbgPrint("[+] Freeing UaF Object原创 2020-05-20 18:43:56 · 961 阅读 · 0 评论 -
Windows内核漏洞学习-内核利用程序之整数溢出
0x00:前言这是最后一个简单的漏洞利用了,话不多说直接开始吧。0x01:漏洞原理这里是漏洞程序源码:NTSTATUS TriggerIntegerOverflow(IN PVOID UserBuffer, IN SIZE_T Size) { ULONG Count = 0; NTSTATUS Status = STATUS_SUCCESS; ULONG BufferTerminator = 0xBAD0B0B0; ULONG KernelBuffer[BUFFER_原创 2020-05-19 18:36:01 · 605 阅读 · 0 评论 -
Windows内核漏洞学习-未初始化栈变量利用
0x00:前言今天继续学习HEVD的未初始化栈变量漏洞利用,根据我的经验,只要是没涉及到堆的,难度应该都是不大的。原文讲的肯定比我好,我这里主要描述出调试过程。传送门1-外文翻译成中文原文传送门2-看雪一位原创0x01:漏洞原理首先看漏洞源码:NTSTATUS TriggerUninitializedStackVariable(IN PVOID UserBuffer) { ULONG UserValue = 0; ULONG MagicValue = 0xBAD0B0B0;原创 2020-05-18 14:35:31 · 801 阅读 · 1 评论 -
Windows内核漏洞学习-空指针解引用
0x00: 前言 在看雪论坛看到许多关于HEVD的Windows内核漏洞教程,其中有一个是翻译国外的一个系列,感觉讲的很好,接下来就会跟着他将这个HEVD系列的漏洞走一遍了。昨天学了栈溢出,其实以前就学过,只不过没有操作过内核态的,今天继续学习空指针解引用,也是比较简单的漏洞,方便入门。传送门0x01: 漏洞原理首先看漏洞程序源码NTSTATUS TriggerNullPointerDereference(IN PVOID UserBuffer) { ULONG UserValue原创 2020-05-17 16:48:07 · 1367 阅读 · 0 评论 -
Windows内核漏洞学习-栈溢出(无GS)
0x00: 前言在上一节中,将HEVD的环境配置完成,接下来进行内核漏洞的调试复现。为什么首先做栈溢出呢,因为我以前学过一些Pwn知识,栈溢出算是最简单的漏洞了。使用的环境为:Windows7 x86 虚拟机系统双机调试环境HEVD靶场环境0x01:漏洞原理栈溢出原理栈溢出,即在局部变量拷贝时,没有控制好拷贝进局部变量的长度。而局部变量又是保存在栈中的,一旦长度过长,就会导致数据溢出淹没栈环境,覆盖EBP甚至返回地址。HEVD漏洞原理分析给出实验漏洞代码。这里安全和不安全的操作都对比给原创 2020-05-16 18:16:10 · 1066 阅读 · 0 评论 -
Windows内核漏洞学习-HEVD的使用
HEVD的使用HEVD简单介绍和下载 HEVD是一个漏洞靶场,里面有大量写好的漏洞,主要用它来学习漏洞的利用。在Github上就可以找到该项目,下面贴一下下载传送门,我用的是1.2版本。https://github.com/hacksysteam/HackSysExtremeVulnerableDriver/releasesHEVD安装 下载好之后,程序有有漏洞和无漏洞两个版本。使用有漏洞的x86版本,根据前面学习到的驱动编程知识,将它安装到Win7 32位环境中。在安装时候选择自动执行,然后原创 2020-05-15 21:19:46 · 2704 阅读 · 0 评论 -
《0day 安全》-22章-内核漏洞利用技术
内核漏洞利用技术22.1 利用实验之 exploitme.sys 首先给出实验代码,这里的代码经过作者微小的修改,但是基本与书上一致,看懂这里的代码需要有一点驱动编程基础。#include<ntddk.h>#define DEVICE_NAME L"\\Device\\ExploitMe" #define DEVICE_LINK L"\\DosDevices\\ExploitMe" #define FILE_DEVICE_EXPLOIT_ME 0x00008888 #define原创 2020-05-14 19:23:44 · 828 阅读 · 0 评论 -
探索ring0-内核漏洞概述 和 实验环境配置
探索ring0内核漏洞概述内核漏洞的分类 运行在ring0上的操作系统内核、设备驱动、第三方驱动能共享同一个虚拟地址空间,可以完全访问系统空间的所有内存,而不像用户态进程那样拥有独立私有的内存空间。由于内核程序的特殊性,内核程序漏洞类型也更加丰富。 可以从漏洞的严重程度和漏洞的利用原理两个角度来对内核漏洞进行分类。漏洞的严重程度是指漏洞利用后所造成的危害;漏洞的利用原理指漏洞利用过程中使用的原理和技术。 按照漏洞严重程度依次可以分为:远程拒绝服务、本地拒绝服务、远程任意代码执行和本地权限提升原创 2020-05-13 18:02:21 · 726 阅读 · 0 评论