昨天我们用sqlmap
突破了防守,取得了一些看起来像是帐号密码的东西
user_id | user | password |
---|---|---|
1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99 (password) |
2 | gordonb | e99a18c428cb38d5f260853678922e03 (abc123) |
看到可能会让人很害怕,各种猜忌从心中冒出开始怀疑整个世界可能有的恶意
我的密码是明码储存?
这样网站管理者不就也能看到我的密码了吗?
完蛋了,我有其他网站也是一样的帐号密码该怎麽办?
先说结论,有些网站的确还存在着明码储存,像是有些网站提供了忘记密码
的功能,点下去就能收到信并带有完整的明码密码。但通常密码是不会以明码形式储存在资料库里的,上面sqlmap
之所以能够取得密码是因为虽然经过杂凑方法对密码整形成5f4dcc3b5aa765d61d8327deb882cf99
这种形式,但是密码太简单,属於常见且极度危险的废物密码,有太多工具或是密码字典档能够将杂凑结果还原成原始密码,就跟明码一样在裸奔,所以sqlmap
才能在找到资料同时,判断出他的杂凑形式并且破解。
这边推荐邦友的文章,非常详细的解释了密码与杂凑的关系
https://ithelp.ithome.com.tw/articles/10277332
第一个介绍的工具是hash-identifier
,他不是用来破解,而是用来判断使用的杂凑方式,不过因为是根据杂凑的特性去猜测,所以结果也不一定准确。
这边直接使用hash-identifier
来对5f4dcc3b5aa765d61d8327deb882cf99
进行猜测,这个字串是来自password
的杂凑形式
hash-identifier
#########################################################################
# __ __ __ ______ _____ #
# /\ \/\ \ /\ \ /\__ _\ /\ _ `\ #
# \ \ \_\ \ __ ____ \ \ \___ \/_/\ \/ \ \ \/\ \ #
# \ \ _ \ /'__`\ / ,__\ \ \ _ `\ \ \ \ \ \ \ \ \ #
# \ \ \ \ \/\ \_\ \_/\__, `\ \ \ \ \ \ \_\ \__ \ \ \_\ \ #
# \ \_\ \_\ \___ \_\/\____/ \ \_\ \_\ /\_____\ \ \____/ #
# \/_/\/_/\/__/\/_/\/___/ \/_/\/_/ \/_____/ \/___/ v1.2 #
# By Zion3R #
# www.Blackploit.com #
# [email protected] #
#########################################################################
--------------------------------------------------
HASH: 5f4dcc3b5aa765d61d8327deb882cf99
Possible Hashs:
[+] MD5
[+] Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username)))
判断结果猜测是MD5
,这边由於我们知道密码是password
,所以可以透过另一个工具md5sum
来反向测试一下,下面的-n
是为了忽略echo预设有的换行,这样将password
字串喂给md5sum
来得到杂凑过的值
echo -n 'password' | md5sum
会得到结果,证明了hash-identifier的猜测结果是对的
5f4dcc3b5aa765d61d8327deb882cf99 -
接下来介绍一位好人john
,他可以帮我们暴力破解弱密码,但首先我们需要准备需要破解的hash给他,所以我们先编辑一个档案/tmp/hash
,档名可以随意,内容就填想要破解的hash,这边我们就拿上面出现过的两个
5f4dcc3b5aa765d61d8327deb882cf99
e99a18c428cb38d5f260853678922e03
接着呼叫帮手,--wordlist
是指定字点档,这边使用内建的,当然也可以使用自己编辑过的,接着--format=raw-md5
来缩小范围,最後放刚才编辑好的档案/tmp/hash
,这样john
就会根据字典档去暴力破解这两个hash了
john --wordlist=/usr/share/john/password.lst --format=raw-md5 /tmp/hash
结果如下,john
破解了两组
Using default input encoding: UTF-8
Loaded 2 password hashes with no different salts (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
abc123 (?)
password (?)
2g 0:00:00:00 DONE (2021-10-06 08:19) 100.0g/s 19200p/s 19200c/s 38400C/s 123456..larry
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed
这边要注意一下,如果对同样的hash破解,可能就会出现以下内容
No password hashes left to crack (see FAQ)
这是因为破解过的内容都被记录在/home/kali/.john/john.pot
,想重新破解,可以删除这个档案再执行一次,如果只是单纯想看破解过的内容,可以执行以下命令
john --show --format=raw-md5 /tmp/hash
就会显示破解过的内容
?:password
?:abc123
2 password hashes cracked, 0 left
体验这两个工具的过程中,我们能了解到某些老杂凑法已经不再安全了,即使资料经过整形也不能保证不会被逆向解析,所以渐渐地也有些改良性的杂凑法出现,但同样地,攻击者的工具与技术也是不断进步,孰胜孰负还未可知。
<<: Day21 为什麽要研发AR-HUD,它和W-HUD不都是投影在挡风玻璃上吗?
接下来,我们就要来建立第一个专案范本。 首先,我们可以在桌面上先建一个资料夹,命名叫 Angular...
物件复制: 浅层复制(shallow copy):仅被复制的一方能保留第一层的物件之值,但是当复制方...
Uptime - 掌握系统的生命徵象 系列文章 (1/4) - 我们要观测的生命徵象是什麽? (2/...
漏洞利用 利用侦测到的现有漏洞取得初始控制权 上图取自台科大资安社课教材 1. Exploit-db...
上篇大致上介绍了一下於 css vs React Native 的 flexbox 差异 这篇主要...