macOS and Linux both keep track of the commands users type in their terminal so that users can easily remember what they've done. These logs can be accessed in a few different ways. While logged in, this command history is tracked in a file pointed to by the environment variableHISTFILE
. When a user logs off a system, this information is flushed to a file in the user's home directory called~/.bash_history
. The benefit of this is that it allows users to go back to commands they've used before in different sessions. Since everything typed on the command-line is saved, passwords passed in on the command line are also saved. Adversaries can abuse this by searching these files for cleartext passwords. Additionally, adversaries can use a variety of methods to prevent their own commands from appear in these logs such asunset HISTFILE
,export HISTFILESIZE=0
,history -c
,rm ~/.bash_history
.
Clears bash history via rm
Supported Platforms: Linux, macOS
rm ~/.bash_history
Clears bash history via rm
Supported Platforms: Linux, macOS
echo "" > ~/.bash_history
Clears bash history via cat /dev/null
Supported Platforms: Linux, macOS
cat /dev/null > ~/.bash_history
Clears bash history via a symlink to /dev/null
Supported Platforms: Linux, macOS
ln -sf /dev/null ~/.bash_history
Clears bash history via truncate
Supported Platforms: Linux
truncate -s0 ~/.bash_history
Clears the history of a bunch of different shell types by setting the history size to zero
Supported Platforms: Linux, macOS
unset HISTFILE
export HISTFILESIZE=0
history -c