最近公司在做ftp匿名登录漏洞扫描,第一次用了最笨的方法使用ansible先去批量查看所有linux主机哪些开启了ftp服务,在查看开启服务的主机vsftpd.conf配置文件中的anonymous_enable参数是否为YES,效果很不理想,之后在网上查找扫描的脚本,有好几篇都是用python来进行扫描,但是仅限1台或小批量主机,后来自己研究写出下边批量的脚本。
先和大家说一下思路
1.在脚本同目录创建ftplist文本文件,文件中填写ip信息,一行一个,之后将文件内容转换为列表,每行做为一个参数传入到列表中。
2.调用ftplib模块进行匿名登录测试(这里有两个缺点,第一是没有设置超时功能,遇到特殊情况会有卡顿现象,等着就可以了。第二是只扫描21端口,如果更改了端口此方法扫描无效,无奈技术水平有限后期优化我会在进行更新,如果有哪位大神进行了优化也请发我一份使用)。
3.进行循环操作将host列表中的每一个参数循环放进anonScan函数中执行。
#!/usr/bin/python
from ftplib import FTP
import ftplib
import time
import argparse
with open(‘ftplist’,‘r’) as f:
content = list(f)
host = [x.strip() for x in content]
def anonScan(hostname):
try:
f = FTP()
port = ‘21’
f.connect(hostname,port)
f.login(‘anonymous’,‘test@test.com’)
print(’\n[*] ’ + str(hostname) + " FTP Anonymous login successful!")
return True
except Exception as e:
print(’\n[-] ’ + str(hostname) + " FTP Anonymous logon failure!")
return False
i = 0
while i < len(host):
anonScan(host[i])
i += 1