LPE基础

国内资料太少只能摁磕英文,好在英语底子还在。

和symbolic link相关的技术在不久后windows会上通用补丁,基本可以无视了

大部分资料都是来自国外Google project zero的James Forshaw,包括工具。

Introduction.to.Logical.Privilege.Escalation.on.Windows

Path Canonicalization

image-20210112191658472

这种看似只能load C:\Windows\ 目录下的dll,但是可以通过”..”绕过来回退到上级目录

Insecure Path Usage

image-20210112192551052

这种就是加了check的情况

可以通过ads附加数据流

ads实例可以参考CVE-2020-12431

可以把它当作一个文件,为一个文件或者文件夹添加ads,然后loadlib直接load我们写入的这个ads即可

image-20210112193014416

教材ppt写的很明确

TOCTOU

TOCTOU on Name

image-20210112201750789

这个主要是利用了LoadLibrary函数的特性会添加扩展名

当然也可以通过条件竞争来打

image-20210112213801439

还有一种TOCTOU也是最常见的就是利用oplock和symbolic link

image-20210112214036075

可以看到check了扩展名

oplock主要是为了增加条件竞争的成功概率

具体方法是创建软连接然后设置oplock,oplock触发后移除软连接并创建相同文件夹然后拷贝我们的dll进去即可

DosDevices Redirect

image-20210112220242108

在学习的时候也掌握了大部分漏洞挖掘技巧

寻找攻击面->写脚本搜索->写exp

CVE-2018-8440

SchRpcSetSecurity函数在win10中会检测C:\Windows\Tasks目录下是否存在后缀为.job的文件,如果存在则会写入DACL(Discretionary Access Control List,自主访问控制列表)数据。如果将job文件硬链接到特定的dll那么特定的dll就会被写入DACL数据,本来普通用户对特定的dll只具有读权限,这样就具有了写权限,接下来向dll写入漏洞利用代码并启动相应的程序就可以提权了

CVE-2018-0983 原理与其类似

SANBOX

这边学习资料来自Nullcon

James Forshaw的俩个slides

The Windows Sandbox Paradox

这个是2015年的,当时win10还没出来着,但是原理还是很接近的,2019和这个差不多,重点讲了symbolic link但是要没了,为了方便直接放一起写了

Sandboxing Requirement

Easy to get in, hard to get out

Protects the user’s data from disclosure

Work within the limits of the OS

Sandboxed application is usable

​ Limited Performance Impact

基本上广义的sandbox就是指权限较低的,被限制了某些权限的进程,需要一些资源的时候就通过具有权限的broker process来获取,以前还以为是win10上那个像虚拟机的

image-20210131220515454

完整性级别一般是low,但是win10有新的ie sanbox是appcontainer

image-20210131220620637

上图是一般的access check,先是强制完整性校验,假如你完整性比访问程序低,你不能获取写权限

接着是owner check,这个是用来防止有人在acl中限制了owner,然后owner就不能访问自己的文件。

最后就是dacl check

但是遇到sandbox时就多加一轮

image-20210131223834400

微软提供了函数来让你创建一个低权限的进程,创建时会发现crash,因为进程初始化会调用一些函数来load dll,而进程没有权限

image-20210131224323160

image-20210131224452135

接下来就是讲攻击面

讲到symbolic的不介绍了。。。毕竟快没了

image-20210131230751209

路径规范化问题可以看前面有过介绍

image-20210131230856259

ads也是

image-20210131231041991

image-20210131231056493

假如申请Sharing Sections没有命名,sanbox process可以获得写权限

(可以看到申请的是writable,DuplicateHandle给了sanbox process 一个RO的memory)

这个是在chrome里发现的问题

具体就是因为没有命名导致没有安全描述符可以重新调用DuplicateHandle来获得一个可写的内存

image-20210131235954558

image-20210201000002494

如上图所示

文章目录
  1. 1. Introduction.to.Logical.Privilege.Escalation.on.Windows
    1. 1.1. Path Canonicalization
    2. 1.2. Insecure Path Usage
    3. 1.3. TOCTOU
      1. 1.3.1. TOCTOU on Name
      2. 1.3.2. Symbolic Link TOCTOU
    4. 1.4. DosDevices Redirect
    5. 1.5. HARD LINK
  2. 2. SANBOX
    1. 2.1. The Windows Sandbox Paradox
|