W silniku do tworzenia forów internetowych zidentyfikowano kilka , które pozwalają na zorganizowanie ataku wielopoziomowego w celu wykonania dowolnego kodu PHP na serwerze. Problemy zostały usunięte w wydaniu .
Pierwsza luka występuje w modułach publikacji i wysyłania prywatnych wiadomości, co pozwala na wstrzyknięcie kodu JavaScript (XSS), który zostanie wykonany w przeglądarce przy przeglądaniu publikacji lub otrzymanej wiadomości. Wstrzyknięcie JavaScript jest możliwe z powodu niepoprawnej konwersji w HTML zagnieżdżonych BBCode. W szczególności tag
«
i podczas przetwarzania BBCode «» zostanie przekonwertowany na tag
‹iframe src=»youtube.com/xyz[url]http://onload=evilCode()[/url]»›‹/iframe›
, a po przetworzeniu pozostałych BBCode w
‹iframe src=»youtube.com/xyz‹a href=»http://onload=evilCode()»›..»›‹/iframe›
W związku z tym podwójny cudzysłów w ‘href=»‘ zamyka atrybut «src» i onLoad jest przetwarzany w kontekście iframe.
Druga luka umożliwia, przy posiadaniu uprawnień administratora forum, zapisanie skryptu PHP w systemie plików serwera webowego i zorganizowanie jego wykonania. Problem występuje w kodzie zarządzania stylami dla aktywnego motywu, które pozwala na generowanie nowych plików CSS. Takie pliki są zapisywane z dodaniem rozszerzenia „.css”, ale rozmiar pola w bazie danych z nazwą pliku jest ograniczony do 30 znaków. W związku z tym można nazwać plik „26znaków.php.css”. Przy zapisie w bazie danych dodatkowe znaki zostaną obcięte, a ostatecznie zapisze się nazwa „26znaków.php”. Następnie przez panel administratora forum można wygenerować nowy styl, a plik zostanie zapisany w katalogu „cache” z rozszerzeniem php.
Aby przeprowadzić atak, przestępca może wysłać administratorowi forum specjalnie sformatowaną wiadomość lub opublikować podobną wiadomość na forum. Przy przeglądaniu tej wiadomości w przeglądarce w ramach bieżącej sesji w forum i z uprawnieniami użytkownika przeglądającego wiadomość, zostanie wykonany podany przez atakującego kod JavaScript. Jeśli wiadomość przegląda administrator, to do wykonania kodu PHP w kontekście uprzywilejowanej sesji zostanie wykorzystana druga luka.
Źródło: opennet.ru
