本仓库包含 Heartbleed.java,这是一个基于 Java 的自定义漏洞利用程序,旨在通过从运行 Apache(端口 443)和 Postfix(端口 465)的易受攻击服务器(IP:192.168.1.132)中提取敏感数据,来演示 Heartbleed 漏洞(CVE-2014-0160)。该漏洞利用程序发送畸形的 TLS 心跳请求,利用未修补的 OpenSSL 版本(1.0.1 至 1.0.1f)中的漏洞,每次请求最多可泄漏 64KB 内存。配套的 Bash 脚本(apache_memload.sh 和 postfix_memload.sh)会用敏感数据(如用户凭据、邮件服务器密码和 SSL 证书)灌充服务的内存,随后由 Java 漏洞利用程序提取这些数据。
本项目是全面安全演示的一部分,相关细节记录在一份详细的 Word 文档中,该文档概述了攻击方法、结果以及对 Apache 和 Postfix 服务的影响。工作内容包括编写脚本灌充内存、从 Windows 客户端(IP:192.168.1.99)执行漏洞利用程序,以及分析泄漏的数据,以突出该漏洞的影响。
Heartbleed.java 是此演示的核心,实现了一个精简的攻击流程:
sendHeartbeats 方法发送畸形的心跳请求,这是漏洞利用的关键。sendHeartbeats 方法作为关键组件,通过反复向服务器发送精心构造的心跳消息来编排攻击,利用 Heartbleed 漏洞提取内存内容。该方法的作用在随附的 Word 文档中有详细说明,并附有其实施的截图。
这项工作的完整范围包括:
apache_memload.sh,通过 50 个 curl 请求灌充 Apache 的内存,并借助 PHP 脚本(memload.php)嵌入 SHA-512 密码哈希等敏感数据。类似地,postfix_memload.sh 向 Postfix 发送 50 个 SMTP 载荷,嵌入电子邮件凭据和密码。Heartbleed.java,以 Apache(端口 443)和 Postfix(端口 465)为目标,成功泄漏了用户凭据、密码和证书等数据。sendHeartbeats 方法的解释,以及包含未来缓解策略的结论。memload.php,位于 https://localhost/phpmyadmin/memload.php。sudo apt install openjdk-11-jdk。克隆仓库:
git clone https://github.com/Shayhha/HeartbleedAttack
编译漏洞利用程序:
javac -d bin Heartbleed.java
~/Desktop/apache_memload.sh
~/Desktop/postfix_memload.sh
Heartbleed.java,设置 SERVER_PORT = APACHE_PORT,重新编译,然后:javac -d bin Heartbleed.java
java -cp bin Heartbleed
Heartbleed.java,设置 SERVER_PORT = POSTFIX_PORT,重新编译,然后:javac -d bin Heartbleed.java
java -cp bin Heartbleed
此漏洞利用程序仅用于教育目的。未经明确许可,请勿使用它损害系统。确保遵守法律和道德标准。
MIT 许可证——详见 LICENSE。