Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Przejęcie serwera Exchange przez deserializację (łatajcie!)
Kolejna ciekawostka w ramach serii #vulnz. Tym razem mamy do czynienia z błędem umożliwiającym zdalne wykonywanie poleceń systemowych na serwerze Exchange. Dokładniej – RCE mamy w Exchange Control Panel, wymagane jest dowolne konto usera. Mało zabawne jest to, że atakujący po wykonaniu ataku otrzymuje od razu uprawnienia SYSTEM na serwerze. Microsoft w opublikowanej informacji o podatności wspomina, że eksploitowanie podatności prawdopodobnie zacznie się niebawem, warto więc pospieszyć się z łatką.
W czym tkwi istota problemu? W zasadzie w dwóch rzeczach:
- Exchange deserializuje pewne dane, które może przesłać użytkownik w żądaniu HTTP. Jak wiemy np. z tej podatności w SharePoincie – prowadzi to do możliwości wykonania kodu w OS. Jeśli ktoś chce zrozumieć temat od a-z (w kontekście .NET) to polecam do naszej książki (rozdział: Niebezpieczeństwa deserializacji w .NET)
- Microsoft jednak broni się przed możliwością podesłania do Exchange dowolnych zserializowanych danych (brawo!) – poprzez odpowiednie zaszyfrowanie zserializowanych danych. Co z tym szyfrowaniem? A więc uwaga:
Instead of having randomly-generated keys on a per-installation basis, all installations of Microsoft Exchange Server have the same validationKey and decryptionKey values in web.config.
Czyli dzięki zahardkodowanym kluczom, mogę obejść zabezpieczenie i przesłać dowolne dane do deserializacji.
–ms
Malo uzyteczny atak, typu jak bede miec dostep do klucza prywatnego to bedzie w stanie przyeczytac traffic