HackTools————2.簡單FTP網路掃描

FLy_鵬程萬里發表於2018-04-05

簡易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()

執行結果:


主要的思路還是一致的,而且程式碼設計思路也較為簡單,可以自己思考!

相關文章