1. 首页
  2. 工具分享

Python3多线程端口扫描脚本以及渗透常用端口号

 

闲着无聊,总不能把python丢下,就写了这个小脚本,最近也慢慢在写自己用的工具,毕竟自己写的才是最顺手的。

Python3多线程端口扫描脚本以及渗透常用端口号

参数说明

-a 扫描的IP地址

-t 超时

-p 扫描端口 支持1-65535格式,以-号连接

 ____            _   ____
|  _ \ ___  _ __| |_/ ___|  ___ __ _ _ __
| |_) / _ \| '__| __\___ \ / __/ _` | '_ \
|  __/ (_) | |  | |_ ___) | (_| (_| | | | |
|_|   \___/|_|   \__|____/ \___\__,_|_| |_|

Have fun. Author:Y4er
usage: portscan.py [-h] -a HOST -t TIMEOUT [-p PORT]

optional arguments:
  -h, --help  show this help message and exit
  -a HOST     target host
  -t TIMEOUT  timeout
  -p PORT     target port

脚本代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author:Y4er

import socket
import argparse
import threading

def banner():
	print(r'''
 ____            _   ____                  
|  _ \ ___  _ __| |_/ ___|  ___ __ _ _ __  
| |_) / _ \| '__| __\___ \ / __/ _` | '_ \ 
|  __/ (_) | |  | |_ ___) | (_| (_| | | | |
|_|   \___/|_|   \__|____/ \___\__,_|_| |_|
                                           
Have fun. Author:Y4er''')

def portscan(ip,port,timeout):
	try:
		socket.setdefaulttimeout(timeout)
		s = socket.socket()
		s.connect((ip,port))
		print('[+] {} is open.'.format(port))
		s.close()
	except:
		print('[-] {} is close.'.format(port))
	finally:
		pass

class MyThread(threading.Thread):
	"""docstring for MyThread"""
	def __init__(self,host,port,timeout):
		super(MyThread, self).__init__()
		self.host = host
		self.port = port
		self.timeout = timeout

	def run(self):
		portscan(self.host,self.port,self.timeout)


if __name__ == '__main__':
	def_ports = [21,22,23,25,80,110,137,138,139,443,445,873,888,1025,1433,1521,2082,2083,2222,3306,3311,3312,3389,4899,5432,5900,6379,7001,7002,7778,8000,8080,8888,11211,27017,43958,50000,65500]

	parser = argparse.ArgumentParser(usage=banner())
	parser.add_argument('-a',help='target host',dest='host',required=True)
	parser.add_argument('-t',help='timeout',dest='timeout',type=int,required=True)
	parser.add_argument('-p',help='target port',dest='port',required=False)
	args = parser.parse_args()
	threads = []

	if args.port:
		if '-' in args.port:
			limits = args.port.split('-')
			limits = list(map(int,limits))
			for port in range(limits[0],limits[1]+1):
				t = MyThread(args.host,port,args.timeout)
				threads.append(t)
	else:	
		for port in def_ports:
			t = MyThread(args.host,port,args.timeout)
			threads.append(t)
	for t in threads:
		t.start()
	for t in threads:
		t.join()

 

多线程的线程锁没加,也不会加,可能数据会有点乱,但是没事,看不瞎 – -。

附上web中常用端口号

21 ftp 
 
22 SSH 
 
23 Telnet 
 
80 web 
 
80-89 web 
 
161 SNMP 
 
389 LDAP 
 
443 SSL心脏滴血以及一些web漏洞测试 
 
445 SMB 
 
512,513,514 Rexec 
 
873 Rsync未授权 
 
1025,111 NFS 
 
1433 MSSQL 
 
1521 Oracle:(iSqlPlus Port:5560,7778) 
 
2082/2083 cpanel主机管理系统登陆 (国外用较多)
  
2222 DA虚拟主机管理系统登陆 (国外用较多) 
 
2601,2604 zebra路由,默认密码zebra
  
3128 squid代理默认端口,如果没设置口令很可能就直接漫游内网了 
 
3306 MySQL 
 
3312/3311 kangle主机管理系统登陆 
 
3389 远程桌面 
 
4440 rundeck 参考WooYun: 借用新浪某服务成功漫游新浪内网 
 
5432 PostgreSQL 
 
5900 vnc 
 
5984 CouchDB http://xxx:5984/_utils/ 
 
6082 varnish 参考WooYun: Varnish HTTP accelerator CLI 未授权访问易导致网站被直接篡改或者作为代理进入内网 
 
6379 redis未授权 
 
7001,7002 WebLogic默认弱口令,反序列 
 
7778 Kloxo主机控制面板登录 
 
8000-9090 都是一些常见的web端口,有些运维喜欢把管理后台开在这些非80的端口上 
 
8080 tomcat/WDCP主机管理系统,默认弱口令 
 
8080,8089,9090 JBOSS 
 
8083 Vestacp主机管理系统 (国外用较多) 
 
8649 ganglia 
 
8888 amh/LuManager 主机管理系统默认端口 
 
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞 
 
10000 Virtualmin/Webmin 服务器虚拟主机管理系统 
 
11211 memcache未授权访问 
 
27017,27018 Mongodb未授权访问 
 
28017 mongodb统计页面 
 
50000 SAP命令执行 
 
50070,50030 hadoop默认端口未授权访问

这些差不多都写到了py脚本里。自用。

原创文章,作者:Y4er,未经授权禁止转载!如若转载,请联系作者:Y4er

联系我们

在线咨询:点击这里给我发消息

QR code