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

如上图所示


LPE基础
http://www.psbazx.com/2021/02/01/LPE基础/
Beitragsautor
皮三宝
Veröffentlicht am
February 1, 2021
Urheberrechtshinweis