HTB Academy: Pwnbox configuration
In life sometimes simple is much better than complex
Below, you will find the current contents of my personal configuration gist and
the one-liner to immediately set up your Pwnbox. For security purposes and
long-term personalization, I recommend hosting your own version of this script.
HackTheBox Academy offers a Pwnbox environment similar to vanilla HtB. However,
there is a particularly important (to me) piece of functionality missing:
Persistent configuration. Because these instances are ephemeral, any
quality-of-life adjustments vanish the moment the lab ends.
Having worked for some time with zsh I can no longer tolerate most other
shells. It is not that I have high standards or use obscure configuration
options. It is much simpler than that: I use bindkey -v 1 and have written quite
a lot of scripts in it to be wary of a transition. At the same time, an
indispensable tool in my arsenal is tmux. My configuration for it mimics
vi keybindings, using C-b h/j/k/l for pane navigation instead
of the arrow keys. Frankly, a no-brainer.
Inspired by the “fetch-and-run” ease of tools like linpeas, I created a single
command that retrieves my environment and applies it instantly:
zsh <(curl -fsSL 'https://gist.githubusercontent.com/chatziiola/4960b0bd6d0f323c2d79432216cb8b87/raw/htbacad_setup.sh'); zsh
This script effectively configures the Pwnbox to use my preferred shell and
multiplexer settings:
# TLDR: this is a basic configuration gist for htb academy: responsible for zsh, tmux # feel free to use it yourself, but try to make your own copy: this one might be changed ? # zsh <(curl -fsSL 'https://gist.githubusercontent.com/chatziiola/4960b0bd6d0f323c2d79432216cb8b87/raw/htbacad_setup.sh') echo "Creating zshrc" cat << 'END' > "$HOME/.zshrc" autoload -Uz compinit compinit -d ~/.cache/zcompdump # Custom prompt setopt PROMPT_SUBST # Function to display Python virtual environment if active venv_prompt() { if [[ -n "$VIRTUAL_ENV" ]]; then echo "($(basename $VIRTUAL_ENV))" fi } unset VIRTUAL_ENV_DISABLE_PROMPT # Main prompt PROMPT='%F{red}[ %~ ]%f (%?%) %F{green}$(venv_prompt)%f -> ' bindkey -v alias cll='clear && ls -l' alias cl='clear' END echo "Now tmux" cat << 'END' > "$HOME/.tmux.conf" # Src: https://gist.github.com/william8th/faf23d311fc842be698a1d80737d9631 bind c new-window -c "#{pane_current_path}" bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" # Src: https://stackoverflow.com/questions/51639540/tmux-scroll-mode-vim-keybindings set-option -g default-shell /usr/bin/zsh set-window-option -g mode-keys vi bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c" bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard" bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R bind : command-prompt setw -g mouse on END
Footnotes:
While writing this I decided to test this belief: It is wrong. Even bash has
vi keybindings with set -o vi. I could perhaps go back to it but, if it ain’t broke, don’t fix it.