碳基体

奋斗在产品安全第一线的安全妹子

六、TCP/IP协议分析-Redis认证协议


Redis的数据包为序列化后的文本协议RESP (REdis Serialization Protocol) ,human-readable(明文可读),由0d0a切分内容,相比postgresql、mysql、mongodb解析起来要简单快速的多,当然安全性也欠缺,嗅探成本低

“redis的安全设计是在"Redis运行在可信环境下", 在生产环节运行时不允许外界直接连接到Redis服务器上,而应该通过应用程序进行中转”



RESP的通信实例

a.客户端到服务端发送的数据

b. 服务端到客户端的响应数据

 


由上面两幅图,可知全是明文传输,其中RESP中的数据类型由特殊的前缀标识符来区分

__RESP_DATA_TYPE = {
    '+': 'Simple Strings', #例如+OK
    '-': 'Errors', #例如 -ERR invalid password
    ':': 'Integers',#整型
    '$': 'Bulk Strings', #字符串
    '*': 'Arrays'#数组
}



redis认证过程

客户端->服务端发送 auth [password]命令

例如

auth apple对应的数据为

*2

$4

auth

$5

apple


auth dragon对应的数据为

*2

$4

auth

$6

dragon


服务端->客户端回应 认证结果

例如

认证失败对应的数据为

 -ERR invalid password


认证成功对应的数据为

 +OK



参考:

https://redis.io/topics/protocol

预告:七、TCP/IP协议分析-FTP认证协议

来源:碳基体

评论