当前位置:首页 > 电脑常识 > 正文

弹性界限:如何操作环境变量进行提权 8090安适门户

11-21 电脑常识

简介
尽管进程都设置了环境变量,它们往往被用户,开发者甚至是系统自己所忽略。对付一个像样的系统来说,环境变量就是其最根柢,这里的系统包孕但不只限于Unix (Linux, BSD), Windows以及OS X。在微软系统的世界中,环境变量在其第一个版本DOS时期就已经呈现,且一直沿用至今。环境变量得到重视还得从2014年9月份发生发火的ShellShock缝隙说起。
关于ShellShock可参考
《ShellShock(破壳)缝隙余威不减:新ShellShock蠕虫扫描大量脆弱主机展开打击》
《SEED尝试系列:ShellShock打击尝试》
《破壳(ShellShock)缝隙样天职析呈报》
该缝隙在Unxi系统中通过环境变量注入,进而执行命令。
进程的环境
简言之,环境就是一个可用于进程或者用户读取写入的变量的调集。变量可由用户,措施或者是系统进行设置,用于提升运行进程时的灵活性。好比文件系统中的路径,用户名和控制执行流程的标识表记标帜。
Windows下的环境
Windows下的环境变量可以使用DOS命令设置进行读取和写入:读取:
set
写入:
set variable>=value>
在命令行单独键入“set”会显示所有当前可用的变量。注意本文中说描述的“当前可用”意思长短常相似的进程可用 —— 用户运行命令解析器这里也可以用编程的方法挪用API函数取代set命令:
Kernel32!SetEnvironmentVariable
孕育产生的功效都是一样的。只有在当前进程及其子进程中转变这些值才会孕育产生效果。只要条件允许,系统将替换所有%VARIABLE%的值。这个替换过程被称作“扩展”(expansion)。例如我们在命令行下键入:
echo %username%
输出的功效应该为扩展之后变量的值,与键入用户名的功效是一样的。
环境颠簸
正如前面所说的,环境变量已经通过一个进程设置。Windows称这种类型的环境为“不不变的环境”。当进程正在运行时它连结该变量,当结束进程不会留下任何陈迹。在Windows中还有此外一种类型的环境变量调集,其笼罩整个系统范畴,在启动过程依然连续。打点员用户可以在系统属性页面下进行设置,通过使用setx命令影响所有用户,或者直接通过设置注册表值:
HKEY_CURRENT_USER\Environment

注册表值中的扩展
Windows注册表撑持REG_EXPAND_SZ类型的值,一个字符串类型的注册表值,其命令读取进程以扩展其内的所有变量,扩展进程在措施使用该值之前执行。这个过程保证了需要依赖注册表中值的措施能正常运行,开发者不必再跟踪环境变量值。
Windows措施下的扩展
通过注册表进行搜索,很显然此中使用了一个扩展过的路径引用了许多措施,函数库,东西。即反过来依赖于环境。最常见的变量为“SystemRoot”,在正常情况下,其指向Windows安置路径,一般为“C:\Windows”。
简单总结
我们拥有可用于Windows进程的环境变量,且能自动扩展以及可以由用户设置。通过这些路径可以引用部分Windows函数库。以下为基于环境变量扩展的打击场景
场景1:”DLL注入”
假设:
如果通过一个扩展了的环境字符串加载DLL文件,打击者通过转变环境变量可获得一个进程来加载该文件,但需在创建之前供给给这个进程。
换句话说,任何一个在打击者控制下的进程,打击者都可以对它进行环境设置。
可能性:
加载的DLL文件,不管是被复制,改削,完全替换,对付加载它的进程来说权限都是一样的。“打针”一个DLL到差此外进程中而不使用任何打针技术。
应用:
最简单粗暴的要领等于使用命令行。概略流程如下:
在C:\Wherever中创建C:\Windows副本
设置环境变量set SystemRoot=C:\Wherever
结束并重启explorer.exe进程taskkill /F /IM explorer.exe   C:\Windows\explorer.exe
资源打点器将会启动并从打击者目录加载相当多的DLL。打击者可以替换它们并转变执行流程。
场景2:长途加载DLL
除了需要添加到等式这个因素以外,根基与上一个场景一样。在Windows,API在请求一个文件或是目录路径时凡是会接收一个指向长途机器的UNC路径。这个过程将会使用SMB协议测验考试访谒指定的路径。
假设:
如果打击者将%SystemRoot%扩充到一个UNC网络路径,Windows将使用SMB协议测验考试从长途路径加载该图片
可能性:
从一个被打击者控制的处事器上长途加载DLL,同时也泄漏了受害者机器的IP地点。
之后将测验考试使用已登录用户的凭证对长途处事器进行身份验证,为打击者供给更多的参考信息。
应用:
与场景1类似,但是需要使用长途路径。例如我们可以使用本地机器上共享的C盘:
set SystemRoot=\\127.0.0.1\c$\Windows

场景3:启动时加载DLL
就目前而言,此打击还算不上长期性打击。这也意味着重启系统,或者是重启进程,我们之前的努力都白费了。
假设:
打击者可以设置永久性(non-volatile)环境变量,将影响到系统控制流程而岂论是否进行重启。
可能性:
在系统启动期间或在满足特定条件时长途加载DLL
应用:
与场景1类似,但是打击者可以使用setx命令来取代set命令:
setx SystemRoot C:\ Wherever
重启系统,开始从打击者的目录下将DLL加载到各类进程中。
场景4:提升权限 #1
到目前为止,我们讨论了打击者控制下可能对其他进程有影响的环境变量。 这些其他进程都属于首先执行命令的用户,并且以中等完整性级别运行。

温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/13069.html

博客主人杰米WWW
杰米博客,为大家提供seo以及it方面技巧喜欢的朋友收藏哦!
  • 11365文章总数
  • 1378074访问次数
  • 3279建站天数
  •