📒博客主页:开心星人的博客主页
🔥系列专栏:Try to Hack
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年7月5日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
john简介
john用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如 DES 、 MD4 、 MD5 等。 John 支持字典破解方式和暴力破解方式。主要目的是破解不够牢固的 Unix/Linux 系统密码
新建用户
useradd test
给用户设定密码
passwd test
设置密码为123456
linux关于账户和密码的两个重要文件/etc/passwd和/etc/shadow
/etc/passwd详解
看到了我们刚刚添加的test用户
test:x:1001:1001::/home/test:/bin/sh
test
代表账户
x
是密码(linux为了安全起见,将密码单独存储在/etc/shadow中了)
1001
是uid
1001
是gid
/home/test
是用户家目录
/bin/sh
是当前用户的shell
用户名:密码:用户id:组id:用户信息:主目录:shell
/etc/shadow详解
test:$y$j9T$9Jw0tzaJg1tx7WUoprdgm1$FxibR3TXC6QK/aTHc.2A5DCKVUfskfQMtc1VfmY9K08:19164:0:99999:7:::
1、用户名,与 /etc/passwd 文件中的用户名相对应。
2、加密后的密码,如果为空,则对应用户没有口令,登录时不需要口令;*代表帐号被锁定;!表示这个密码已经过期了;
$6$开头的,表明是用SHA-512加密;
$1$表明是用MD5加密;
$2$ 是用Blowfish加密;
$5$ 是用 SHA-256加密;
3、上一次修改的时间(从1970年1月1日起的天数)
4、密码不可被变更的天数:设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则没有限制
5、密码需要重新变更的天数:密码经常更换才能保证安全,为了提醒某些经常不更换密码的用户,可以设置一个天数,强制让6、用户更换密码,也就是说该用户的密码会在多少天后过期,如果为99999则没有限制
7、密码过期预警天数:如果在5中设置了密码需要重新变更的天数,则会在密码过期的前多少天进行提醒,提示用户其密码将在多少天后过期
8、密码过期的保留时间:如果在5中设置的日期过后,用户仍然没有修改密码,则该用户还可以继续使用的天数,账号失效日期,过了这个日期账号就不能用了
9、保留域
linux中采用一般sha512算法对密码进行了hash
unshadow组合 /etc/passwd 和 /etc/shadow
将账号密码文件组合成一个文件
unshadow /etc/passwd /etc/shadow > test.txt
查看test.txt
是这样的
test:$y$j9T$9Jw0tzaJg1tx7WUoprdgm1$FxibR3TXC6QK/aTHc.2A5DCKVUfskfQMtc1VfmY9K08:1001:1001::/home/test:/bin/sh
john破解密码
john test.txt
或者指定字典
john --wordlist=/usr/share/john/password.lst test.txt
即可破解密码了
查看已经破解的账号密码
john --show test.txt
可能是因为我的密码加密算法那里出了点问题,是$y$
,解不出来了