Aplikacje internetowe

Bełdziowe spojrzenie na aplikacje internetowe

Kiepskie filtrowanie house.pl

. grzech:

  • tworzenie własnego systemu filtrowania nieuwzględniającego funkcji natywnych

konsekwencja:

  • możliwość wstrzyknięcia kodu działającego po stronie klienta

W ubiegłorocznej edycji WebStarFestival strona marki House została nagrodzona w kategorii „Odzież, moda i uroda”. Jak widać nie ocenia się tam poprawności stworzonego kodu.

:: Błąd

Tworząc stronę house’a programiści z MediaAmbassador (agencja, która stworzyła tę stronę) postanowili oprzeć filtracje danych wejściowych nie na natywnych funkcjach PHP, lecz na własnym rozwiązaniu. W skrócie polega ono na modyfikacji znacznika zamykającego tag HTML. Przykładowo wysyłając kod:

<h1>test</h1>

w kodzie strony ujrzymy:

<h1>test<">

tak więc wstępnie sposób filtrowania wydaje się spełniać swoją rolę. Problemem jest fakt, że programiści nie wzięli pod uwagę mnogości możliwości zapisania tagów HTML. I tak zapisując tag zamykający za pomocą systemu szesnastkowego (HEX) możemy bez problemu obejść system filtrowania:

Istnieje również inny, prostszy sposób na wstrzyknięcie kodu. Na końcu strony house’a znajduje się komentarz z informacjami o czasie generowania strony oraz jej adresie. Adres z komentarza nie podlega filtracji, tak więc aby wyświetlić nasz kod musimy uprzednio zamknąć komentarz.

:: PS

W normalnych warunkach nie opisywałbym powyższego błędu ze względu na niską szkodliwość społeczną ;-) robię to jednak ponieważ przyda mi się on do następnej notki.


Tagi: , ,
Kategoria: Bezpieczeństwo, BugTraq


4 komentarze

  1. Ktos napisał(a):

    W takich konkursach się nie ocenia ani jakości kodu po stronie serwera, ani też kodu klienckiego… bo gdyby się oceniało to wygrana była by ciężka (choć akurat analizując na szybko kod XHTML house.pl powiem, że bardzo ładna robota i jest tylko kilka rzeczy do których mógłbym się przyczepić) :-)Linki nie powodują komunikatu, poprawili?

  2. Michał `Bełdzio` Ławicki napisał(a):

    Co do kodu to się zgodzę :) Jeśli chodzi o poprawienie błędów to pierwszy jest nadal aktywny (Opera 9.2), drugi zaś został poprawiony.

  3. kamil napisał(a):

    a nie wystarczy wywolac poprostu alert(document.cookie) z konsoli :) ?

  4. rozumiem, że chodzi o konsolę JavaScript w przeglądarce? jeśli tak to wystarczy tyle, że wtedy uzyskasz swoje ciacho więc za wiele Ci to nie da :)

Dodaj komentarz