gpt4 book ai didi

python - HeartBleed python 测试脚本

转载 作者:太空狗 更新时间:2023-10-29 21:18:30 25 4
gpt4 key购买 nike

我遇到了 this Python script测试服务器的 HeartBleed 漏洞:

谁能解释一下“你好”的内容、发送的是什么以及这些内容是如何构建的?

我并不是想恶意使用这个脚本。我被要求测试 Tomcat 7.0.2 服务器的漏洞:我验证了 tcnative-1.dll 确实使用了 openssl 1.0.1d,但是我尝试测试服务器的一些独立测试工具报告它不是易受伤害的。

最佳答案

hellohb 以更具可读性的方式定义字节串。

h2bin(x) 函数完成所有工作:

def h2bin(x):
return x.replace(' ', '').replace('\n', '').decode('hex')

因此十六进制数字串已删除所有空格,然后从十六进制解码为字节:

>>> '16 03 02 00 dc'.replace(' ', '')
'16030200dc'
>>> '16 03 02 00 '.replace(' ', '').decode('hex')
'\x16\x03\x02\x00\xdc'

它只是一种使用十六进制表示法和额外空格来指定一系列字节的紧凑方式。

十六进制数据本身只是一个普通的heartbeat protocol message ,以原始字节为单位。 hello 字符串包含 TLS 1.1 record message ,由第一个字节(16 十六进制,22 十进制)标识为握手记录,发送一个client_hello(第六个字节是01)。这只是建立一个 TLS session ,告诉服务器客户端支持哪种密码。这里面包含什么并不重要,除了它告诉服务器客户端支持 Heartbeat 扩展(消息末尾的 00 0f 字节对)。

真正有趣的是 hb 消息:

hb = h2bin(''' 
18 03 02 00 03
01 40 00
''')

18是心跳内容类型记录,03 02标识TLS 1.1协议(protocol)版本。 00 03 表示消息的有效载荷有多大; 3 个字节,或整个第二行。

消息本身的3个字节由心跳类型(01,或'request')和消息长度(40 00,16384字节)组成,后跟没有实际消息。这会导致损坏的 SSL 服务器发回包含 16kb 内存的心跳响应;回显不存在的 0 长度请求消息加上内存以构成请求长度。

关于python - HeartBleed python 测试脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23033219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com