简易FTP扫描器
思路:
(1)首先通过使用python的socket模块获取banner信息
(2)将banner信息与存在漏洞的版本的banner信息进行对比,如果有符合的那么说明就存在漏洞,否则不存在。
代码:
#encoding:utf-8
import socket #导入socket数据包
socket.setdefaulttimeout(2) #设置网络超时时间
s=socket.socket() #创建一个socket对象
s.connect(("192.168.11.138",21)) #使用socket连接目标服务器
ans=s.recv(1024) #从目标服务器接收信息
if ("Free Float Ftp Server (Version 1.00)" in ans): #将接收到的信息与存在漏洞的版本进行对比,输出相应的结果
print "Free Float Ftp Server is vulnerable"
elif ("3Com 3CDaemon FTP Server Version 2.0" in ans):
print "3CDaemon FTP server is vulerable"
elif ("Ability Server 2.34 "in ans):
print "Ability Server 2.34 is vulerable"
else:
print "FTP server is not vulerable"
运行结果:
模块化FTP扫描
将FTP扫描写成一个功能函数的形式来调用:
代码:
#encoding:utf-8
import socket #导入socket网络数据包
def retBanner(ip,port): #定义一个获取banner的功能函数
try: #异常处理
socket.setdefaulttimeout(2) #设置超时时间
s=socket.socket() #创建socket对象
s.connect((ip,port)) #使用socket连接目标对象
banner=s.recv(1024) #获取目标的banner信息
return banner #返回banner信息
except Exception,e: #异常处理
print e.message
return
def main(): #定义main函数
ip1="192.168.11.138" #设置要扫描的ip地址段
ip2="192.168.11.139" #设置要扫描的ip地址段
port=21 #设置要扫描的端口号
banner1=retBanner(ip1,port) #调用banner函数获取banner信息
if banner1 :
print ip1+":"+banner1
banner2=retBanner(ip2,port)
if banner2:
print ip2+":"+banner2
if __name__ == '__main__': #调用main函数
main()
运行结果:
第一个主机连接成功并且获取到了相应的banner信息,第二个主机不存在或者连接失败。
FTP漏洞扫描器
代码:
#encoding:utf-8
import socket #导入socket网络数据包
def retBanner(ip,port): #定义一个获取banner的功能函数
try: #异常处理
socket.setdefaulttimeout(2) #设置超时时间
s=socket.socket() #创建socket对象
s.connect((ip,port)) #使用socket连接目标对象
banner=s.recv(1024) #获取目标的banner信息
return banner #返回banner信息
except Exception,e: #异常处理
print e.message
return
def checkvalue(banner):
if "FreeFloat Ftp Server (Version 1.00)"in banner:
print "FreeFloat Ftp Server is vulnerable"
elif "3Com 3CDaem FTP Server Version 2.0" in banner:
print "3Com 3CDaem FTP Server is vulnerable"
elif "Ability Server 2.34 "in banner:
print "Ability Server is vulenerable"
else:
print "FTP is not vulenerable"
def main(): #定义main函数
ip1="192.168.11.137" #设置要扫描的ip地址段
ip2="192.168.11.138" #设置要扫描的ip地址段
port=21 #设置要扫描的端口号
banner1=retBanner(ip1,port) #调用banner函数获取banner信息
if banner1 :
print ip1+":"+banner1
checkvalue(banner1)
banner2=retBanner(ip2,port)
if banner2:
print ip2+":"+banner2
checkvalue(banner2)
if __name__ == '__main__': #调用main函数
main()
运行结果:
主要的思路还是一致的,而且代码设计思路也较为简单,可以自己思考!