[权限提升] 操作系统权限介绍
关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-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 编译过程如果提示以下信息…...

【JavaSE】String类常用字符串方法总结
目录 1. length() 求字符串长度 2. isEmpty() 判断字符串是否为空 3. String对象的比较 3.1 equals() 判断字符串是否相同 3.2 compareTo() 比较字符串大小 3.3 compareToIgnoreCase 忽略大小写比较 4. 字符串查找 4.1 charAt() 返回指定索引处的字符 4.2 indexOf() 4…...

python3+TensorFlow 2.x(二) 回归模型
目录 回归算法 1、线性回归 (Linear Regression) 一元线性回归举例 2、非线性回归 3、回归分类 回归算法 回归算法用于预测连续的数值输出。回归分析的目标是建立一个模型,以便根据输入特征预测目标变量,在使用 TensorFlow 2.x 实现线性回归模型时&…...

机器人抓取与操作概述(深蓝)——1
工业机器人:① “臂”的形态 ② “手”的形态 ③ 视觉,力和触觉 1 机器人的不同形态 “臂”的形态 “手”的形态 2 常见的操作任务 操作:插入、推和滑 抓取:两指(平行夹爪)抓取、灵巧手抓取 落地-产…...

简单聊聊“DeepSeek”
目录 DeepSeek一夜火爆并受到广泛关注的优势 技术实力与创新 低成本与高效率 开源与免费 市场策略与应用领域 团队与资金优势 行业认可与媒体关注 DeepSeek在推理效率上的特别之处 多头潜在注意力(MLA) 多词元预测(MTP)…...

使用 Docker + Nginx + Certbot 实现自动化管理 SSL 证书
使用 Docker Nginx Certbot 实现自动化管理 SSL 证书 在互联网安全环境日益重要的今天,为站点或应用部署 HTTPS 已经成为一种常态。然而,手动申请并续期证书既繁琐又容易出错。本文将以 Nginx Certbot 为示例,基于 Docker 容器来搭建一个…...

粒子群算法 笔记 数学建模
引入: 如何找到全局最大值:如果只是贪心的话,容易被局部最大解锁定 方法有:盲目搜索,启发式搜索 盲目搜索:枚举法和蒙特卡洛模拟,但是样例太多花费巨量时间 所以启发式算法就来了,通过经验和规…...

【C语言】结构体与共用体深入解析
在C语言中,结构体(struct)和共用体(union)都是用来存储不同类型数据的复合数据类型,它们在程序设计中具有重要的作用。 推荐阅读:操作符详细解说,让你的编程技能更上一层楼 1. 结构体…...

es6.7.1分词器ik插件安装-和head插件连接es特殊配置
es6.7.1分词器ik插件安装-和head插件连接es特殊配置 如果对运维课程感兴趣,可以在b站上、A站或csdn上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频 1.查看es6.7.1和es-head安装位置和es插件路径 [ro…...

java求职学习day18
常用的设计原则和设计模式 1 常用的设计原则(记住) 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 常用的设计原则 (1)开闭原则(Open Close Principle…...

单链表专题(上)
链表的定义与创建 线性表: 1. 物理结构上不一定是线性的 2. 逻辑结构上一定是线性的 链表是一种物理存储结构上非连续,非顺序的存储结构 链表也是线性表的一种,但是在物理结构上不是连续的 链表是由一个一个的节点组成,需要数…...