【问题标题】:How to replace a password in /etc/shadow using bash script?如何使用 bash 脚本替换 /etc/shadow 中的密码?
【发布时间】:2015-02-24 15:38:26
【问题描述】:

对于我的安全课程,我们应该使用一个写得很糟糕的文件复制程序来获得一个 root shell。我们应该将我们的 hack 写入脚本。我知道如何访问 /etc/shadow 文件,但我不确定如何从 bash 脚本中搜索 root 密码并将其替换为无密码。我知道影子文件的格式,用户名:密码:等,但是是否可以在脚本中找到密码并替换它?

我找到了命令sed,但这需要我知道旧密码是什么。在此之前我可以使用另一个命令来获取密码吗?

注意:我正在使用 /etc/shadow 的副本,然后我可以用

覆盖原始副本

【问题讨论】:

  • 除非您是root,否则您无法读取/etc/shadow,因此如果您错过了这一点,您将不太可能获得root 的密码。
  • 使用他给我们的代码,我可以得到 /etc/shadow 的副本,对其进行更改,然后将其写回原始文件。这只是我遇到麻烦的更改部分
  • 如果您将自己锁定,您是否有恢复计划? :) :)
  • 是的,我们每个人都在自己的虚拟机上工作,我们只需要给老师发电子邮件进行重置

标签: linux bash shell


【解决方案1】:

这是你的根哈希

pass=`cat /etc/shadow | grep root| awk -F: '{print $2}'`

【讨论】:

  • 只能是一个命令:awk -F: '$1=="root" {print $2}' /etc/shadow
  • 这样会找到与root关联的密码并将其存储在pass中吗?显然,由于我正在使用 /etc/shadow 的副本(如上面的评论中所述),我只需用我的副本名称替换您的那部分行吗?
  • 它将存储root密码的哈希,而不是密码本身。
  • 应该没问题,因为我只想用无密码替换它,而不关心明文密码是什么。非常感谢!稍后我会尝试一下,然后接受您的回答。祝你有美好的一天!
【解决方案2】:

为了避免解析和使用 python/perl/awk/.... 一个可能的解决方案是这样使用 usermod 命令:

usermod -R /var/lib/lxc/mycontainer/rootfs -p `mkpasswd -m sha-512 lol` root

在上面的示例中,我指定了一个不同的 chroot (-R),并使用 lol 作为密码。

【讨论】:

  • 您能否详细说明一下,并解释一下您在这里做什么,而不是发布纯代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2021-09-29
  • 2014-06-01
  • 2021-09-15
  • 1970-01-01
  • 2014-12-08
相关资源
最近更新 更多