【发布时间】:2014-04-15 21:58:07
【问题描述】:
我一直在处理 heartbleed 错误(主要是 cloudflare challenge)并且创建无效的心跳很容易,我一直发送如下:
### HEATBEAT ###
0x18, # Content Type (Heartbeat)
0x03, 0x01, # TLS version
0x00, 0x03, # Length
# Payload
0x01, # Type (Request)
0xff, 0xff # Payload length
# NO PAYLOAD
### END HEARBEAT ###
但是,当我尝试发送这个有效的心跳时,服务器没有响应。
### HEATBEAT ###
0x18, # Content Type (Heartbeat)
0x03, 0x01, # TLS version
0x00, 0x03, # Length
# Payload
0x01, # Type (Request)
0x00, 0x03 # Payload length
0x68, 0x61, 0x74, # Payload: hat
### END HEARBEAT ###
我尝试过调整有效载荷长度,但 +1 或 -1 都不起作用。即使长度明显高于实际长度也不起作用。关于我做错了什么有什么想法吗?
这是我的full code 供任何感兴趣的人使用(它基于this)
编辑:响应@warren-dew,这也不起作用:
### HEATBEAT ###
0x18, # Content Type (Heartbeat)
0x03, 0x01, # TLS version
0x00, 0x03, # Length
# Payload
0x01, # Type (Request)
0x00, 0x03 # Payload length
0x68, 0x61, 0x74, # Payload: hat
0x34, 0x90, 0xf0, 0xf3, # PADDING
0xe3, 0xb4, 0x5c, 0x9c, # PADDING
0x80, 0xff, 0x95, 0x74, # PADDING
0x9d, 0x81, 0xfa, 0xa0 # PADDING
### END HEARBEAT ###
编辑:响应@warren-dew,再次调整但仍然不起作用:
### HEATBEAT ###
0x18, # Content Type (Heartbeat)
0x03, 0x01, # TLS version
0x00, 0x16, # Length <- Changed
# Payload
0x01, # Type (Request)
0x00, 0x03 # Payload length
0x68, 0x61, 0x74, # Payload: hat
0x34, 0x90, 0xf0, 0xf3, # PADDING
0xe3, 0xb4, 0x5c, 0x9c, # PADDING
0x80, 0xff, 0x95, 0x74, # PADDING
0x9d, 0x81, 0xfa, 0xa0 # PADDING
### END HEARBEAT ###
【问题讨论】:
-
您无法在未加密的情况下发送此消息,因为它无法在握手期间发送。您需要先握手然后加密发送此消息。这意味着该消息被封装在一个 TLSCompressed 结构中,该结构本身被封装在一个 TLSCiphertext 结构中
标签: python ssl heartbleed-bug