我认为:无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
一、端口扫描
1、端口扫描相关概念:端口->服务
一般在知道服务器开放了哪些端口后,就知道服务器开启了哪些服务。
(1)端口扫描的原理: 端口扫描,顾名思义,就是逐个对一段端口或指定的端口进行扫描。通过扫描结果可以知道一台计算机上都提供了哪些服务,然后就可以通过所提供的这些服务的己知漏洞就可进行攻击。其原理是当一个主机向远端一个服务器的某一个端口提出建立一个连接的请求,如果对方有此项服务,就会应答,如果对方未安装此项服务时,即使你向相应的端口发出请求,对方仍无应答,利用这个原理,如果对所有熟知端口或自己选定的某个范围内的熟知端口分别建立连接,并记录下远端服务器所给予的应答,通过查看一记录就可以知道目标服务器上都安装了哪些服务,这就是端口扫描,通过端口扫描,就可以搜集到很多关于目标主机的各种很有参考价值的信息。例如,对方是否提供FTP服务、WWW服务或其它服务。 (2)端口扫描的实质: 实质上,端口扫描包括向每个端口发送消息,一次只发送一个消息。接收到的回应类型表示是否在使用该端口并且可由此探寻弱点。
2、端口扫描工具的使用:nmap、御剑、单线程python脚本、多线程python脚本
(1)nmap端口扫描: kali或者windows都可以
- nmap -Pn -sV 192.168.97.214 -Pn,不进行ping -sV,扫描端口对应的服务的详细信息
kali的terminal中运行nmap: windows下的GUI形式的nmap:
windows下的cmd形式的nmap:
- nmap -Pn -sV 192.168.97.214 -oN 192.168.97.214.txt -oN,结果保存到文件103.97.177.22.txt
- nmap -Pn -sV –O 192.168.97.214 -O,扫描操作系统
- nmap -Pn -sV -A 192.168.97.214 -A,扫描操作系统、版本信息等等
- nmap -Pn -sV 192.168.97.214 --open –open,扫描开启的端口
- nmap -p1-65535 192.168.97.214 -p1-65535,扫描全端口
- nmap -v -A -F -iL target.com.txt -oX result.xml -v,显示扫描过程 -F,快速扫描 -iL,读取本地扫描目标文件 -oX,结果保存到result.xml中
- nmap -v -A -F -iL target.com.txt -oN result.txt
- nmap -v -A -p1-65535 -iL target.com.txt -oX result_all.xml
- nmap -v -A -sU target.com.txt -oX result_all2.xml -sU,对UDP的端口进行扫描
(2)御剑端口扫描:御剑无字典大小限制版 (3) 单线程python端口扫描脚本:portscan.py
- 第一步:设置脚本中的目标IP和想要扫描的端口 靶机IP:remote_server_ip = “8.210.121.117” 待扫描端口:for i in range(1,65535)
#coding:utf-8
#!/usr/bin/env python
import socket
from datetime import datetime
from multiprocessing.dummy import Pool as ThreadPool
# 设置靶机IP:remote_server_ip = "x.x.x.x"
remote_server_ip = "192.168.97.214"
ports = []
socket.setdefaulttimeout(0.5)
def scan_port(port):
try:
s = socket.socket(2,1)
res = s.connect_ex((remote_server_ip,port))
if res == 0: # 如果端口开启 发送 hello 获取banner
print 'Port {}: OPEN'.format(port)
s.close()
except Exception,e:
print str(e.message)
# 设置要扫描的端口:range(x,x)
for i in range(1,65535):
ports.append(i)
# Check what time the scan started
t1 = datetime.now()
pool = ThreadPool(processes = 200)
results = pool.map(scan_port,ports)
pool.close()
pool.join()
print 'Multiprocess Scanning Completed in ', datetime.now() - t1
- 第二步:修改后,直接运行即可,如下图所示
(4)多线程python脚本扫描网段:下载地址【https://github.com/AnthraX1/InsightScan】
- 示例1:python scanner.py 192.168.97.0/24 -p 80,8080 -t 20 -p 指定端口 -t 指定线程
- 示例2:python scanner.py 192.168.97.214 -S -t 20 -d -S 探测端口对应的服务 -d 把80/8080端口的信息保持到当前目录的page.html页面中 80/8080的页面结果导出到了page.html内:
二、常见端口服务
在网络安全渗透测试中,收集目标主机开启了哪些服务是至关重要的。这里收集到一些常见的的服务端口,也是笔者慢慢收集起来的,分享出来大家借鉴一下,也欢迎补充!!!
1、web类:已知web漏洞/敏感目录
第三方通用组件漏洞struts thinkphp jboss ganglia zabbix
80 web
80-89 web
8000-9090 web
2、数据库类:扫描弱口令
1433 MSSQL
1521 Oracle
3306 MySQL
5432 PostgreSQL
3、特殊服务类:未授权/命令执行类的漏洞
443 SSL心脏滴血
873 Rsync未授权
5984 CouchDB http://xxx:5984/_utils/
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问
4、常用端口类:扫描弱口令/端口爆破
21 ftp
22 SSH
23 Telnet
2601,2604 zebra路由,默认密码zebra
3389 远程桌面
5、端口合计详情
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默认端口未授权访问