【发布时间】:2017-10-31 19:10:51
【问题描述】:
我在不止一次的讨论中看到,使用 echo 来管道到 passwd 是危险的,因为可以从进程列表中获取提供给 echo 的参数。
我目前正在开发一个通过 ssh 远程更改密码的工具。我确实使用 echo 方法,因为我没有使用 usermod 或 chpasswd 的 root 访问权限。
命令:
echo -e 'old\nnew\nnew' | passwd
为了检查它是多么容易 - 我试过了。但无法得到它们。
这是我的方法:
#!/bin/bash
filename=$1
while true
do
echo "$(pgrep -af passwd)" >> "$filename"
sleep 0.1
done
我几次通过 echo 更改密码,但什么也没看到。我认为 sleep 0.1 可能是个问题。
从进程列表中获取它是多么容易,因此以这种方式使用它是多么不安全。
【问题讨论】:
-
您只需要 root 权限即可更改某人 else 的密码。让数据来自标准输入而不是终端不会改变这一点。
-
它确实有效。试试看。
标签: bash processlist