W większości języków…

W większości języków programowania możemy tworzyć obiekty – czyli instancje klas.
Serializacja to sposób na przechowywanie obiektów lub struktur tak aby mogły być łatwo transmitowane.
Z deserializacją niezaufanych obiektów mamy do czynienia jeżeli użytkownik kontroluje zawartość zserializowanego obiektu.
Serwer aby przetworzyć tak zapisany obiekt, musi bowiem wykonać operację odwrotną nazywaną deserializacją.
W niektórych językach podczas tej procedury, pewne metody są wywoływane automatycznie.
W PHP te metody nazywane są magicznymi i zaczynają się od podwójnego podkreślenia.
Cała idea ataku opiera się zatem na znalezieniu podatnej magicznej metody, której kod może zostać wykorzystany w zły sposób.
Przykładowo, w #php jeśli klasa posiada metodę __wakeup, podczas deserializacji obiektu przy pomocy funkcji unserialize – wykona się ona automatycznie.
Powiedzmy, że nasza implementacja __wakeup usuwa plik bazując na właściwości $plik.
Jeżeli atakujący kontroluje zserializowany obiekt, może zmienić wartość tego pola.
PHP automatycznie wykona magiczną metodę, a ta wywoła funkcje unlink, usuwając plik wskazany przez użytkownika.

Subskrybuj kanał na YouTube
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Jeżeli chcesz być wołany dodaj się do Mirkolisty.

#od0dopentestera #programowanie #security #informatyka #it #nauka #technologia #ciekawostki #gruparatowaniapoziomu #bezpieczenstwo #webdev #programista15k