Kilka dni temu opisywaliśmy przykład Facebooka, a dzisiaj egipski badacz ogłosił, że odkrył możliwość wykonania dowolnego polecenia na jednym z serwerów Yahoo. Błąd wyglądał bardzo ciekawie. Wystarczyło przesłać do serwera żądanie
http://tw.user.mall.yahoo.com/rating/list?sid=${@print(system(“ls”))}
by otrzymać w odpowiedzi listę plików. Co prawda początkowo metoda uniemożliwiała przesłanie znaku spacji (kodowanie nie pomagało), ale okazało się, że wystarczy przesłać polecenie np. w zmiennej HTTP_USER_AGENT:
http://tw.user.mall.yahoo.com/rating/list?sid=${@print(system($_SERVER['HTTP_USER_AGENT']))}
Jako dodatkowy bonus według badacza serwer, do którego uzyskał dostęp, miał starą wersję kernela, podatnego na błąd umożliwiający podniesienie uprawnień użytkownika. Yahoo już po dobie od zgłoszenia usunęło problem. Obecnie badacz czeka na obiecany kontakt od firmy, która obsługuje program Bug Bounty. Ciekawe, czy Yahoo dorówna wypłacie, którą obiecał Facebook za podobne odkrycie. Poniżej demonstracja działania błędu.
Komentarze
Za błąd w resecie hasła, yahoo zapłaciło tylko 3400$, rce w subdomenach wartę 1,5k~
Hmmm…Payload i warunki mocno podobne do ostatniej luki z eBay, gdyby ktoś się zastanawiał jak to działa…