权限提升概述
1、提权介绍
权限提升:攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制,提权至高权限的管理员用户,从而获取对整个系统的控制权
windows:user --> system/administrator
linux:user --> root
2、提权分类
本地提权:在一个地权限用户下,通过一些条件(应用程序漏洞、系统漏洞等)直接提升到系统最高权限。
远程提权:攻击者通过漏洞利用程序直接获取远程服务器的权限
操作系统提权:
windows:ms06-067、ms10-084、ms11-014、ms11-05等等
linux:cve-2017-7308、cve-2017-6074、cve-2017-5123等等
应用程序提权:Seru-u、SQL server、Mysql、Qracle、Java、IE
3、提权条件
拥有webshell,普通用户权限
拥有某些软件的账号密码
本地或远程服务器上存在漏洞
拥有漏洞利用工具代码
4、windows提权思路
前期信息搜集
meterpreter提权
windows系统内核漏洞
windows服务漏洞
windows注册表
windows提权信息收集
提权工具脚本:
PottenPato:将服务账户本地提权至SYSTEM
Origin Potato:
https://github.com/foxglovesec/Potato
RottenPotato & JuicyPotato:
GitHub - ohpe/juicy-potato: A sugared version of RottenPotatoNG, with a bit of juice, i.e. another Local Privilege Escalation tool, from a Windows Service Accounts to NT AUTHORITY\SYSTEM.
RoguePotato:
GitHub - antonioCoco/RoguePotato: Another Windows Local Privilege Escalation from Service Account to System
SweetPotato:
GitHub - CCob/SweetPotato: Local Service to SYSTEM privilege escalation from Windows 7 to Windows 10 / Server 2019
得到最高权限我们可以使用令牌攻击:
内网渗透之Token令牌窃取_Mauro_K的博客-CSDN博客
可能有些人会有这样的疑问
窃取token有什么用呢,我都已经使system权限了为什么还要窃取?
窃取 token 的主要目的是为了获取访问受限资源的权限。即使您已经使用了系统权限,但有些敏感操作可能仍需要特定的 API 或操作权限才能完成,例如访问某些加密的数据、进行特定的系统配置和管理等。
windows系统内核漏洞提权
检查windows版本是否有任何以知的漏洞
systeminfo
wmic qfe get Caption,Description,HotFixID,InstalledOn
列出所有补丁:
Get-WmiObject -Class "Win32_QuickFixEngineering" | Select-Object "Description", "HotFixID", "InstalledOn"
msf利用:
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
windows内核提权脚本汇集:
https://github.com/SecWiki/windows-kernel-exploits/
提权辅助网站:
提权辅助网页 Windows提权辅助
windows系统服务漏洞提权
可信任服务路径:
存在缺陷的服务程序利用属于可执行文件的文件/文件夹权限,windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径的时候也会以系统权限进行解析。如果我们能利用这一特性就有机会提升权限。
例子:
C:\Program Files
C:\Program.exe
1、这是一个 Windows 命令行命令,用于列出在自动启动模式下运行的非 Windows 系统服务和应用程序
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
2、查找对有漏洞的目录是否有写入权限
icacls "C:\Windows\System32"
F=完全控制
Cl=容器继承–此标志指示从属容器将继承此ACE
OI = Object Inherit-这个标志表示从属文件将继承ACE
3、我们生成一个exe的反弹shell,找到有空格的路径,然后将其改为空格前的名称,例如上面的Program.exe
不安全服务权限:
Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。
JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站,是否有新版JAVA程序。
Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。
JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站,是否有新版JAVA程序。
而类似JAVA程序之类的系统服务程序加载时往往都是运行在系统权限上的。所以如果一个低权限的用户对于此类系统服务调用的可执行文件具有可写的权限,那么就可以将其替换成我们的恶意可执行文件,从而随着系统启动服务而获得系统权限。
1、利用accesschk工具检查易受攻击的服务:
accesschk64.exe -ucqv "Authenticated Users" * /accepteula
services_all_access
2、查看可完全控制的服务的属性
sc qc Acunetix
3、修改服务配置执行命令
BINARY_PATH_NAME参数指向了该服务的可执行程序的路径
不安全的注册表权限:
直接修改服务的"ImagePath"注册表值,而不是修改服务属性。
检查注册表项的权限:subinacl.exe
如果对注册表有写入权限,我们可以通过编辑ImagePath值来更改此服务的可执行路径,直接修改服务的"ImagePath"注册表值,而不是修改服务属性。
reg add ""
不安全的文件夹/文件夹权限
这与我们引用服务路径所做的非常相似。无引号的服务路径利用了"CreateProcess"功能的弱点,任务的可执行文件路径的文件夹权限。但是在这里我们将尝试直接替换可执行文件。
icacls ""
Always Install Elevated
Alwaysinstallelevated是一个策略设置,当在系统中使用WindowsInstall安装任何程序时,该参数允许非特权用户以system权限运行MSI文件。如果目标系统上启用了这一设置,我们可以使用msf生成msi文件来以system权限执行任意payload。