《Web安全测试学习手册》- OpenSSL心脏滴血漏洞

0x00 OpenSSL心脏滴血漏洞

1)什么是OpenSSL心脏滴血漏洞

2014年4月8日,互联网上曝出了严重一个漏洞称为Heartbleed,该漏洞由安全公司Codenomicon和谷歌安全工程师发现。Heartbleed漏洞,造成许任何人在互联网上阅读系统的内存保护脆弱的OpenSSL的软件版本。 这种妥协密钥用于识别服务提供者和加密流量,用户名和密码的和实际的内容。 这允许攻击者窃听通信、窃取数据直接从服务和用户和模拟服务和用户。

2)OpenSSL心脏滴血漏洞的特点

  • 服务器端必须支持openssl加密协议,如:https
  • 危害大

0x01 OpenSSL心脏滴血漏洞 - 风险等级

0x02 OpenSSL心脏滴血漏洞 - 原理

2014年4月7日OpenSSL发布了安全公告,在OpenSSL1.0.1版本中存在严重漏洞(CVE-2014-0160),此次漏洞问题存在于ssl/dl_both.c文件中。

OpenSSL在实现TLS和DTLS的心跳处理逻辑时,存在编码缺陷。OpenSSL的心跳处理逻辑没有检测心跳包中的长度字段是否和后续的数据字段相符合,攻击者可以利用这点,构造异常的数据包,来获取心跳数据所在的内存区域的后续数据。这些数据中可能包含了证书私钥、用户名、用户密码、用户邮箱等敏感信息。该漏洞允许攻击者,从内存中读取多达64KB的数据。

0x03 OpenSSL心脏滴血漏洞 - 常见场景

  • 使用了openssl扩展库加密的网络协议
  • https
  • SSL VPN
  • 邮件服务器

0x04 测试方案

方案一

使用Nmap扩展脚本进行扫描

命令:nmap -sV -p 443 --script ssl-heartbleed.nse [Target]

OpenSSL心脏滴血漏洞

方案二

https://filippo.io/Heartbleed/

方案三

http://wangzhan.360.cn/heartbleed/

0x05 修复方案

  • 1.将受影响的服务器下线,避免它继续泄露敏感信息。
  • 2.停止旧版的 openssl 服务,升级 openssl 到新版本,并重新启动。
  • 3.生成新密钥。(因为攻击者可能通过漏洞获取私钥。)将新密钥提交给你的CA,获得新的认证之后在服务器上安装新密钥。
  • 4.服务器上线。
  • 5.撤销旧认证。
  • 6.撤销现有的会话cookies。
  • 7.要求用户修改密码。