Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> php Solutions 4/2006 "Kryptografia w php"
cicik
post
Post #1





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

Ostrzeżenie: (0%)
-----


Postanowiłem napisać to tutaj, ponieważ forum na stronie magazynu jest martwe.

Mój post jest komentarzem do pierwszej części artykułu, dotyczącej systemu bezpiecznego logowania.
Opisany sposób polega na tym, że hasło w bazie danych trzymane jest w formie hasza md5. Użytkownik w formularzu służącym do uwierzytelniania wpisuje swoje hasło, wysyła formularz. Przed samym wysłaniem generowany jest hasz hmac_md5 na podstawie hasza md5 i wygenerowanego unialnego klucza.
Po przesłaniu tak zakodowanego hasła na serwer pobierany jest z bazy danych hasz md5 poprawnego hasła. Na podstawie jego oraz klucza zapisanego w sesji generowany jest hmack_md5 i porównywany z tym nadesłanym z formularza.

Otóż znalazłem poważną dziurę w tym systemie. We wspomnianym artykule autor nie napisał nic o tym, że hasło do bazy danych trzeba zapisać. Zazwyczaj robi się to również przez formularz.
Do bazy danych musi trafić hasz md5 hasła. Można to uzyskać na dwa sposoby:

1. przesłać w formularzu jawne, niezakodowane hasło a następnie użyć czegoś w rodzaju 'insert into users (password) values (md5(\'' . $password . '\')', podając oczywiście oprócz hasła wartości dla pozostałych pól w tabeli. Można również hasz md5 policzyć w php aby nie przesyłać do serwera bazy danych jawnego hasła w zapytaniu. Oczywiste jest, że taki sposób jest zły. Jeżeli jakiś sniffer przechwyci nadesłane dane to będzie ich mógł użyć do zalogowania się.
2. można również (analogicznie jak przy logowaniu) przed wysłaniem formularza obliczyć jego hasz (tym razem tylko md5 a nie hmac_md5), przesłać go na serwer i zapisać do bazy.
To rozwiązanie WYDAJE się bezpieczne i jemu poświęcę chwilę czasu pokazując, że złamanie tego zabezpieczenia jest banalne.

Sniffer może przechwycić przesyłany formularz i poznać hasz md5 hasła.
Następnie hacker otwiera stronę do logowania i z jej źródła wczytuje nadesłąny z serwera klucz.
Na ich podstawie za pomocą gotowej funkcji hmac_md5($string, $key) oblicza hmac_md5 hasła.
Następnie wywołuje stronę

index.php?key=klucz&login=login&haslo=wygenerowany_h asz_hmac_md5_hasla

Logowanie się udaje. Jeżeli autor strony rozróżnia _GET i _POST to hacker musi zbudować odpowiedni formularz.
Sprawdzanie HTTP_REFERERa też nie pomoże bo telnetu każde dziecko potrafi używać.

Tak więc podany sposób bezpiecznego logowania zawiera dziurę.
Aby się zalogować wystarczy znać hasz md5 hasła, który można poznać przechwytując stronę dodającą użytkownika do bazy lub np. zmieniającą hasło (każda strona z logowaniem posiada funkcję zmiany hasła).

Podaną dziurę przetestowałem i jest w pełni "skuteczna".
Go to the top of the page
+Quote Post

Posty w temacie
- cicik   php Solutions 4/2006 "Kryptografia w php"   18.07.2006, 19:59:28
- - anAKiN   Ogolnie, to skoro najlatwiejsza czescia w twoim op...   18.07.2006, 20:22:47
|- - cicik   chyba sie nie zrozumielismy...   18.07.2006, 20:26:15
- - Vengeance   Nie ma rozwiązań 100% bezpiecznych, to po 1. Po d...   18.07.2006, 20:28:12
|- - cicik   Cytat(Vengeance @ 18.07.2006, 21:28 ) Tak...   18.07.2006, 20:35:08
|- - Vengeance   Cytat(cicik @ 18.07.2006, 21:35 ) Ale uży...   18.07.2006, 23:20:59
- - mike_mech   Wiesz ~cicik mam Ci za złe że dziś nie zasnę. No n...   18.07.2006, 22:29:51
- - Seth   Musial bym przeczytac artykul anakina aby sie zgod...   18.07.2006, 23:24:22
|- - cicik   Cytat(Seth @ 19.07.2006, 00:24 ) Napewno ...   19.07.2006, 06:07:59
|- - anAKiN   Cytat(cicik @ 19.07.2006, 07:07 ) 5. Snif...   19.07.2006, 08:28:18
|- - cicik   Cytat(anAKiN @ 19.07.2006, 09:28 ) Ta dys...   19.07.2006, 08:33:33
|- - mike_mech   Cytat(cicik @ 19.07.2006, 09:33 ) W komen...   19.07.2006, 08:40:28
|- - bigZbig   Cytat(cicik @ 19.07.2006, 09:33 ) ... zda...   19.07.2006, 08:49:19
- - Zbłąkany   I dlatego właśnie wymyślono ssl IMHO: wystarczy m...   19.07.2006, 00:01:40
- - piczu   @Vengeance nie pasi, bo musisz kiedys zmienic hasl...   19.07.2006, 00:02:48
- - squid   @cicik to co opisujesz to nie jest dziura w algory...   19.07.2006, 09:17:22
|- - cicik   Cytat(squid @ 19.07.2006, 10:17 ) @cicik ...   19.07.2006, 09:25:01
|- - mike_mech   Cytat(cicik @ 19.07.2006, 10:25 ) Oczywiś...   19.07.2006, 09:37:45
|- - cicik   Cytat(mike_mech @ 19.07.2006, 10:37 ) Nik...   19.07.2006, 10:00:32
- - nasty_psycho   CytatBezpieczeństow kosztuje, podobnie jak in...   19.07.2006, 10:29:45
|- - cicik   Cytat(nasty_psycho @ 19.07.2006, 11:29 ) ...   19.07.2006, 10:54:39
- - yaro   Ok, są i tacy którzy bu sie tylko włamywali do wsz...   19.07.2006, 10:49:34
- - nasty_psycho   oboje, ale raczej firma ktora uzywa tego cms-a bo ...   19.07.2006, 11:00:46
|- - cicik   Cytat(nasty_psycho @ 19.07.2006, 12:00 ) ...   19.07.2006, 11:15:35
- - nasty_psycho   No ale powedzialem ze oboje, ale firma uzywajaca b...   19.07.2006, 11:18:32
- - Ludvik   CytatTreaz wyobraz sobie, ze tworzysz jakis produk...   19.07.2006, 11:31:43
- - Cysiaczek   Istnieją zabezpieczenia, które polegaja na używani...   19.07.2006, 11:52:56
- - wieja   Przednio sie ubawiłem czytając powyższe posty. Pan...   19.07.2006, 14:47:35
|- - cicik   Cytat(wieja @ 19.07.2006, 15:47 ) Przedni...   19.07.2006, 14:56:53
- - nasty_psycho   ok, ale mi sie wydaje ze mozna bezpiecznie wysylad...   19.07.2006, 15:02:15
- - wieja   nasty_psycho tak tylko pytanie czy warto? Choc ...   19.07.2006, 23:43:28
- - cicik   Cytat(wieja @ 20.07.2006, 00:43 ) Tak, je...   20.07.2006, 06:14:22


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:35