目錄
一、簡介
1.1、歷史:
1.2、分析:
1.3、基礎知識:
二、構建匿名FTP掃描器
2.1、概述:
2.2、函數:
2.3、實現:
1.1、歷史:
一次被稱為k985ytv 的批量入侵中, 攻擊者使用了FTP 的匿名賬戶和偷來的用戶名/密碼獲得了22400 個不同站點的控制權, 並在536000 個網頁上掛了馬(Huang,2011) 。利用獲得的訪問權限, 攻擊者注入了一段JavaScript 代碼, 將正常的網頁重定向到烏克蘭的一個惡意網站那裡。一旦被黑掉的網站把浏覽它的用戶重定向到烏克蘭的那台惡意主機那裡之後, 惡意主機就會利用浏覽器中的漏洞, 安裝假的用來竊取用戶信用卡信息的“ 防病毒程序” 。這次k985ytv 攻擊最終取得了巨大的成功。
1.2、分析:
通過檢查被黑服務器的FTP 日志,某個自動執行的腳本先連接到目標主機, 攻擊者上傳一個新的含有惡意重定向腳本的index.htm。被黑掉的服務器就能給任何一台訪問其網頁的有漏洞的浏覽器種木馬。
1.3、基礎知識:
文件傳輸協議(FTP) 服務允許用戶在一個基於TCP 的網絡主機間傳輸文件。通常情況下, 用戶使用用戶名和相應的密碼登錄FTP 服務器。一些FTP 服務器提供匿名登錄的能力。在這種情況下, 用戶輸入用戶名“anonymous", 並提交一個電子郵件地址代替密碼。
2.1、概述:
網站允許匿名FTP 訪問是不安全的。但是許多網站為此提供的正當理由卻是: 匿名FTP 訪問有助於網站訪問軟件更新。
2.2、函數:
ftp_login() :登錄 FTP 服務器,如果成功,該函數返回 TRUE。如果失敗,則返回 FALSE 和一個警告。語法:ftp_login(ftp_connection,username,password)
FTP.quit ():向服務器發送 QUIT 命令並關閉連接
2.3、實現:
利用Python 中的ftplib 庫編寫一個小腳本, 確定一個服務器是否允許匿名登錄。anonLogin()函數接收的參數是一個主機名, 並返回一個布爾值來描述該主機是不是提供匿名FTP 登錄。具體的操作過程是, 該函數嘗試建立一個匿名FTP 連接。如果成功, 則返回'true" 。如果在建立連接的過程中函數拋出了一個異常, 則返回“False" 。
運行 python anonLogin.py
import ftplib def anonLogin(hostname): try: ftp = ftplib.FTP(hostname) ftp.login('anonymous', 'password') print('\n(*) ' + str(hostname) + ' FTP Anonymous Logon Succeeded.') ftp.quit() return True except Exception as e: print('[*]' + str(e)) print('\n[-]' + str(hostname) + 'FTP Anonymous Logon Failed.') return False host = '192.168.190.131' anonLogin(host)