该仓库专注于构建一个容器,以创建一个可以轻松利用Heartbleed技术攻击nginx的环境,重点包括:

CVE-2014-0160问题出现在OpenSSL库提供TLS心跳功能时,其缓冲区大小为64KB,导致内存溢出,从而泄漏服务器内存中的敏感信息。
Web应用正在处理敏感消息,这些消息被nginx缓存到内存中。
我们通过检查环境是否支持TLS心跳来利用:
openssl s_client -connect : -tlsdebug
注意:现代OpenSSL版本可能不再支持TLS心跳协议,请使用支持的版本。
Heartbleed是一个越界读取漏洞,具有随机性。 服务器将返回64KB的相邻内存。
1个心跳的头部(RFC6520) 18 03 02 00
使用docker build构建heartbleed实验室:
docker build -t heartbleed-lab .
docker run heartbleed-lab -p port:8443
web应用的默认端口为8443。
使用负载heartbleed.py进行测试。 我们可以观察到负载返回的结果以hexdump格式呈现。
在示例dump中,我们可以看到刚刚发送的请求,内存单元主要是0x00,由于负载的随机性,我们必须多次运行才能泄漏出期望的结果。
我们可以尝试运行memory.py向nginx发送请求,将其存入内存。 然后获得泄漏的结果,如result.txt所示。
由于我们知道攻击者将使用心跳请求来泄漏消息,
alert tcp any any -> any 443 (msg:"Heartbeat request"; content:"|18 03 02 00|"; rawbytes;sid:100000)
使用Snort入侵检测系统进行检测。