Witam !
Ostatnio przeglądając wiele artów o zabezpieczaniu MyBB i kilku podstawowych stron dot. exploit'ów znanych przez inteligentnych administratorów śmiem twierdzić że MyBB góruje w porównaniu z innymi skryptami (nawet komercyjnymi) pod względem bezpieczeństwa.
Kilka argumentów...
Proszę zwracać uwagę na wersje !
Exploits for MyBB
Exploits for
vBulletin
Exploits for
IP.Board
Exploits for
phpBB3
Exploits Databases:
1337 (l33t) Day
Packet Storm
Hoobie
InSecure
SecuriTeam
Milw0rm
Na Packet Storm znalazłem tylko 1 exploit pod aktualną wersję, ale dość 'agresywny', konkretniej SQL Injection, ale to chyba nic w porównaniu do innych skryptów, szczególnie vBulletin...
Co o tym sądzicie ?
Ja osobiście jestem pod wrażeniem, w wielkim stopniu zaskoczyły mnie w/w wyniki wyszukiwania.
Komentujcie...
W MyBB nadal nie znajdowanych aż tak dużo dziur, bo jest mimo wszystko mniej popularny niż wypromowane IPB/vB, czy działające od nie wiadomo kiedy phpBB.
Niemniej, sytuacja się zmienia, ale jest dobrze, na dev mybb też nie ma wiele zgłoszeń o lukach, więc albo ich nie ma, albo ludzie nie szukają (a szuka jednak sporo).
Gorzej jak weźmiemy pod uwagę dodatki. Niestety te dla MyBB nie przechodzą przez żadną walidację, w efekcie sporo z nich posiada poważne luki.
Potwierdzam, im więcej modyfikacji tym większa szansa na atak, nie mamy pewności że jakaś modyfikacja nie posiada backdoora nieumyślnie stworzonego przez autora modyfikacji, kwestię popularności trochę rozwieję, ponieważ IP.Board w porównaniu do MyBB ma o wiele mniejszą ilość exploitów, ale bierzmy pod uwagę iż jest to skrypt komercyjny, tam łatanie dziur itp. akcje są priorytetem, w MyBB nie można tego powiedzieć podreślając ten fakt, iż opiera on się na zasadzie wolontariatu.
Otóż to. MyBB jest dość bezpiecznym silnikiem, zdecydowanie większa szansa jest na to, że atak spowodowany byłby luką w pluginie. Przykładowo, załóżmy, że w pluginie jest taki wers:
Kod PHP:
$row = $db->write_query("SELECT * FROM mybb_users WHERE uid = $_GET[uid]");
Ja tutaj widzę z 5 błędów, w tym dwa bardzo poważne, gdyż dotyczą bezpieczeństwa. Niech teraz atakujący dowie się, że taki plugin jest na forum i obejrzy kod. Przy lekkiej zabawie z GET można wyciągnąć nawet hashe i emaile wszystkich użytkowników. Poprawny kod powinien tak wyglądać:
Kod PHP:
$mybb->input['uid'] = (int)$mybb->input['uid']; // UID to zawsze cyfra, co nie?
$row = $db->simple_select('users', 'username, uid', 'uid = '.$mybb->input['uid']);
Założyłem oczywiście, że wystarczy tylko nick i uid użytkownika, po co czytać wszystko, w tym hasła i emaile?
Dlatego też oprócz aktualnej wersji MyBB równie bardzo ważna (a moim zdaniem nawet jeszcze ważniejsza) jest aktualna wersja pluginu(ów).
I powinno się pobierać pluginy z zaufanych źródeł, większa szansa, że jakaś "randomowa" strona będzie miała plugin z backdoorem niż takie np. mods.mybb.com (choć nie przeczę, tam też może być).
// Edit
(09.08.2012, 10:21)Arthu napisał(a): [ -> ]Na Packet Storm znalazłem tylko 1 exploit pod aktualną wersję, ale dość 'agresywny', konkretniej SQL Injection, ale to chyba nic w porównaniu do innych skryptów, szczególnie vBulletin...
Znalazłem tego exploita i sprawdziłem na różnych forach (od 1.6.6 do 1.6.8) i hostingach, na żadnym nie zadziałał.
Siper napisał(a):I powinno się pobierać pluginy z zaufanych źródeł, większa szansa, że jakaś "randomowa" strona będzie miała plugin z backdoorem niż takie np. mods.mybb.com (choć nie przeczę, tam też może być).
No to ja powiem, że na mods.mybb.com nie ma kontroli i da się trafić kwiatki.
Zgłaszałem zresztą błąd w jednym z pluginów (tego typu jak podałeś, sql inj.) tak administratorom, jak i autorowi.
Nie został on usunięty po dziś dzień.
BTW. Co do tego $mybb->input - tu się nie zgodzę. Czasami powoduje to większy bałagan niż używanie $_GET / $_POST itd. bo na dobrą sprawę nie wiemy z jakiego źródła to idzie - od tego trzeba by wykonywać dodatkowego if'a. Poza tym, tam w inpucie leżą nadal w pełni niezabezpieczone rzeczy.
Ale dobra, te szczegóły to już chyba nie na taki ogólny temat
(09.08.2012, 14:11)lukasamd napisał(a): [ -> ]/.../
BTW. Co do tego $mybb->input - tu się nie zgodzę. Czasami powoduje to większy bałagan niż używanie $_GET / $_POST itd. bo na dobrą sprawę nie wiemy z jakiego źródła to idzie - od tego trzeba by wykonywać dodatkowego if'a. Poza tym, tam w inpucie leżą nadal w pełni niezabezpieczone rzeczy.
Ale dobra, te szczegóły to już chyba nie na taki ogólny temat
Łukasz, to może napiszesz jakiegoś felka w wolnej chwili w rodzaju "Najczęściej popełniane błędy (bezpieczeństwa) w pluginach"?
DamYan napisał(a):Łukasz, to może napiszesz jakiegoś felka w wolnej chwili w rodzaju "Najczęściej popełniane błędy (bezpieczeństwa) w pluginach"?
To byłby świetny pomysł, dla tych początkujących developerów jak i starych elit
Rozumiem, że na mods.mybb.com również są backdoory, ale tak szczerze: Gdzie szybciej trafimy na plugin z backdoorem? Może np. być czysty na MyBB Mods (np. Google SEO, bo bardzo popularny), ale ktoś go zmodyfikuje i wrzuci na swój host. Niedoświadczony użytkownik, który usłyszał tylko nazwę pluginu weźmie zapewne pierwszy link z brzegu w Google.
A co do tego inputa (bezpieczeństwo), mógłbyś powiedzieć nieco więcej o tym?
// Edit
Jestem za pomysłem DamYana, bo to ciekawy temat
Przydało by się przyjrzeć pluginom pod które napisano już exploity, np.:
- MyStatus
- Forum Userbar Plugin
- Advanced Forum Signatures
... i je zfixować, o ile nie wyszły aktualizacje które naprawiły te problemy, lub alternatywą może też być zrobienie 'Czarnej listy pluginów', analizując ich kod
DamYan napisał(a):Łukasz, to może napiszesz jakiegoś felka w wolnej chwili w rodzaju "Najczęściej popełniane błędy (bezpieczeństwa) w pluginach"?
Szczerze to nie wiem czy mam na tyle doświadczenia, żeby to opisywać jak jakiś "guru" i dawać wskazówki. Coś takiego musiałoby być raczej ogólne i w odniesieniu do całego php/mysql/js. Nie wiem, ale wydaje mi się, że Riess byłby lepszym kandydatem na napisanie takie poradnika, o ile byłby zainteresowany.
Hoho, całkiem ciekawe znalezisko
DamYan, napewno się przyda
:
Kiedyś się na to natknąłem, mam gdzieś w zakładkach chyba nawet.
Polecam, dobrze opisane wiele kwestii z wieloma przykładami, ja się stamtąd dowiedziałem o kilku typach ataków, o których próżno było szukać informacji w kilku książkach.
Nie musisz intval'ować (int) zmiennej $mybb->input['uid'] gdyż już inc/class_core.php ją filtruje.