Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
.NET + JSON = zdalne wykonanie kodu na serwerze? Czasami tak…
Parę dni temu światło dzienne ujrzał projekt ysoserial.net – czyli dotnetowy odpowiednik słynnego javovego ysoserial.
Program generuje odpowiedni ciąg znaków, który po deserializacji na serwerze, powoduje wykonanie na nim wskazanego przez atakującego kodu.
Konkretny przykład tego typu dotnetowego buga można zobaczyć tutaj (deserializacja z JSON), tutaj (deserializacja ciasteczka mającego chronić przed CSRF(!)), czy w Dotnetnuke tutaj (deserializacja z XML). Więcej też w prezentacji tutaj.
O deserializacji pisaliśmy już bardzo dużo – ostatni mega hack na Equifax był zrealizowany przez niekontrolowaną deserializację w bibliotece Apache Struts (dokładniej – w jego pluginie obsługującym API REST-owe; deserializacja była tu automatycznie robiona z XML-a (!)).
Wspominaliśmy też dokładniej o tym temacie w Javie, Pythonie i o podobnych problemach w PHP.
Podsumowując – jeśli (w dowolnej technologii) realizujecie deserializację z dowolnego formatu (binarnego, JSON, XML), zastanówcie się czy myśleliście o bezpieczeństwie…
–ms
Co ciekawsze wrzucenie payloadu do Fiddlera – opcja TextWizzard – wysypuje program :). Czyli analizując requesty z WEB’ a można (prawdopodobnie) wykonać kod na stacji w wewnątrz chronionej sieci.