深入解析 .NET 命名管道技术, 通过 Sharp4Tokenvator 实现本地权限提升

news2025/1/30 16:07:22

图片

01. 管道访问配置

在 .NET 中通常使用 PipeSecurity 类为管道设置访问控制规则,用于管理命名管道的访问控制列表(ACL)。通过这个类,可以为命名管道配置精细化的安全权限,从而控制哪些用户或用户组能够访问管道,以及他们可以执行的操作。

最常用的方法是 AddAccessRule,用于向命名管道的访问控制列表中添加一条新的访问规则。

以下代码展示了如何使用 PipeSecurity 和 PipeAccessRule 配置管道的访问权限。

using System;
using System.IO.Pipes;
using System.Security.AccessControl;

class Program
{
    static void Main()
    {
        PipeSecurity pipeSecurity = new PipeSecurity();
        pipeSecurity.AddAccessRule(new PipeAccessRule(
            "Everyone",
            PipeAccessRights.ReadWrite,
            AccessControlType.Allow));
        using (NamedPipeServerStream namedPipeServerStream = new NamedPipeServerStream(
            "TestPipe",
            PipeDirection.InOut,
            1,
            PipeTransmissionMode.Message,
            PipeOptions.None,
            128,
            128,
            pipeSecurity))
        {
            Console.WriteLine("管道已创建,等待客户端连接...");
            namedPipeServerStream.WaitForConnection();
            Console.WriteLine("客户端已连接!");
        }
    }
}

何使用 PipeSecurity 和 PipeAccessRule不过,在生产环境中,应限制对管道的访问,仅允许特定用户组使用。例如,可以使用管理员组。

pipeSecurity.AddAccessRule(new PipeAccessRule("Administrators", PipeAccessRights.FullControl, AccessControlType.Allow));

02. 命名管道服务器

NamedPipeServerStream 是 .NET 提供的命名管道服务器端实现类,用于实现进程间通信。允许创建一个命名管道服务器,以便客户端通过管道名称连接,并与服务器进行数据交换。

命名管道是双向通信的一种机制,可以用于同一台计算机上的不同进程之间通信,或者通过网络与远程计算机通信,具体使用代码如下所示。

public NamedPipeServerStream(
    string pipeName,
    PipeDirection direction,
    int maxNumberOfServerInstances = NamedPipeServerStream.MaxAllowedServerInstances,
    PipeTransmissionMode transmissionMode = PipeTransmissionMode.Byte,
    PipeOptions options = PipeOptions.None,
    int inBufferSize = 0,
    int outBufferSize = 0,
    PipeSecurity pipeSecurity = null
)

上述代码中,pipeName 表示管道名称,客户端需要通过该名称连接。direction 参数表示管道的方向,可以是 In(只读)、Out(只写)或 InOut(读写)。

具体实际的用法,可以参考如下代码展示了如何创建一个简单的命名管道服务器。

using System;
using System.IO;
using System.IO.Pipes;
using System.Text;

class Program
{
    static void Main()
    {
        string pipeName = "TestPipe";
        using (NamedPipeServerStream pipeServer = new NamedPipeServerStream(
            pipeName,
            PipeDirection.InOut,
            NamedPipeServerStream.MaxAllowedServerInstances,
            PipeTransmissionMode.Message,
            PipeOptions.Asynchronous))
        {
            Console.WriteLine($"管道已创建: {pipeName}");
            Console.WriteLine("等待客户端连接...");

            pipeServer.WaitForConnection();
            Console.WriteLine("客户端已连接");

            byte[] message = Encoding.UTF8.GetBytes("Hello from server");
            pipeServer.Write(message, 0, message.Length);
            Console.WriteLine("消息已发送");

            byte[] buffer = new byte[256];
            int bytesRead = pipeServer.Read(buffer, 0, buffer.Length);
            string receivedMessage = Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine($"收到客户端消息: {receivedMessage}");
        }
    }
}

03. 工具实战操作

Sharp4Tokenvator 便是这样一款基于命令管道实现的 Windows 令牌访问工具,主要用于模拟低权限用户到高权限用户。通过工具,用户可以借助系统中高权限进程的令牌,创建新的进程并以高权限运行,从而实现权限提升。

3.1 工具用法

以下是使用 Sharp4Tokenvator.exe 工具的基本步骤,使用工具提供的Steal_Token 命令接口,利用目标进程的令牌模拟高权限用户并执行命令。

Steal_Token /Process:3576 /Command:cmd.exe

其中,3576为目标进程PID,如下图所示。

图片

综上,Sharp4Tokenvator是一个强大的令牌操作工具,其基于.NET的实现使其在Windows系统中具有高度的灵活性和适用性

04.星球学习资源

 我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

.NET 免杀WebShell
.NET 反序列化漏洞
.NET 安全防御绕过
.NET 内网信息收集
.NET 本地权限提升
.NET 内网横向移动
.NET 目标权限维持
.NET 数据外发传输

 这些阶段所涉及的工具集不仅代表了当前.NET安全领域的最前沿技术,更是每一位网络安全爱好者不可或缺的实战利器。

文章涉及的工具已打包,请加/入/后下/载:https://wx.zsxq.com/group/51121224455454

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

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

相关文章

Cesium ArcGisMapServerImageryProvider API 介绍

作为一名GIS研究生,WebGIS 技术无疑是我们必学的核心之一。说到WebGIS,要提的就是 Cesium —— 这个让3D地球可视化变得简单又强大的工具。为了帮助大家更好地理解和使用 Cesium,我决定把我自己在学习 Cesium 文档过程中的一些心得和收获分享…

登录授权流程

发起一个网络请求需要:1.请求地址 2.请求方式 3.请求参数 在检查中找到request method,在postman中设置同样的请求方式将登录的url接口复制到postman中(json类型数据)在payload中选择view parsed,将其填入Body-raw中 …

Python设计模式 - 组合模式

定义 组合模式(Composite Pattern) 是一种结构型设计模式,主要意图是将对象组织成树形结构以表示"部分-整体"的层次结构。这种模式能够使客户端统一对待单个对象和组合对象,从而简化了客户端代码。 组合模式有透明组合…

【深度学习】图像分类数据集

图像分类数据集 MNIST数据集是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集。 %matplotlib inline import torch import torchvision from torch.utils import data from torchvision import transfo…

【四川乡镇界面】图层shp格式arcgis数据乡镇名称和编码2020年wgs84无偏移内容测评

本文将详细解析标题和描述中提到的IT知识点,主要涉及GIS(Geographic Information System,地理信息系统)技术,以及与之相关的文件格式和坐标系统。 我们要了解的是"shp"格式,这是一种广泛用于存储…

ubuntu解决普通用户无法进入root

项目场景: 在RK3566上移植Ubuntu20.04之后普通用户无法进入管理员模式 问题描述 在普通用户使用sudo su试图进入管理员模式的时候报错 解决方案: 1.使用 cat /etc/passwd 查看所有用户.最后一行是 若无用户,则使用 sudo useradd -r -m -s /…

第3章 基于三电平空间矢量的中点电位平衡策略

0 前言 在NPC型三电平逆变器的直流侧串联有两组参数规格完全一致的电解电容,由于三电平特殊的中点钳位结构,在进行SVPWM控制时,在一个完整开关周期内,直流侧电容C1、C2充放电不均匀,各自存储的总电荷不同,电容电压便不均等,存在一定的偏差。在不进行控制的情况下,系统无…

网络工程师 (8)存储管理

一、页式存储基本原理 (一)内存划分 页式存储首先将内存物理空间划分成大小相等的存储块,这些块通常被称为“页帧”或“物理页”。每个页帧的大小是固定的,例如常见的页帧大小有4KB、8KB等,这个大小由操作系统决定。同…

实验一---典型环节及其阶跃响应---自动控制原理实验课

一 实验目的 1.掌握典型环节阶跃响应分析的基本原理和一般方法。 2. 掌握MATLAB编程分析阶跃响应方法。 二 实验仪器 1. 计算机 2. MATLAB软件 三 实验内容及步骤 利用MATLAB中Simulink模块构建下述典型一阶系统的模拟电路并测量其在阶跃响应。 1.比例环节的模拟电路 提…

【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证

引言 前面已经对BQ3568HM开发板进行了初步测试,后面我要实现MQTT的工作,但是遇到一个问题,就是开发板无法通过校园网的认证操作。未认证的话会,学校使用的深澜软件系统会屏蔽所有除了认证用的流量。好在我们学校使用的认证系统和…

PythonFlask框架

文章目录 处理 Get 请求处理 POST 请求应用 app.route(/tpost, methods[POST]) def testp():json_data request.get_json()if json_data:username json_data.get(username)age json_data.get(age)return jsonify({username: username测试,age: age})从 flask 中导入了 Flask…

【电工基础】1.电能来源,触电伤害,触电预防,触电急救

一。电能来源 1.电能来源 发电-》输电-》变电-》配电 2.分配电 一类负荷 如果供电中断会造成生命危险,造成国民经济的重大损失,损坏生产的重要设备以致使生产长期不能恢复或产生大量废品,破坏复杂的工艺过程,以及破坏大…

大数据学习之Kafka消息队列、Spark分布式计算框架一

Kafka消息队列 章节一.kafka入门 4.kafka入门_消息队列两种模式 5.kafka入门_架构相关名词 Kafka 入门 _ 架构相关名词 事件 记录了世界或您的业务中 “ 发生了某事 ” 的事实。在文档中 也称为记录或消息。当您向 Kafka 读取或写入数据时,您以事件的 形式执行…

SQL Server查询计划操作符(7.3)——查询计划相关操作符(5)

7.3. 查询计划相关操作符 38)Flow Distinct:该操作符扫描其输入并对其去重。该操作符从其输入得到每行数据时即将其返回(除非其为重复数据行,此时,该数据行会被抛弃),而Distinct操作符在产生任何输出前将消费所有输入。该操作符为逻辑操作符。该操作符具体如图7.2-38中…

单片机基础模块学习——NE555芯片

一、NE555电路图 NE555也称555定时器,本文主要利用NE555产生方波发生电路。整个电路相当于频率可调的方波发生器。 通过调整电位器的阻值,方波的频率也随之改变。 RB3在开发板的位置如下图 测量方波信号的引脚为SIGHAL,由上面的电路图可知,NE555已经构成完整的方波发生电…

ts 进阶

吴悠讲编程 : 20分钟TypeScript进阶!无废话快速提升水平 前端速看 https://www.bilibili.com/video/BV1q64y1j7aH

【C++】STL介绍 + string类使用介绍 + 模拟实现string类

目录 前言 一、STL简介 二、string类 1.为什么学习string类 2.标准库中的string类 3.auto和范围for 4.迭代器 5.string类的常用接口说明 三、模拟实现 string类 前言 本文带大家入坑STL,学习第一个容器string。 一、STL简介 在学习C数据结构和算法前,我…

【Redis】List 类型的介绍和常用命令

1. 介绍 Redis 中的 list 相当于顺序表,并且内部更接近于“双端队列”,所以也支持头插和尾插的操作,可以当做队列或者栈来使用,同时也存在下标的概念,不过和 Java 中的下标不同,Redis 支持负数下标&#x…

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》033-响应式编程的原理及在Vue中的应用

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…

PETSc源码分析: Optimization Solvers

本文结合PETSc源代码,分析PETSc中的优化求解器。 注1:限于研究水平,分析难免不当,欢迎批评指正。 注2:文章内容会不定期更新。 参考文献 Balay S. PETSc/TAO Users Manual, Revision 3.22. Argonne National Labora…