Jos*_* R. 5 security password strace
我目前对此很着迷,strace
因为是新手,所以我决定稍微玩一下。正如问题标题所建议的那样,我尝试了strace su
和strace ssh
。这两个命令都显示了我在 strace 输出中输入的密码。su
一直抱怨密码不正确,同时ssh
设法正常登录。
我的问题:
su
将错误的密码报告为一种安全措施,因为它检测到它正在运行strace
?如果是这样,它怎么知道它是通过 调用的strace
?它会检查/proc/self/cmdline
吗?alias su="strace -o /tmp/output.log su"
Mic*_*zek 17
这不是安全漏洞;您可以跟踪流程,因为这是您的流程。您不能只附加strace
到任何正在运行的进程。例如:
$ sudo sleep 30 &
[1] 3660
$ strace -p 3660
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Run Code Online (Sandbox Code Playgroud)
su
正在报告错误的密码,因为它没有足够的读取权限/etc/shadow
。/etc/shadow
是存储密码哈希的地方,它被设置为出于安全原因只有 root 可以读取它。su
设置了 setuid 位,因此无论谁运行它,它都会以 root 有效运行,但是当你运行它时它strace
不起作用,所以它最终在你的帐户下运行
我不确定您所说的“可能造成多少损害”是什么意思。如您所见,su
不能从内部工作strace
,因此您将使其无法正常工作。如果您的意思是“有人可以使用它来窃取我的密码”,那么他们将需要能够在您的 shell 中设置别名,除非您已将登录文件设置为全球可写或类似的内容,否则他们不应有权这样做。如果他们确实有权设置别名,则他们可以将别名su
直接记录您的密码的修补版本;没什么特别的strace