Please enable JavaScript.
Coggle requires JavaScript to display documents.
PHP (PHP Object Injection (narzędzia (PHPGGC (tool do automatyzowania…
PHP
PHP Object Injection
jeśli aplikacja deserializuje dane pochodzące od usera napastnik może wykorzystać dowolną inną klasę która może zostać załadowana przez auto-loading i spróbować użyć jej magicznych metod do osiągnięcia swoich celów (jak usunięcie plików przez obiekt klasy odpowiedzialnej za cache, który przy swojej destrukcji wykonuje usunięcie danego pliku)
w praktyce rzadko mamy dostep do odu klas, rozwiazaniem jest przejrzenie klas popularnych bibliotek PHP i proba wykorzystania ich metod na slepo
-
narzędzia
PHPGGC
tool do automatyzowania tworzenia łańcuszków wywołań metod w popularnych bibliotekach PHP i serializacji ich, czyli przygotowania payloadu.
deserializacja
deserializacja w PHP nie wykorzystuje konstruktora klasy, wygląda jak utworzenie obiektu danej klasy i wypełnienie go wartościami
kod metod nie jest de/serializowany, tylko pola
magic methods
mają __ na początku nazwy, wywołują sięsamoistnie w określonych warunkach
przykłady
-
-
__toString
rzutowanie instancji danej klasy na string, np podczas wywoływania funkcji echo
-
-
niebezpieczne metody
unserialize
jeśli przyjmujemy dane od usera, powinniśmy używać json_encode() oraz json_decode() gdyż inaczej narażamy się na RCE. Wiąże się to z przejściem na jsona rzecz jasna
jako drugi argument można przekazaćtablicę klas które można deserializować lub wartość true/false (true - deserializuj wszystkie, false - żadnej) jednak nawet dokumentacja odradza używania funkcji w tej "bezpieczniejszej" postaci