PDA

Zobacz pełną wersję : VirtueMart 1.1.9



Robster
02-01-2014, 18:40
Witam,

Mam problem z VirtueMart 1.1.9 na Joomla! 1.5.26. Do niedawna wszystko było ok i nagle bez żadnej przyczyny, przy ostatnim kroku pojawia się komunikat obłędu 500. W pliku com_virtuemart/virtuemart.php znalazłem na początku pliku kod:

$get_ar = array_values($_GET);$c_a_g = count($get_ar);for ($i = 0;$i < $c_a_g;$i++){if(eregi('union(.*)select',$get_ar[$i])){ header("Location: /"); exit; }if(eregi('benchmark(.*)by',$get_ar[$i])){ header("Location: /"); exit; }if(eregi('sleep(.*)by',$get_ar[$i])){ header("Location: /"); exit; }}$post_ar = array_values($_POST);$c_a_p = count($post_ar);for ($i = 0;$i < $c_a_p;$i++){if(eregi('union(.*)select',$post_ar[$i])){ header("Location: /"); exit; }if(eregi('benchmark(.*)by',$post_ar[$i])){ header("Location: /"); exit; }if(eregi('sleep(.*)by',$post_ar[$i])){ header("Location: /"); exit; }

który jak sądzę dodała tam nieupoważniona osoba trzecia. Po jego usunięciu, zamiast komunikatu z błędem pojawia się pusta biała strona (logi serwera milczą). Metodą eliminacji doszedłem do linijki:

$ok = $$classname->$funcParams["method"]($vars);
w pliku com_virtuemart/virtuemart_parser.php gdzie kod się wykrzacza do białej strony.
Spotkał się ktoś może z czymś podobnym? Bo prawde mówiąc mnie się pomysły skończyły :/

1.5.261.5.26

Jdwind
02-01-2014, 23:17
A co tam masz takiego, że nie możesz podmienić na oryginalny plik, Robert? Porównaj z plikiem z paczki.

Robster
03-01-2014, 16:55
Nie no to zrobiłem od razu, ale dalej było to samo. Dodatkowo w tym pliku była linijka, która zapobiegała wyświetlaniu błędów i zapisu ich w logach serwera. Przypuszczam więc, że jakaś biblioteka lub klasa z której dziedziczone są metody, zawiera jakiś syf, plus ten kod do nieraportowania o błędach. W każdym razie jest kicha straszna i zapytałem, bo może ktoś miał cuś podobnego i wybroniłby mnie przed mozolnym przeczesywaniem plików w poszukiwaniu błędu.

Robster
03-01-2014, 18:21
Gdyby kogoś to interesowało, to problem rozwiązany. Nie wiem czy to był celowy atak, czy po prostu w sieci krąży bot wykorzystujący dziury w J!1.5 lub starym VM, w każdym razie problemem była podmieniona funkcja mail() w pliku phpmailer.

Wszystkie jej wystąpienia były podmienione na metodę xmail, plus wszędzie przed jej wywołaniem była dodana małpa (@). Funkcja sama w sobie nie działała, wiec nie było możliwości wysłania maili potwierdzających sprzedaż, a jak się później okazało, również żadnych innych. Wspomniana wcześniej małpa zapobiegała wyświetleniu odpowiedniego komunikatu z informacją o błędzie (to że uniemożliwia wpis z błędem w logach serwera, bym się nie spodziewał).

Przypuszczam, że to nie jedyny zainfekowany plik, ale na razie problem rozwiązany.