心脏滴血漏洞简单分析与复现
漏洞成因
Heartbleed漏洞是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次64KB的速度进行泄露。
漏洞分析
最初人们为了网络通信安全,就开始使用安全协议进行加密通信,SSL(Secure Socket Layer)就是一种安全协议。随着开源软件的流行,有人写了一款叫 OpenSSL 的开源程序供大家方便地对通信进行SSL加密,后来这款软件便在互联网中被广泛应用。我们在浏览器地址栏常见的 https 前缀的网址以及那把小锁图标,通常就是指该网站经过 SSL 证书加密。
OpenSSL 有一个叫 Heartbeat (心跳检测)的拓展,问题就出在这个拓展上,这也是漏洞被命名为“心脏出血”的直接原因。
所谓心跳检测,就是建立一个 Client Hello 问询来检测对方服务器是不是正常在线 ,服务器发回 Server hello,表明正常树立SSL通讯。就像我们打电话时会问对方 “喂听得到吗?”一样。
每次问询都会附加一个问询的字符长度 pad length,bug 来了,如果这个 pad length 大于实际的长度,服务器仍是会回来相同规模的字符信息,于是形成了内存里信息的越界访问。
就这样,每发起一个心跳,服务器就能泄露一点点数据(理论上最多泄露 64K),这些数据里可能包括用户的登录账号密码、电子邮件甚至是加密秘钥等信息,也可能并没有包含这些信息,但攻击者可以不断利用 “心跳”来获取更多的信息。就这样,服务器一点一点泄露越来越多的信息。
漏洞复现环境
攻击机:Kali Linux
靶机:Bee-Box环境
靶机可以直接下载虚拟机镜像,直接在虚拟机打开即可。
漏洞复现
下载好之后打开终端,通过ifconfig
命令查看虚拟机ip地址
通过查看bee-box漏洞信息,发现在8443端口存在心脏滴血漏洞
使用nmap扫描靶机ip的8443端口看是否存在心脏滴血漏洞
命令nmap -sV -p 8443 --script ssl-heartbleed.nse 192.168.31.127
存在漏洞,打开msf,进行攻击
使用search heartbleed
查找攻击模块
使用第一个use auxiliary/scanner/ssl/openssl_heartbleed
,使用show options
查看需要设置的参数
设置 RHOST、RPOST
1 | set RHOST 10.10.10.146 |
运行后可以看到 靶机的64KB信息,如果有人此时在登录web应用,还可以直接抓到账号密码等信息。
本文作者 : W4rnIn9
原文链接 : http://joner11234.github.io/article/f98ca180.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!