postgersql是基于两个漏洞的,一个是2018年出现的,一个是2019年出现的,所导致的提权问题;redis提权漏洞是因为自身的配置导致的问题,网上公开的三种提权方式,redis一般默认安装在linux上面,所以大部分就是写ssh,来尝试登录linux服务器来提权,下面两种用的比较少,第一种用的比较多,利用计划任务执行命令反弹shell
这五个数据库基本上是我们目前在网上比较主流的几种数据库了,还要算上mogondb,但是那些数据库有的是没有提权漏洞的,还有一些比较冷门的数据库就没有讲
Redis服务因配置不当,可被攻击者恶意利用。黑客借助 Redis 内置命令,可将现有数据恶意清空; 如果 Redis 以 root 身份运行,黑客可往服务器上写入 SSH公钥文件,直接登录服务器。
连接(未授权或有密码)-利用如下方法提权
参考: https://blog.csdn.net/fly_hps/article/details/80937837
(1).利用计划任务执行命令反弹shell
(2).写ssh-keygen公钥然后使用私钥登陆
(3).权限较低往web物理路径写webshell
修复方案:
注意: 以下操作,均需重启 Redis 后才能生效。
绑定需要访问数据库的IP。 将127.0.0.1修改为需要访问此数据库的IP地址设置访问密码。在 Redis.conf中requirepass 字段后,设置添加访问密码。修改Redis服务运行账号。以较低权限账号运行Redis服务,禁用账号的登录权限。
我们要去了解一下关系与非关系数据库的区别
https://www.cnblogs.com/suncan0/p/4735129.html
不是说mysql好或者是redis数据库好,而是看它的应用场景,我们攻击不同的应用,它选择的数据库类型也会不同,常规网站肯定是mysql、oracle、mssql了,可能一些其它应用的是分布式的redis,这主要是数据库应用的差异
PostgreSQL 是一款关系型数据库。其9.3到11版本中存在一处”特性”,管理员或具有"COPY TO/FROM PROGRAN"权限的用户,可以使用这个特性执行任意命令。
提权利用的是漏洞: CVE-2019-9193 CVE-2018-1058
连接-利用漏洞-执行-提权
参考: https://vulhub.org/#/environments/postgres/
修复方案: 升级版本或打上补丁
漏洞复现参考文章:
低权限提权:https://vulhub.org/#/environments/postgres/CVE-2018-1058/
高权限提权:https://vulhub.org/#/environments/postgres/CVE-2019-9193/
它的攻击过程首先是建立连接,密码一般是翻它的配置文件,直接翻到的,连接上去之后,在利用这两个漏洞,看一下这个版本是不是符合的,是否可以进行漏洞提权
redis数据库在navicat上不能直接连接
各数据库高权限用户:mysql里面是root,mssql是sa,oracle是dba,postgresql是postgres
如果我们提权不成功,那就说明对方打好了补丁,它有些防护拦截了
提权之后是不是最高权限,要看它的安装情况
进行远程过程调用时请求提升权限,然后调用它从而生成特权安全令牌以执行特权操作。当系统允许令牌不仅用于进程本身,还用于原始请求进程时,漏洞就会出现。
本地提权实验: 获取会话-利用模块-窃取令牌-提权
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"
一个进程在执行的时候,是某个用户执行的,这个时候就窃取用户的令牌,来对用户的权限进行复制的操作
令牌窃取在2008之后的操作系统上已经被修复了,没有什么作用了
我们得到了本地用户权限之后,它不是administrator或system,我们用上令牌窃取加上用户权限,直接扩大到system,令牌窃取有工具,但是大部分用的是msfconsole,因为它里面有集成的东西,比较方便
在内网里面,system和administrator还是有些区别的,比如内核木马这些,只有system才能去搞,其它的就搞不来
我们监听一个会话,这个会话基于接收反弹shell,我们要满足提权的前提条件,我取得了计算机上普通用户的权限,然后我用这个普通用户权限实现了提权的操作
来等待一个6677端口上的接收
这个木马生成了,我们在win7服务器上运行它
有时候接收不成功,可能是因为端口问题,换一个端口就可以了
可以直接在网上搜服务器安装msf,非常简单,基本上一条命令就完事了
https://www.nhooo.com/note/qa3svg.html
阿里云选个2核4G,阿里云的好处是对国外的地址下载是很快的
窃取成功了
令牌窃取支持的windows版本比较少,win2008以上,比如,win10、2012基本上就很难实现了,它有实现的可能性,但是成功的机率很低,因为有些系统上面是把一些东西给关了,比如UNC用户控制开关,也就是说在高版本系统上面,这个令牌窃取是没什么软用的
没必要去追求原理,简单的学一下攻击流程就足够了,针对普通用户到system权限获取的一种方式,针对win2008及以下版本的攻击方法,你把这个记住就可以了
进程注入提权是本地提权方式的一种较为老的安全技术了,利用的是注入进程的所有者实现权限共享机制,这类技术主要利用在windows2008之前操作系统上,所以我们需要学习后续的本地提权更多的手法才能有针对高版本的系统。
每个进程在运行的时候,有个pid值,后面有个对应的用户名,就相当于这个用户正在运行这个进程,然后你会发现有些进程对应的用户名是system,进程注入其实就是利用注入到这个进程之后,享有system权限,把system权限释放出来,就这么个攻击手段,这个攻击手段只适用于win2008之前的操作系统,这里还不包括2008,比令牌窃取还要老,还要不太实用
进程注入的成功机率很佛性,具体要看操作系统是不是原版,还有操作系统有没有安装一些东西,才可能成功的意思
在msf里面也是有这个功能截取的地方
获取当前计算机上面的线程列表,然后获取进程对应的权限
system都是我们的目标,我们把pid值记下来,注入到这个进程里面,就会在本地开放8888端口,然后8888端口对应的就是cmd,只要有人连接8888端口,就会将cmd反弹给对方
这个时候开nc连接8888端口,看一下权限
这个就是典型的进程注入,针对的是win2008,它跟sc、at命令、ps命令差不多的道理,只是说它用到的是系统自身的注入,那些命令用到的是系统的计划任务攻击,杂七杂八的,总的来说都是进行权限提升,就是利用的东西不一样
其实很多培训的,讲的都是老东西,不要在网上看了一些东西就觉得厉害,一模一样的
pexec是可以进行权限提升和权限降低的,在本地win10测试了一下,提权没有成功,降权是成功了
如果我们是使用虚拟机或者初次安装操作系统的话,可能要安装一下组件,因为pexec是用C++写的,有些电脑初次安装虚拟机的话,它没有安装库运行不了,它会提示少了dll文件
直接执行注入到进程里面去,注入进去之后,直接用nc连接本地的9999端口就实现了,这个本地就是目标地址
可以用火绒剑查看当前电脑进程,获取PID
pexec注入了,权限没有正确获取到
https://www.blib.cn/soft/pexec.zip
https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
https://www.tarasco.org/security/Process_Injector/processinjector.zip
https://www.cnblogs.com/LyShark/p/13785619.html