[权限提升] 操作系统权限介绍
关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客
权限提升简称提权,顾名思义就是提升自己在目标系统中的权限。现在的操作系统都是多用户操作系统,用户之间都有权限控制,我们通过 Web 漏洞拿到的 Web 进程的权限一般都是由一个权限很低的账号启动的,因此通过 WebShell 进行一些操作就会受到限制,为了减少这些限制,我们就需要将我们的权限提升到 “管理”。
既然是 “提权”,那么我们首先就得先来了解一下各个系统的权限组成,知道我们当前的权限,和我们目标达到的权限。
0x01:权限介绍 — Windows 篇
先说目标,Windows 提权一般是提权到 Administrator 权限或者 System 权限(这二者属于平级关系,拿到其一就等于拿到另外一个)。
Windows 系统中的用户账号一般分为以下几个,这几个里面不包含 System (服务最高管理员)权限:
-
本地普通用户 => 加入了 Users 组的用户
-
本地一般管理员 => 加入了 Administrators 组的用户,伪管理,需要绕 UAC 认证
-
本地最高管理员 => Administrators 组的 Administrator 用户(系统默认创建的),它不用经过 UAC 认证即可执行敏感操作
-
域内普通用户
-
域内管理员
0x0101:Windows 用户账号 — 本地普通用户
本地普通用户,就是在 Windows 电脑中本地新建的普通用户。没有管理员权限,一般很多操作都执行不了,需要管理员认证后才可以执行。在 Windows 用户组中,本地普通用户归属于 Users 用户组。
接下来,我们以一台 WindowsServer 2008 虚拟机为例,看一下如何查看、创建本地普通用户,以及该用户的一些权限限制。
1. 创建本地普通用户
首先,以管理员身份(Administrator)登录 Windows Server 机器。你可以通过调用 CMD 窗口然后输入 whoami
来确认自己的身份:
然后继续在 CMD 窗口中输入下面的命令,来创建本地普通用户:
net user test01 admin@123 /add# test01 => 创建的普通用户的用户名# admin@123 => test01 用户的登录密码
2. 查看本地普通用户
按照下图依次点击 “开始” => “管理工具” => “计算机管理”,打开 “计算机管理” 窗口:
然后点击 “本地用户和组” => “用户”,就可以看到我们刚刚创建的 test01 账户:
双击 “test01” 账户,查看 “隶属于” 信息,可以看到,该用户属于 Users 用户组,该组中的成员就拥有普通用户权限(系统中最安全的权限,不允许修改操作系统设置与用户资料):
3. 本地普通用户的权限介绍
现在我们切换登录的用户为 test01(test01 : admin@123
),然后同样打开 CMD 窗口,输入下面的命令:
whoami # 查看当前登录的用户net user test02 admin@123 /add # 尝试以 Users 权限添加用户
如上,我们无法以本地普通用户的权限执行一些敏感操作。
当我们想执行一些敏感操作,比如关闭防火墙时,它还会弹出以下提示,要我们输入管理员密码才允许我们操作:
0x0102:Windows 用户账号 — 本地一般管理员
继续以这台 Windows Server 2008 R2 为例,我们切换用户,以管理员(Administrator)身份登录。然后打开 “计算机管理” 窗口(打开方式在上面这里就不写了)。
这里所谓的 “本地一般管理员” 就是指加入了 Administrators 用户组,但账户名称不是 Administrators 的账户。
1. 查看本地一般管理员
我们定位到 “计算机管理” 窗口中的 “本地用户和组” 中的 “Administrators” 组,双击打开可以查看组中的用户:
如上,当前组中有三个成员,一个叫 Administrator 是计算机默认创建的 “本地最高管理员”,然后这个 hacker 账户是我们初始化计算机(你刚刚安装操作系统)时添加进去的普通管理员账户,至于那个贼拉长的,笔者怀疑是加入了域后自动创建的,这个是后话,这里不管他。
2. 添加本地一般管理员
记住了哈,这里我们是以 Administrator 账户登录的,有足够的权限进行操作,你要是拿普通用户权限,这里你是没法操作的。
我们点击选中 “Administrators” 用户组,然后输入 "test01"(我们上一节中创建的普通用户),然后点击 ”检查名称“ 后选择 ”确定“ 就可以完成添加:
再次查看 Administrators 用户组中的用户,可以看到 test01 也在其中,那么至此,添加本地一般管理员就完成了:
3. 本地一般管理员权限介绍
那么我们现在再使用 test01 这个账号登录机器并执行下面几条命令:
whoami # 确认一下我们当前登录的账号net user test02 admin@123 /add # 尝试添加账号
可以看到,哎嘿,我们还是不能添加用户。是我们的权限配置没生效吗,其实不是。我们得以 “管理员” 权限打开 CMD 窗口:
这里有个注意点,如果它弹出了需要输入管理员账号的弹窗,你输入 test01 这个账户的用户和密码也可以完成登录,因为我们前面已经将 test01 归属到 Administrators 用户组了。
如下,可以看到,在以管理员身份运行的 CMD 窗口就可以随意添加用户了:
事先说明,我们提权的目标是本地最高管理员,可不是这个普通管理员哦。那么这两个管理员有啥差别呢。
相信使用 Windows 的小伙伴以管理员身份运行某些东西的时候经常会遇到下面这个窗口:
这个就是 UAC 认证,需要用户点击 “是” 即可(有的需要你输入管理员账号密码)。当用户点击 “是” 之后,就可以以管理员身份运行某个软件。
那么为啥要做这个呢?作为一个成熟的 Hacker 你应该知道的,我们拿到的 Shell 一般都是命令行界面,命令行界面是没办法点击 “是” 这个选项的。所以,我们后续对于 Windows 提权还需要绕过这个 UAC 认证。
0x0103:Windows 用户账号 — 本地最高管理员
这个本地最高管理员就是 Administrators 用户组中的 Administrator 用户,该用户在一些 Windows 版本中是默认禁用的:
-
windows server => 默认开启 administrator
-
windows 家庭版、旗舰版 => 默认不开启 administrator
-
windows 企业版、专业版 => 默认开启 administrator
我们可以通过输入下面这行命令,来查看本机的某个账户的状态:
语法: net user <用户名>示例: net user administrator # 查看 administrator 账户状态
然后由于某些机器默认是不开启 Administrator 账户的,下面这两条命令可以帮他开启和关闭:
net user administrator /active:yes # 开启 administratornet user administrator /active:no # 禁用 administrator
1. 开启本地最高管理员账户
我们以一台 Windows 7 系统为例,默认 Administrator 账户是禁用的。输入下面的命令可以查看账户状态(CMD 窗口要以管理员权限打开):
net user administrator
然后我们输入下面的命令,开启本地的 Administrator 账户:
net user administrator /active:yes
切换完成后,就可以注销当前用户去切换成 administrator 账户了,可以看到,当我们启用 Administrator 账户后,登录界面就会直接显示该账户的信息,并且登录是不要密码的(我们刚刚启用的时候也没有设置密码):
2. 本地最高管理员权限介绍
我们选择登录 Administrator 账户,然后直接搜索并打开 CMD 窗口,输入下面的命令:
net user test01 admin@123 /add
如上,直接就成功了。我们并不需要右击 CMD 然后以管理员身份打开,因为我们当前就是系统最高管理员,不管做啥都是默认以管理员身份运行的,而且也不会有 UAC 认证,就是弹那个小窗口让你点击。我们 Windows 提权,提权到这个权限就认为这个机器你已经完全控制了。
0x0104:Windows 域账号 — 域内普通用户
当你的 Windows 机器加入了域后,你的电脑就可以通过域用户进行登录。域内又分为普通域用户与域管理员两种用户权限。这部分主要是让你看一下域用户张啥样的。
在前面介绍普通账户时,我们 whoami 的结果是 机器名\用户名
的形式,那么我们的域账户就是 域名\用户名
的形式,比如下面这个用户就是 hack 域下的 jack 用户(普通用户):
如果是机器用户,就长这样,通过 hostname
查看一下机器名就可以了:
0x0105:Windows 域账号 — 域内管理员
域管理员 whoami 的结果就是 域名\administrator
就是下面这样,拿到了这个用户,就证明对面这个域(内网)已经给你打穿了:
0x0106:Windows 服务账号 — SYSTEM
这个 SYSTEM 权限是 Windows 的一个服务账号,它不属于前面的这几种用户账号(域账号也是用户账号),像前面的用户账号,你用户通过登录后就可以运行各种计算机里的软件、程序。这个服务账号不行,它不能登录。
服务账号专门用于在 Windows 中运行服务,这种账号不能进行登录,SYSTEM 是服务账号的最高权限。SYSTEM 权限是系统自己的权限,任务管理器里面只要是以 SYSTEM 用户运行的程序都是系统本身的程序,比如任务管理器中的 winlogon.exe、svchost.exe、alg.exe 等这些进程,都是系统自己运行的,而不是你运行的用户程序。
我们可以通过打开任务管理器(Ctrl + Shift + ESC
),查看进程来查看 SYSTEM 运行了哪些东西:
这个权限与本地最高管理员是平级的,可以互相切换。
0x02:权限介绍 — Linux 篇
Linux 的权限就简单多了,最高权限就是 Root 用户。我们提权的目标就是拿到 Root 用户。下面介绍两个 Linux 中的登录文件:
-
/etc/passwd
:该文件是 Linux 系统配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。(这个文件里面没有用户密码) -
/etc/shadow
:该文件中存放了/etc/passwd
中的用户密码,该文件只有 root 用户能够读取,其他用户都无法读取该文件。
相关文章:

[权限提升] 操作系统权限介绍
关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 权限提升简称提权,顾名思义就是提升自己在目标系统中的权限。现在的操作系统都是多用户操作系统,用户之间都有权限控制,我们通过 Web 漏洞拿到的 Web 进程的…...
DeepSeek异军突起,重塑AI格局
DeepSeek异军突起,重塑AI格局这两天AI 圈发生了比过年更令人兴奋的事情,“Meta内部反水事件”、“黄仁勋的底盘问题”,以及AI格局的大动荡,一切都是因为那个叫DeepSeek的“中国自主AI”!它由幻方量化开发,以…...

git的理解与使用
本地的git git除了最经典的add commit push用来做版本管理,其实他的分支管理也非常强大 可以说你学好了分支管理,就可以完成团队的配合协作了 git仓库 我们可以使用git init来初始化一个git仓库,只要能看见.git文件夹,就代表这…...

Baklib打造内容中台新模式助力企业智能化升级
内容概要 在如今数字化日渐渗透各个行业的背景下,内容中台逐渐成为推动企业智能化转型的重要工具。内容中台不仅仅是一个信息管理平台,更是一个整合多种内容资源,提升企业反应能力与市场适应力的创新模式。随着数据量的激增,传统…...

STM32完全学习——RT-thread在STM32F407上移植
一、写在前面 关于源码的下载,以及在KEIL工程里面添加操作系统的源代码,这里就不再赘述了。需要注意的是RT-thread默认里面是会使用串口的,因此需要额外的进行串口的初始化,有些人可能会问,为什么不直接使用CubMAX直接…...

基于51单片机和ESP8266(01S)、LCD1602、DS1302、独立按键的WiFi时钟
目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、延时2、定时器03、串口通信4、DS13025、LCD16026、独立按键 四、主函数总结 系列文章目录 前言 之前做了一个WiFi定时器时钟,用八位数码管进行显示,但是定时器时钟的精度较低࿰…...
启元世界(Inspir.ai)技术浅析(二):深度强化学习
深度强化学习(Deep Reinforcement Learning, DRL)是启元世界在人工智能领域的一项核心技术,广泛应用于游戏AI、智能决策等领域。 一、状态(State) 1.1 概念与作用 **状态(State)**是指智能体对环境的感知,是智能体进行决策的基础。在深度强化学习中,状态通常是一个高…...
LeetCode100之子集(78)--Java
1.问题描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例1 输入:nums [1,2,3]输出:[[],[1],[2],[1,2],[3],[1…...
React第二十五章(受控组件/非受控组件)
React 受控组件理解和应用 React 受控组件 受控组件一般是指表单元素,表单的数据由React的 State 管理,更新数据时,需要手动调用setState()方法,更新数据。因为React没有类似于Vue的v-model,所以需要自己实现绑定事件…...

使用 Confluent Cloud 的 Elasticsearch Connector 部署 Elastic Agent
作者:来自 Elastic Nima Rezainia Confluent Cloud 用户现在可以使用更新后的 Elasticsearch Sink Connector 与 Elastic Agent 和 Elastic Integrations 来实现完全托管且高度可扩展的数据提取架构。 Elastic 和 Confluent 是关键的技术合作伙伴,我们很…...

嵌入式知识点总结 Linux驱动 (三)-文件系统
针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.什么是文件系统? 2.根文件系统为什么这么重要?编辑 3.可执行映像文件通常由几部分构成,他们有什么特点? 1.什么是文件系统&a…...

【知识】可视化理解git中的cherry-pick、merge、rebase
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 这三个确实非常像,以至于对于初学者来说比较难理解。 总结对比 先给出对比: 特性git mergegit rebasegit cherry-pick功能合并…...

【deepseek】deepseek-r1本地部署-第二步:huggingface.co替换为hf-mirror.com国内镜像
一、背景 由于国际镜像国内无法直接访问,会导致搜索模型时加载失败,如下: 因此需将国际地址替换为国内镜像地址。 二、操作 1、使用vscode打开下载路径 2、全局地址替换 关键字 huggingface.co 替换为 hf-mirror.com 注意:务…...
新站如何快速获得搜索引擎收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/8.html 新站想要快速获得搜索引擎收录,需要采取一系列有针对性的策略。以下是一些具体的建议: 一、网站内容优化 高质量原创内容: 确保网站内容原创、…...

如何使用tushare pro获取股票数据——附爬虫代码以及tushare积分获取方式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 一、Tushare 介绍 Tushare 是一个提供中国股市数据的API接口服务,它允许用户…...

解决vsocde ssh远程连接同一ip,不同端口情况下,无法区分的问题
一般服务器会通过镜像分身或者容器的方式,一个ip分出多个端口给多人使用,但如果碰到需要连接同一user,同一个ip,不同端口的情况,vscode就无法识别,如下图所示,vscode无法区分该ip下不同端口的连接ÿ…...

Elasticsearch 自定义分成器 拼音搜索 搜索自动补全 Java对接
介绍 通常用于将文档中的文本数据拆分成易于索引的词项(tokens)。有时,默认的分词器无法满足特定应用需求,这时就可以创建 自定义分词器 来实现定制化的文本分析。 自定义分词器组成 Char Filters(字符过滤器&#x…...

基于物联网设计的疫苗冷链物流监测系统
一、前言 1.1 项目开发背景 随着全球经济的发展和物流行业的不断创新,疫苗和生物制品的运输要求变得越来越高。尤其是疫苗的冷链物流,温度、湿度等环境因素的控制直接关系到疫苗的质量和效力,因此高效、可靠的冷链监控系统显得尤为重要。冷…...

RocketMQ消息是如何存储的?
大家好,我是锋哥。今天分享关于【RocketMQ消息是如何存储的?】面试题。希望对大家有帮助; RocketMQ消息是如何存储的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 使用了一个高性能、分布式的消息存储架构…...
Ubuntu 16.04安装Lua
个人博客地址:Ubuntu 16.04安装Lua | 一张假钞的真实世界 在Linux系统上使用以下命令编译安装Lua: curl -R -O http://www.lua.org/ftp/lua-5.3.3.tar.gz tar zxf lua-5.3.3.tar.gz cd lua-5.3.3 make linux test 安装make 编译过程如果提示以下信息…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...
【向量库】Weaviate 搜索与索引技术:从基础概念到性能优化
文章目录 零、概述一、搜索技术分类1. 向量搜索:捕捉语义的智能检索2. 关键字搜索:精确匹配的传统方案3. 混合搜索:语义与精确的双重保障 二、向量检索技术分类1. HNSW索引:大规模数据的高效引擎2. Flat索引:小规模数据…...