这个bash脚本做了什么,它有什么问题?

时间:2014-01-24 11:35:28

标签: bash

请您帮我分析一下这个脚本并告诉我它有哪些安全问题(如果有的话):

 #!/bin/bash
    user=$(whoami)
    touch /var/log/bashlog/$user
    /bin/bash | tee -a /var/log/bashlog/$user

我们被要求探索一个系统来查找错误,这个文件让我很困惑(它被保存为一个奇怪的名字)。

2 个答案:

答案 0 :(得分:3)

此脚本有潜在危险!

对您的影响可能因其调用方式而异。如果您是故意运行调试控制台或创建教程,那么它可能没问题。然而它并没有这样的味道。如果它是故意的并且它引入的危险被考虑在内,它不需要是多用户意识的,也不会记录到公共场所。如果由于没有明确记录的原因而在机器上作为登录系统的一部分自动运行,我会说您的机器严重受损。

  • 首先,该脚本确定用户是谁,并在公共目录中为他们创建日志文件。假设您的用户具有默认umask设置,这些日志文件可能会被系统上的所有用户读取

  • 它接下来要做的就是启动一个新shell。问题在于正在捕获新shell的输出tee命令将输出分成两个位置。 shell中发生的所有事情的输出都将写入控制台,但所有内容的附加副本将附加到先前建立的日志文件中。

在运行此脚本时,您将被置于一个看起来就像您开始使用的shell中,但现在所有内容的输出不再是您的安全登录shell的私有。如果要从用户或系统范围的配置文件中调用它,则系统上所做的所有操作的输出可能都是公共记录。

你可能不希望发生这种情况。

答案 1 :(得分:2)

此脚本记录用户命令行会话期间生成的每个输出。它有潜在的危险,因为它可能会窥探一些用户活动。但它不是那么危险,因为它没有捕获输入,因此不会捕获任何密码。