目录
1.密码安全
2.漏洞利用
3.不安全的密码
4.密码猜解思路
5.字典wordlist
5.1 kali字典
5.2 github字典
6.专用字典
6.1指定格式字典
6.2 社工字典
6.3文章内容字典
kali 工具crunch
0x00 安装
0x01 基础语法
1.Lalpha
2.Ualpha
3. Numeric
4.Speical
1.-b指定文件输出的大小,避免字典文件过大
2.-c指定文件输出的行数,即包含密码的个数
3.-d限制相同元素出现的次数-
4. -e定义停止字符,即到该字符串就停止生成
5. -f 调用库文件 /usr/share/crunch/charset.lst
6. -i改变输出格式,即aaa,aab -> aaa,baa
7. -l通常与-t联合使用,表明该字符为实义字符
8. -m用-p替代
9. -o将密码保存到指定文件
10.-p
11.-q 读取密码文件,即读取pass.txt
12. -r告诉crunch继续从它离开的地方恢复生产密码字典
13. -s指定一个开始的字符,即从自己定义的密码xxxx开始
14. -t指定密码输出的格式
15. -u禁止打印百分比(必须为最后一个选项)
16. -z压缩生成的字典文件,支持gzip,bzip2,lzma,7z
7.Dvwa爆破
7.1 python
7.2 Burp suite**
7.2.1加入intruder
1.Sniper 狙击手
2.Battering ram 攻城锤
3.Pitchfork 草叉
4.Cluster bomb 榴霰[xiàn]弹
7.2.2 payloads
7.2.3 Resource Pool
7.3.1Battering ram 攻城锤
7.4.1Pitchfork 草叉
7.5.1Cluster bomb 榴霰[xiàn]弹**
8.密码暴力破解的防御
8.1 Dvwa
8.1.1 Medium
8.1.2 High
8.1.3 Impossible
9.暴力破解防御
9.1限制次数
9.2二次验证
9.3reCAPTCHA(IP验证)
9.4行为识别
9.5 WAF
9.6强制修改密码
9.7 建议
1.密码安全
可以分为存储安全、传输安全和输入安全(登录界面),权限管理进行认证和授权。
2.漏洞利用
从数据库获取密码,解密 窃听通信数据数据,解密 直接从登录框猜测密码
3.不安全的密码
/most-common-passwords-list/ 裤子密码字典生成器|CTF论坛-Tools
4.密码猜解思路
1、密码长度 2、密码内容 0-9 a-z A-Z !@#$%^&*
5.字典wordlist
5.1 kali字典
我们先进入wfuzz字典里面
wfuzz自带字典
.├── Injections│ ├── All_attack.txt│ ├── SQL.txt│ ├── Traversal.txt│ ├── XML.txt│ ├── XSS.txt│ └── bad_chars.txt├── general│ ├── admin-panels.txt│ ├── big.txt│ ├── catala.txt│ ├── common.txt│ ├── euskera.txt│ ├── extensions_common.txt│ ├── http_methods.txt│ ├── medium.txt│ ├── megabeast.txt│ ├── mutations_common.txt│ ├── spanish.txt│ └── test.txt├── others│ ├── common_pass.txt│ └── names.txt├── stress│ ├── alphanum_case.txt│ ├── alphanum_case_extra.txt│ ├── char.txt│ ├── doble_uri_hex.txt│ ├── test_ext.txt│ └── uri_hex.txt├── vulns│ ├── apache.txt│ ├── cgis.txt│ ├── coldfusion.txt│ ├── dirTraversal-nix.txt│ ├── dirTraversal-win.txt│ ├── dirTraversal.txt│ ├── domino.txt│ ├── fatwire.txt│ ├── fatwire_pagenames.txt│ ├── frontpage.txt│ ├── iis.txt│ ├── iplanet.txt│ ├── jrun.txt│ ├── netware.txt│ ├── oracle9i.txt│ ├── sharepoint.txt│ ├── sql_inj.txt│ ├── sunas.txt│ ├── tests.txt│ ├── tomcat.txt│ ├── vignette.txt│ ├── weblogic.txt│ └── websphere.txt└── webservices├── ws-dirs.txt└── ws-files.txt
5.2 github字典
GitHub - TgeaUs/Weak-password: 字典大全 dictionary
GitHub - fuzz-security/SuperWordlist: 基于实战沉淀下的各种弱口令字典
GitHub - k8gege/PasswordDic: -Top100弱口令密码字典 Top1000密码字典 服务器SSH/VPS密码字典 后台管理密码字典 数据库密码字典 子域名字典
/xjrelc/Blasting_dictionary/TgeaUs/Weak-password/fuzz-security/SuperWordlist/k8gege/PasswordDic/TheKingOfDuck/fuzzDicts/Ifonly-go/FuzzDict/ppbibo/PentesterSpecialDict/huyuanzhi2/password_brute_dictionary/download其他的建议在github搜索:字典、dict、wordlist之类的关键词
注意使用场合:
比如Web网站密码字典、WiFi密码字典、操作系统用户密码字典、数据库密码字典……
6.专用字典
6.1指定格式字典
比如生日、手机号、QQ号
crunch -h
6.2 社工字典
cupp、ccupp
6.3文章内容字典
cewl -w dict.txt
kali 工具crunch
0x00 安装
crunch -h
0x01 基础语法
Usage
crunch <min-len> <max-len> [<charset string>] [options]min-len和max-len是必选项(-p)Content
option1.Lalpha
abcdefghijklmnopqrstuvwxyz
2.Ualpha
ABCDEFGHIJKLMNOPQRSTUVWXYZ3. Numeric
01234567894.Speical
!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
1.-b指定文件输出的大小,避免字典文件过大
2.-c指定文件输出的行数,即包含密码的个数
3.-d限制相同元素出现的次数-
4. -e定义停止字符,即到该字符串就停止生成
5. -f 调用库文件 /usr/share/crunch/charset.lst
6. -i改变输出格式,即aaa,aab -> aaa,baa
7. -l通常与-t联合使用,表明该字符为实义字符
8. -m用-p替代
9. -o将密码保存到指定文件
10.-p
字符串 或者-p 单词1 单词2 ...以排列组合的方式 来生成字典 生成不重复的字符串 必须放在最后 不能和-s一起使用 会忽略最小长度和最大长度
11.-q 读取密码文件,即读取pass.txt
12. -r告诉crunch继续从它离开的地方恢复生产密码字典
13. -s指定一个开始的字符,即从自己定义的密码xxxx开始
14. -t指定密码输出的格式
15. -u禁止打印百分比(必须为最后一个选项)
16. -z压缩生成的字典文件,支持gzip,bzip2,lzma,7z
7.Dvwa爆破
7.1 python
思路
从字典读取值,生成密码
pwds = open("password.txt")for pwd in pwds: print(pwd)pwds.close()
HTTP连接到需要暴破的地址(URL F12看网络连接即可获得)
import requests# 如果第一个密码就提示成功,是 PHPSESSID 没有替换的问题pwds = open("password.txt")for pwd in pwds:url = "http://localhost/dvwa/vulnerabilities/brute/"# PHPSESSID务必替换为登录以后的PHPSESSIDresp = requests.get(url = url, params = {"username":"admin", "password":pwd.strip(), "Login":"Login"}, headers = {"Cookie":"security=low; PHPSESSID=himu84h1ia6vsvklt76c9juhqd"})#print(resp.text)if 'Username and/or password incorrect.' in resp.text:print('破解失败:'+pwd, end='')else:print('破解成功:'+pwd, end='')break;pwds.close()
获得HTTP响应,分析响应结果,看看有没有错误提示 “Username and/or password incorrect.” 如果有提示,就继续下一次循环 如果没有,就代表暴破成功
7.2 Burp suite**
7.2.1加入intruder
我们的目的是利用BP里面的字典来暴力破解password的值,进入intruder模块
在positions里面有Attack type模块,4个参数类型
1.Sniper 狙击手
2.Battering ram 攻城锤
3.Pitchfork 草叉
4.Cluster bomb 榴霰[xiàn]弹
我们以Sniper为例,先clear后添加需要爆破的字段
7.2.2 payloads
Payload set只有一个,但是Payload type类型有很多,以Simple list为例
Add 可以添加自己想加入的字段,Add from list 是BP自带的字典
7.2.3 Resource Pool
这里先不改,用默认即可,如果有二次竞争则需要修改,现在可以发起攻击了,
FLAG将length进行降序排序即可、
7.3.1Battering ram 攻城锤
它的admin和password保存一致
7.4.1Pitchfork 草叉
可以分别设置二个list,进行验证。
7.5.1Cluster bomb 榴霰[xiàn]弹**
可以分别设置二个list,交叉尝试,n x m 型
8.密码暴力破解的防御
8.1 Dvwa
8.1.1 Medium
sleep()响应时间延长了,
8.1.2 High
添加了token校验,使得请求必须串型
添加token
第二个token字段,添加递归字段
Option add 规则,先请求一次,后选中接收到的token值,复制
再回到payload选项,选中,在Initial payload for first request:粘贴
再创造一个单线程,Token
get flag
or
8.1.3 Impossible
懂的都懂
9.暴力破解防御
sleep Token 限制尝试次数,锁定账户
9.1限制次数
9.2二次验证
9.3reCAPTCHA(IP验证)
9.4行为识别
9.5 WAF
9.6强制修改密码
9.7 建议
使用复杂密码 不同网站使用不同密码 定期修改密码 防止被钓鱼