2014-01-24 188 views
1

能否请你帮我分析一下这个脚本,并告诉我什么安全问题有(如果有的话):这个bash脚本是做什么的,它有什么问题?

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

我们被要求探索系统发现故障和这个文件把我难倒了(这是保存为一个奇怪的名字)。

+1

它应该做什么? (特别是最后一行) – anubhava

+0

@anubhava不确定,被要求探索一个系统来查找错误,这个文件让我感到困惑(被保存为一个奇怪的名字) – JWyatt

+1

你的意思是除了这个事实,如果脚本以某种方式运行,提升特权它在机器上提供了一个root shell? – chepner

回答

3

此脚本有潜在危险!

您的后果可能因调用方式而异。如果它是故意运行调试控制台或创建教程的东西,则可能是好的。然而,它并没有像这样的气味。如果这是故意的,并且考虑到它引入的危险,则不需要多用户意识,并且它不会记录到公共场所。如果它由于没有明确记录的原因而作为机器登录系统的一部分自动运行,我会说你有一台严重受损的机器。

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

  • 它所做的下一件事是启动一个新的shell。问题是新壳的输出被捕获tee命令将把输出分成两个地方。在shell中发生的所有事情的输出将被写入控制台,但是一切的附加副本将被追加到先前建立的日志文件中。

在运行该脚本,你会留在看起来就像你开始与一个外壳,但一切的输出现在不再仅对您的安全登录shell。如果这是从用户或系统范围配置文件调用的,那么系统上所做的所有事情的输出都可能是公共记录。

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

2

此脚本记录用户命令行会话期间产生的每个输出。它可能会监视某些用户活动,因此具有潜在的危险性。但它并不是很危险,因为它没有捕获输入,所以没有密码会被捕获。