piątek, 14 grudnia 2012

JSON INJECTION i Cross-Site Scripting

Witam wszystkich serdecznie ;-)

Chciałbym dziś poruszyć temat, z którym chyba rzadko spotkamy się podczas testowania webaplikacji - jednak może się wydarzyć, że ta technika będzie nam do czegoś potrzebna.

Aplikacja, z której korzystam została napisana w taki, a nie inny sposób dla potrzeb przedstawienia tej metody. Frontend - Extjs 4.0, Backend - php 5.3.3.

Sytuacja wygląda tak - w aplikacji mamy grid z listą użytkowników, oraz formularz dodawania nowych (pola imię i nazwisko). Jak widać na poniższych screenshotach - imię oraz nazwisko są filtrowane, więc standardowy XSS odpada.





Można jednak zauważyć, że przy zapisywaniu oraz pobieraniu danych pojawia się dodatkowe pole - description, które nie jest wyświetlane po stronie frontendu. Zakładając, że w ciągu umieścimy znak " (cudzysłów), a pole nie jest filtrowane - zwracany JSON zostanie źle sparsowany i przeglądarka zwróci nam błąd.






Co się stanie, gdy JSON będzie miał dwa stringi o takiej samej nazwie? Wartość zostanie nadpisana. Wniosek płynie z tego taki, że jeżeli uda nam się wstrzyknąć (w tym przypadku) pole surname z wartością, która normalnie byłaby filtrowana - możemy to wykorzystać do XSS'a.






To by było na tyle - mam nadzieję, że komuś się to kiedykolwiek przyda.

Brak komentarzy:

Prześlij komentarz