Воскресенье , 16 Декабрь 2018
Home / Vbulletin 4 / Взломали форум — начинаем восстанавливать (Часть 3)
plugins_beyondcompare часть 3
plugins_beyondcompare часть 3

Взломали форум — начинаем восстанавливать (Часть 3)

В то время, когда у нас еще закрыт форум от посетителей, и вы выполнили все рекомендации из предыдущей части, самое время проверить в какой степени взломан ваш форум. Часть 3. Для этого, мы должны проверить все файлы, в также базу MySql. Или вы можете пропустить эту часть вообще и перейти к 9 части (она еще не написана), то есть просто восстановить резервную копию.

Автор: Алексей Раков

Ну а для остальных, кто готов, мы переходим к использованию скрипта vbplugincheck.sh Он написан одним из тех людей, которые работают над форумом VBulletin. Зовут его George

Лично, я хотел бы узнать, что было взломано на моем форуме, перед восстановление резервной копии. Вот именно для этого и был создан этот скрипт. Он запускается через SSH на VPS или выделенном сервере, и имеет возможность быстро сканировать базу данных форума для поиска потенциальных уязвимостей и вредоносных программ, которые были встроены в ваш форум. Как я уже говорил, скрипт называется vbplugincheck.sh, он был написан год назад и изначально был настроен только под Vbulletin 4, но автор модернизировал его и для работы с Vbulletin 5. Конечно, нужно понимать, что данный скрипт не сможет найти все вредоносные программы или хаки, но послужит хорошим началом при очистке взломанного форума.

Скачать скрипт вы можете здесь и предполагается, что вы знаете как скачать, настроить и запустить скрипт из командной строки SSH

mkdir /root/tools
cd /root/tools
wget -c https://alexrakov.ru/tools/vbplugincheck.sh?nocache -O vbplugincheck.sh
chmod 0700 vbplugincheck.sh

Поиск по ключевым словам

Данный скрипт осуществляет поиск Exec, base64, system, pass_thru, iframe функции в плагинах и хаках, шаблоны, история шаблонов, фразы и объявления. Пример поиска ключевых слов %exec%, %base64%, %system%, что бы вывести все результаты. Сам форум действительно может использовать некоторые из искомых функций и обрабатывать их, как заложено создателями. Поэтому скрипт будет выводить все найденные соответствия занесенные хакером и встроенные программистами Vbulletin. Вы должны будете сравнить все найденные ключи с оригинальными файлами, чтобы убедиться, что это вставка хакера. Так же вы можете использовать ручной поиск по ключевому слову, для более точного совпадения. пример работы ниже

Автор скрипта написал и еще одно дополнение которое назвал phpdfcheck.sh, которое сканирует по умолчанию форумы Vbulletin 4.2 и Vbulletin 5.0.4 b и сравнивает все файлы на наличие неизвестных php функций. Но к сожалению, я не нашел пока этот скрипт, если найду выложу. Могу лишь привести пример его работы

Vbulletin 4.2

./phpdfcheck.sh

—————————————————
Count number of PHP Files: 1128
Count number of PHP disable_functions listed: 50
—————————————————

searching PHP files at home/username/public_html/vb421
for disable_functions in use as outlined in script DF variable …

—————————————————
—————————————————
PHP disable_functions to check for:

system passthru exec popen proc_close proc_get_status proc_nice proc_open proc_terminate highlight_file escapeshellcmd define_syslog_variables posix_uname posix_getpwuid apache_child_terminate posix_kill posix_mkfifo posix_setpgid posix_setsid posix_setuid escapeshellarg posix_uname ftp_exec ftp_connect ftp_login ftp_get ftp_put ftp_nb_fput ftp_raw ftp_rawlist ini_alter ini_restore inject_code syslog openlog define_syslog_variables apache_setenv mysql_pconnect eval phpAds_XmlRpc phpAds_remoteInfo phpAds_xmlrpcEncode phpAds_xmlrpcDecode xmlrpc_entity_decode fp fput shell_exec mail chmod pclose

chmod in use
escapeshellcmd in use
eval in use
exec in use
fp in use
fput in use
mail in use
mysql_pconnect in use
passthru in use
shell_exec in use
system in use

search completed in 46.097250725 seconds

Vbulletin 5.0.4

./phpdfcheck.sh

—————————————————
Count number of PHP Files: 1930
Count number of PHP disable_functions listed: 50
—————————————————

searching PHP files at /home/username/public_html/504
for disable_functions in use as outlined in script DF variable …

—————————————————
—————————————————
PHP disable_functions to check for:

system passthru exec popen proc_close proc_get_status proc_nice proc_open proc_terminate highlight_file escapeshellcmd define_syslog_variables posix_uname posix_getpwuid apache_child_terminate posix_kill posix_mkfifo posix_setpgid posix_setsid posix_setuid escapeshellarg posix_uname ftp_exec ftp_connect ftp_login ftp_get ftp_put ftp_nb_fput ftp_raw ftp_rawlist ini_alter ini_restore inject_code syslog openlog define_syslog_variables apache_setenv mysql_pconnect eval phpAds_XmlRpc phpAds_remoteInfo phpAds_xmlrpcEncode phpAds_xmlrpcDecode xmlrpc_entity_decode fp fput shell_exec mail chmod pclose

chmod in use
escapeshellcmd in use
eval in use
exec in use
fp in use
fput in use
mail in use
mysql_pconnect in use
openlog in use
passthru in use
pclose in use
popen in use
proc_close in use
proc_get_status in use
proc_open in use
shell_exec in use
syslog in use
system in use

search completed in 106.167788862 seconds

Сравнение двух баз

итак продолжим, для проверки правильных наборов функций в коде, я предлагаю вам установить чистый тестовый форум. Затем мы сможем запустить наш скрипт vbplugincheck.sh на своем взломанном и на тестовом чистом сайте. Сохранить вывод в текстовый файл, а затем сравнить эти файлы между собой. Сравнение файлов между собой можно провести Notepad++ или BeyondCompare. Иследуя файлы, можно понять, что занесено хакером, а что встроено программистами Vbulletin.

Объяснения работы с vbplugincheck.sh

Скрипт работает только через SSH доступ к которому имеется у пользователей VPS или выделенного сервера. В скрипте есть несколько переменных. которые нужно отредактировать, для того, чтобы скрипт заработал. напротив каждой переменной стоит объяснение, но я поясню и сам.

VBVERSION=’4′ # for vB 4.x or enter ‘5’ for vB 5.x

# your mysql server hostname set
# in vB config.php
# $config[‘MasterServer’][‘servername’] =
MYSQLHOST=’localhost’

# mysql username/password
MYSQLUSER=’yourmysqlusername’
MYSQLPASS=’yourmysqlpassword’

# your database name
# vB config.php
# $config[‘Database’][‘dbname’] =
DBNAME=’vbdatabasename’

# if you set table prefix in vB config.php
# $config[‘Database’][‘tableprefix’] =
DBPREFIX=”

VBVERSION — Установить значение на 4 или 5 в зависимости от вашей версии форума. Пример, если у вас Vbulletin 4.2.1 установить нужно значение 4, если Vbulletin 5.0.5 то значение устанавливаем 5.

MYSQLHOST — такое же значение как в вашем конфиге форума, например localhost. Если ваш Хост находиться удаленно, то есть не на вашем сервере. указываем его ip адрес.

MYSQLUSER — Имя пользователя вашей базы данных

MYSQLPASS — Пароль пользователя для Базы данных

DBNAME — Имя вашей базы данных

DBPREFIX — Тот же префикс который установлен у вас в конфиге, если префикс вы не делали, то оставьте поле пустым.

Когда вы запустите скрипт в SSH, вы получите список вариантов которые вам доступны

./vbplugincheck.sh

./vbplugincheck.sh quick
./vbplugincheck.sh full
./vbplugincheck.sh quick {dbname} {dbprefix}
./vbplugincheck.sh full {dbname} {dbprefix}
./vbplugincheck.sh adminlogfull
./vbplugincheck.sh adminloguser
./vbplugincheck.sh adminlogtemp
./vbplugincheck.sh adminlogactions
./vbplugincheck.sh adminlogfull {dbname} {dbprefix}
./vbplugincheck.sh adminloguser {dbname} {dbprefix}
./vbplugincheck.sh adminlogtemp {dbname} {dbprefix}
./vbplugincheck.sh adminlogactions {dbname} {dbprefix}
./vbplugincheck.sh qkeyword
./vbplugincheck.sh fkeyword
./vbplugincheck.sh qkeyword {dbname} {dbprefix}
./vbplugincheck.sh fkeyword {dbname} {dbprefix}
./vbplugincheck.sh tempcheck
./vbplugincheck.sh temphistcheck
./vbplugincheck.sh tempcheck {dbname} {dbprefix}
./vbplugincheck.sh temphistcheck {dbname} {dbprefix}
./vbplugincheck.sh usertitle
./vbplugincheck.sh ads
./vbplugincheck.sh usertitle {dbname} {dbprefix}
./vbplugincheck.sh ads {dbname} {dbprefix}
./vbplugincheck.sh ranks
./vbplugincheck.sh ranks {dbname} {dbprefix}
./vbplugincheck.sh setting
./vbplugincheck.sh setting {dbname} {dbprefix}
./vbplugincheck.sh pluginlist
./vbplugincheck.sh pluginlist {dbname} {dbprefix}

Объяснение опций

В некоторых опциях можно также передать имя базы данных и преферикс, если вы хотите проверить другую базу данных на сервере (при условии. что в настройке скрипта вы проставили рут пользователя, чтобы был доступ к другим базам). Есои у вас нет префикса, то просто оставьте {dbprefix}.

./vbplugincheck.sh quick (summary format output of plugin, template, announcement & phrase table matches)
./vbplugincheck.sh full (full format output of plugin, template, announcement & phrase table matches)
./vbplugincheck.sh quick {dbname} {dbprefix} (similar to above except you can specify database name)
./vbplugincheck.sh full {dbname} {dbprefix} (similar to above except you can specify database name)
./vbplugincheck.sh adminlogfull (output full adminlog with human readable dateline)
./vbplugincheck.sh adminloguser (output filter on user.php adminlog human readable dateline)
./vbplugincheck.sh adminlogtemp (output filter on template.php adminlog human readable dateline)
./vbplugincheck.sh adminlogactions (output filter on specific actions i.e. edit, insert, add, modify)
./vbplugincheck.sh adminlogfull {dbname} {dbprefix}
./vbplugincheck.sh adminloguser {dbname} {dbprefix}
./vbplugincheck.sh adminlogtemp {dbname} {dbprefix}
./vbplugincheck.sh adminlogactions {dbname} {dbprefix}
./vbplugincheck.sh qkeyword (manual prompt for search term you enter yourself output quick summary format)
./vbplugincheck.sh fkeyword (manual prompt for search term you enter yourself output full format)
./vbplugincheck.sh qkeyword {dbname} {dbprefix}
./vbplugincheck.sh fkeyword {dbname} {dbprefix}
./vbplugincheck.sh tempcheck {dbname} {dbprefix} (list template table entries by dateline)
./vbplugincheck.sh temphistcheck {dbname} {dbprefix} (list templatehistory table entries by dateline)
./vbplugincheck.sh$ usertitle (list usertitles check for malicious code)
./vbplugincheck.sh$ ads (list ad html snippets check for malicious code)
./vbplugincheck.sh$ usertitle {dbname} {dbprefix}
./vbplugincheck.sh$ ads {dbname} {dbprefix}
./vbplugincheck.sh ranks (list user rank code for html code in ranking field)
./vbplugincheck.sh ranks {dbname} {dbprefix}
./vbplugincheck.sh setting (check setting table value field for code ie. %script% for js scripts)
./vbplugincheck.sh setting {dbname} {dbprefix}
./vbplugincheck.sh pluginlist (output pluginlist code content fully or filtered on keyword at prompt)
./vbplugincheck.sh pluginlist {dbname} {dbprefix}

Примеры выводов:

adminlogactions

Функция adminlogactions лучший способ посмотреть что было сделано пользователями — то есть просмотреть лог. Функция проверит в таблицах edit, modify, insert, update и так далее.

На выводе мы получим данные:

adminlogid
userid
dataline
script
action
extrainfo
ip addresss

просмотрев эти записи, вы можете увидеть, что делал пользователь с административными правами, какой индификатор у него был, в какое время и какой у него ip-адрес. Таким образом, если вы увидете, что какой-то из ваших админов или пользователей делал какие-то телодвижения с user.php, template.php, phrase.php, notice.php и announcement.php файлам, стоит более внимательно присмотреться к этим данным и все проверить.

Пример вывода:

./vbplugincheck.sh adminlogactions vb422a1

adminlogid: 12 userid: 1 [Sat Aug 31 10:57:52 2013] script: user.php action: modify extrainfo: [ user id = 2 ] ip: 111.222.333.444
adminlogid: 13 userid: 1 [Sat Aug 31 10:59:51 2013] script: user.php action: modify extrainfo: [ user id = 2 ] ip: 111.222.333.444
adminlogid: 14 userid: 1 [Sat Aug 31 11:00:41 2013] script: user.php action: edit extrainfo: [ user id = 2 ] ip: 111.222.333.444
adminlogid: 15 userid: 1 [Sun Sep 1 16:33:35 2013] script: template.php action: modify extrainfo: [ ] ip: 111.222.333.444
adminlogid: 16 userid: 1 [Sun Sep 1 16:33:39 2013] script: template.php action: modify extrainfo: [ ] ip: 111.222.333.444
adminlogid: 17 userid: 1 [Sun Sep 1 16:33:44 2013] script: template.php action: add extrainfo: [ style id = 1 ] ip: 111.222.333.444
adminlogid: 31 userid: 1 [Tue Sep 10 03:13:45 2013] script: cronadmin.php action: modify extrainfo: [ ] ip: 111.222.333.444
adminlogid: 34 userid: 1 [Fri Sep 20 13:47:39 2013] script: template.php action: modify extrainfo: [ ] ip: 111.222.333.444
adminlogid: 35 userid: 1 [Fri Sep 20 13:47:47 2013] script: template.php action: modify extrainfo: [ ] ip: 111.222.333.444
adminlogid: 36 userid: 1 [Fri Sep 20 13:47:52 2013] script: template.php action: add extrainfo: [ style id = 1 ] ip: 111.222.333.444
adminlogid: 37 userid: 1 [Fri Sep 20 13:47:56 2013] script: template.php action: inserttemplate extrainfo: [ style id = 1 ] ip: 111.222.333.444
adminlogid: 38 userid: 1 [Fri Sep 20 13:47:57 2013] script: template.php action: edit extrainfo: [ style id = 0 ] ip: 111.222.333.444
adminlogid: 39 userid: 1 [Fri Sep 20 16:22:30 2013] script: announcement.php action: add extrainfo: [ ] ip: 111.222.333.444
adminlogid: 40 userid: 1 [Fri Sep 20 16:22:44 2013] script: announcement.php action: update extrainfo: [ ] ip: 111.222.333.444
adminlogid: 42 userid: 1 [Fri Sep 20 16:22:50 2013] script: notice.php action: add extrainfo: [ ] ip: 111.222.333.444
adminlogid: 43 userid: 1 [Fri Sep 20 16:23:06 2013] script: notice.php action: update extrainfo: [ ] ip: 111.222.333.444
adminlogid: 50 userid: 1 [Fri Sep 20 16:37:28 2013] script: notice.php action: update extrainfo: [ notice id = 2 ] ip: 111.222.333.444
adminlogid: 53 userid: 1 [Fri Sep 20 16:58:43 2013] script: phrase.php action: modify extrainfo: [ ] ip: 111.222.333.444
adminlogid: 56 userid: 1 [Fri Sep 20 16:59:03 2013] script: phrase.php action: edit extrainfo: [ ] ip: 111.222.333.444

Дополнение: Работая над форумами другихпользователей, часто замечал, что там имелось несколько администраторов, бывало аж 5 штук. И каждый чето но делает. При использовании adminlogactions может вылезти куча логов пользователей, потому как много администраторов, имейте ввиду. Плюс хакер мог создать еще парочку учетных записей с админ правами и тут уже концов не найти. Мой вам совет, оставляйте на форуме одного администратора, который и будет за всем следить, если вас трое заходите троем на один аккаунт, не лепите их несколько.

Представьте себе форумы где тысячи пользователей, и постоянно кто-то изних повышается в звании и понижается и так далее, а хакер мог внести уязвимость в начале года и только сейчас она откылась, как ее искать? правильно перелопачивать всех за весь 2013 год, представляете какие тут списки?

Можно найти нового администратора. если отключить все известные индефикаторы модераторов и админов (тоесть 1, 2, 3) и отфильтровать весь 2013 год. Извлечь все найденые индефикаторы и прошерстить. Ниже приведен пример вывода где результат показал нового админа (username126000) с индефикатором 126000.

Удалось это сдлеать пи помощи vbplugincheck.sh отфильтроваф индификаторы 1, 2, 3 и введя имя базы данных, также по запросу пришлось ввести имя и пароль от базы.

for u in $(./vbplugincheck.sh adminlogactions | grep ‘ 2013’ | egrep -v ‘userid: 1|userid: 2|userid: 3’ | awk -F ‘ ‘ ‘{print $4}’ | sort -u); do echo; echo “adminlog userid: $u”; mysql -u mysqlusername -p -e “SELECT userid, username, email FROM user WHERE userid =${u}\G” VBDATABASENAME; done

На выходе мы получили:

adminlog userid: 126000
*************************** 1. row ***************************
userid: 126000
username: username126000
email: hackers@emailaddy

Затем проверяем другие учетные записи, с темм же электронным адресом.

mysql -u mysqlusername -p -e “SELECT userid, username, email FROM user WHERE email=’hackers@emailaddy’\G” VBDATABASENAME

Это привело к тому, что мы нашли еще 8 пользователей под тем же e-mail, которые создал хакер, когда у него были административные права. Стоит отметить, сто была и 9 учетная запись созданная хакером, которая работала за неделю до найденного взлома. Этот хакер вставил вредоносный плагин, который и нашел наш скрипт.

Так же можно отфильтровать adminlog на поиск ip адреса. В нашем примере индефикатор пользователя 126000

./vbplugincheck.sh adminlogactions | grep ‘ 2013’ | grep ‘126000’

Затем отфильтруйте adminlog по ip, чтобы найти все действия над plugin.php, template.php, announcement.php и user.php, которые были выполнены.

./vbplugincheck.sh adminlogactions | grep ‘ 2013’ | grep ‘111.222.333.444’

Быстрый вариант

Для быстрого варианта, то есть без фильтрации чего бы там нибыло будем использовать Vbulletin 4.2.2

– Выводите все перечисленные переменные для поиска exec, base64, system, pass_thru, iframe функции в хаках и плагинах, template, phrase и announcement tables.

– Если вы обнаружили неизвестные названия в модулях. плагинах и так далее, иследуйте их подробнее. Если там обнаружен вредоносный код — удалите его.

– Во всех найденых шаблонах и фразах удалить вредоносные коды или коды которых вы не знаете.

– Все это нужно делать только в том случае, если вы прочитали предисловие и часть 1, где было указание сделать резервную копию базы данных. чтобы можно было востановить, если что-то пойдет неправильно.

– Чтобы сохранить все выводы — сохраните их в текстовый файл под названием quickoutput.tx чтобы потом сравнить файлы. вы найдете свой текстовый файл в том же каталоге, где у вас лежит vbplugincheck.sh

./vbplugincheck.sh quick vb422a1 > quickoutput.txt

Примечание: Я удалил некоторые данные из списка ниже, чтобы сделать его короче.

./vbplugincheck.sh quick vb422a1

———————————————————————
%iframe% match should only be in the following templates:
———————————————————————
bbcode_video
editor-ie.css
help_bbcodes
humanverify_recaptcha
member.css
search_common
search_common_select_type
stylegenerator.css
vbcms.css
vbulletin.css
———————————————————————

———————————————————————
%exec% match should only be in the phrase table varname:
———————————————————————
varname: task_blog_cleanup_desc
varname: task_blog_pending_desc
varname: task_blog_views_desc
varname: blog_search_executed
varname: widgettype_vbcms_execphp
varname: skimlinks_time_limit_note
varname: cronadmin_add_edit_active_text
varname: diagnostic_text
varname: misc_text

———————————————————————

———————————————————————
%system% match should only be in the phrase table varname:
———————————————————————

varname: blog_admin_tags_tagtext_text
varname: options_options_vbblog_tagging_text
varname: vbblog_faq
varname: convert_blog_attachments_desc
varname: featured_entries_warning
varname: setting_vbblog_tagcloud_searchhistory_desc
varname: setting_vbblog_tagging_desc
varname: no_edit_permissions
varname: cannot_add_cms

———————————————————————

———————————————————————
%iframe% match should only be in the phrase table varname:
———————————————————————

fakeobjects.iframe
iframe.noUrl
iframe.title
iframe.toolbar

———————————————————————

———————————————————————
check plugins for base64 code
———————————————————————
———————————————————————
check plugins for exec()
———————————————————————
———————————————————————
check plugins for system()
———————————————————————
———————————————————————
check plugins for pass_thru()
———————————————————————
———————————————————————
check plugins for iframe
———————————————————————
———————————————————————
check templates for base64 code
———————————————————————
———————————————————————
check templates for exec()
———————————————————————
templateid: 967
styleid: -1
title: WHOSONLINE
templateid: 1018
styleid: -1
title: STANDARD_REDIRECT
templateid: 1308
styleid: -2
title: STANDARD_REDIRECT
———————————————————————
check templates for system()
———————————————————————
templateid: 527
styleid: -1
title: editor_jsoptions_font
templateid: 546
styleid: -1
title: FORUMDISPLAY
templateid: 550
styleid: -1
title: FORUMHOME
templateid: 661
styleid: -1
title: modifyoptions

———————————————————————
check templates for pass_thru()
———————————————————————
———————————————————————
check templates for iframe
———————————————————————
templateid: 1
styleid: -10
title: bbcode_video
templateid: 2
styleid: -20
title: bbcode_video
templateid: 168
styleid: -1
title: vbcms.css
templateid: 477
styleid: -1
title: bbcode_video
templateid: 1030
styleid: -1
title: stylegenerator.css
templateid: 1054
styleid: -1
title: member.css
templateid: 1082
styleid: -2
title: bbcode_video
———————————————————————
check templatehistory for base64 code
———————————————————————
———————————————————————
check templatehistory for exec()
———————————————————————
———————————————————————
check templatehistory for system()
———————————————————————
———————————————————————
check templatehistory for pass_thru()
———————————————————————
———————————————————————
check templatehistory for iframe
———————————————————————
———————————————————————
check announcement tables for base64 code
———————————————————————
———————————————————————
check announcement tables for exec()
———————————————————————
———————————————————————
check announcement tables for system()
———————————————————————
———————————————————————
check announcement tables for pass_thru()
———————————————————————
———————————————————————
check announcement tables for iframe
———————————————————————
———————————————————————
check phrase table for base64 code
———————————————————————
———————————————————————
check phrase tables for exec()
———————————————————————
phraseid: 323
languageid: -1
varname: task_blog_cleanup_desc
username: freddie
dateline: 1178750196

———————————————————————
check phrase tables for system()
———————————————————————
phraseid: 95
languageid: -1
varname: blog_admin_tags_tagtext_text
username: freddie
dateline: 1211320354

———————————————————————
check phrase tables for pass_thru()
———————————————————————
———————————————————————
check phrase tables for iframe
———————————————————————
phraseid: 6338
languageid: -1
varname: fakeobjects.iframe
username: vBulletin Solutions
dateline: 1299264962
phraseid: 6417
languageid: -1
varname: iframe.noUrl
username: vBulletin Solutions
dateline: 1299264962
phraseid: 6419
languageid: -1
varname: iframe.title
username: vBulletin Solutions
dateline: 1299264962
phraseid: 6420
languageid: -1
varname: iframe.toolbar
username: vBulletin Solutions
dateline: 1299264962

Вместо того, чтобы просматривать общий список по шаблону, можно использовать ключи поиска. Ниже приведен пример ручного поиска по ключевому слову %exec(% Кроме того, можно искать коды оставленные хакерами для перенаправления на другой сайт используя %

Вот пример вывода короткий qkeyword

./vbplugincheck.sh qkeyword vb422a1

Enter keyword to search for i.e. %refresh or %base64% : %exec(%

———————————————————————
check templates for %exec(% code
———————————————————————
———————————————————————
check templatehistory for %exec(% code
———————————————————————
———————————————————————
check announcement tables for %exec(% code
———————————————————————
———————————————————————
check phrase table for %exec(% code
———————————————————————
phraseid: 8793
languageid: -1
varname: php_error_exec_disabled
username: vBulletin Solutions
dateline: 1212055432
phraseid: 8794
languageid: -1
varname: php_error_unspecified_exec
username: vBulletin Solutions
dateline: 1212055457
———————————————————————
check plugins for %exec(% code

Или подробный вариант fkeyword

./vbplugincheck.sh fkeyword vb422a1

Enter keyword to search for i.e. %refresh or %base64% : %exec(%

———————————————————————
check templates for %exec(% code
———————————————————————
———————————————————————
check templatehistory for %exec(% code
———————————————————————
———————————————————————
check announcement tables for %exec(% code
———————————————————————
———————————————————————
check phrase table for %exec(% code
———————————————————————
*************************** 1. row ***************************
phraseid: 8793
languageid: -1
varname: php_error_exec_disabled
fieldname: error
text: PHP Error: The function exec() has been disabled.
product: vbulletin
username: vBulletin Solutions
dateline: 1212055432
version: 3.7.2
*************************** 2. row ***************************
phraseid: 8794
languageid: -1
varname: php_error_unspecified_exec
fieldname: error
text: PHP Error: Unspecified error in exec().
product: vbulletin
username: vBulletin Solutions
dateline: 1212055457
version: 3.7.2
———————————————————————
check plugins for %exec(% code
———————————————————————

Вот пример из взломаного форума с вредоносным плагином который стоял на init_startup, запустили qkeyword (короткий вариант) и сделали поиск по %base64%. Проверили. да действительно Админка- Плагины и продукты-менеджер модулей и увидели нужный кусок кода base64. Можно использовать подробный поиск используя (./vbplugincheck.sh fkeyword) чтобы получить подробный отчет.

./vbplugincheck.sh qkeyword

Enter keyword to search for i.e. %refresh or %base64% : %base64%

———————————————————————
check templates for %base64% code
———————————————————————
———————————————————————
check templatehistory for %base64% code
———————————————————————
———————————————————————
check announcement tables for %base64% code
———————————————————————
———————————————————————
check phrase table for %base64% code
———————————————————————
———————————————————————
check plugins for %base64% code
———————————————————————
title: vBulletin
hookname: init_startup
product: vbulletin

Если вы сохраняете выводы в отдельный текстовый файл, то вы можете запустить проверку инфицированной базы данных, а потом чистой базы данных MySql а затем с помощью какой-нибудь программы сравнить 2 файла. Вот к примеру скрин из упомянутой выше программы BeyondCompare, где вы наглядно видите различия.

plugins_beyondcompare

Можно использовать опцию tempcheck и temphistcheck для вывода записей из шаблонов форума и историй шаблонов. Так же можно узнать время модификации шаблона, узнать templateid, используемый стиль. название, пользователя и так далее. Обратите внимание, что некоторые шаблоны автовостановленны и система не покажет имени пользователя например изменения названия шаблона bbcode_video. В приведенном ниже примере покажется только пользователь artscripts который сделал изменения

./vbplugincheck.sh tempcheck vb422a1

———————————————————————
Show template table data ordered by dateline
———————————————————————

templateid: 2 styleid: -20 title: bbcode_video username: [Sat Aug 31 08:51:57 2013] templateid: 1 styleid: -10 title: bbcode_video username: [Sat Aug 31 08:51:57 2013] templateid: 477 styleid: -1 title: bbcode_video username: [Sat Aug 31 08:53:21 2013] templateid: 1082 styleid: -2 title: bbcode_video username: [Sat Aug 31 08:53:21 2013] templateid: 1314 styleid: 1 title: header username: artscripts [Fri Sep 20 20:12:32 2013]

В приведенном ниже примере пользователь artscripts сохранился в истории шаблонов когда делал изменения.

./vbplugincheck.sh temphistcheck vb422a1

———————————————————————
Show templatehistory table data ordered by dateline
———————————————————————

templatehistoryid: 1 styleid: 1 title: header username: artscripts [Fri Sep 20 20:12:32 2013] comment: editted header

Опять же, все эти выводы, можно сохранить в текстовый файл.

./vbplugincheck.sh tempcheck vb422 > templateoutput.txt

./vbplugincheck.sh temphistcheck vb422 > templatehistoryoutput.txt

Проверка групп пользователей на вредоносный код в имени через HTML

./vbplugincheck.sh usertitle vb422

+————-+———-+—————–+
| usertitleid | minposts | title |
+————-+———-+—————–+
| 1 | 0 | Junior Member |
| 2 | 30 | Member |
| 3 | 100 | Senior Member ! |
+————-+———-+—————–+

Проверьте также таблицы своих объявлений. нет ли там вредоносного кода оставленного хакерами. Как правило на выводе вы должны получить свой код своего банера9 в рекламе например), поэтому проверяйте.

./vbplugincheck.sh ads vb422a1

*************************** 1. row ***************************
adid: 1
title: test ad
adlocation: global_below_navbar
displayorder: 10
active: 1
snippet: html code

Проверьте таблицы Рангов пользователя на наличие вредоносных кодов.

./vbplugincheck.sh ranks vb422a1

*************************** 1. row ***************************
rankid: 1
minposts: 10
ranklevel: 1
rankimg: Noob
usergroupid: 0
type: 1
stack: 0
display: 0

Используйте опцию setting для сортировки нежелательного кода embedded js и так далее используя %script%. Эта опция запрашивает при поиске ключевое слово. В примере ищем тэг < script > встроеннвй в название форумов

./vbplugincheck.sh setting vb422a1

Enter keyword to search for i.e. %script% or %refresh : %script%

———————————————————————
check setting tables value for %script%
———————————————————————
varname: bbtitle
grouptitle: address
value: vB 4.2.2 PHP 5.4 Test Forums

About artscripts

Check Also

восстановление vbulletin часть 6

Взломали форум — начинаем восстанавливать (Часть 6)

Настала время заменить все файлы Vbulletin форума новой копией. Для этого скачаем новый zip архив …

2 комментария

  1. Pingback: Взломали форум — начинаем восстанавливать (Введение) - Изучаем Vbulletin

  2. Pingback: Взломали форум — начинаем восстанавливать (Часть 4) - Изучаем Vbulletin

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.