Почувствуй себя багоискателем Докучаев Дмитрий aka Forb Xakep, номер #065, стр. 065-060-5 И это все? Нет, не все. Я не сказал настоящей причины, по которой я выбрал wtboard. Я юзал этот форум приличное время, поэтому знаю его устройство как свои 5 пальцев. Кроме указанной проблемы, у этой системы имеются значительные изъяны в дефолтной установке, поэтому мне захотелось копать дальше. Хочу рассказать тебе об этих изъянах, чтобы ты не оказался случайной жертвой хакера. По дефолту имеется такой хороший файлик wtbadmin.txt. Где он находится, ты, надеюсь, догадался, а о содержимом я расскажу. Туда вписываются юзеры, которым разрешено администрировать борду. Формат файла следующий: user;;pass;;access. Так вот, если ты не поменяешь этот файл, любой желающий сможет тебя задефейсить, войдя под логином admin с аналогичным паролем. Даже если ты изменил значение файла, есть шанс, что тебя поимеют. В моем примере я выложил data в область, доступную для httpd. Так делать нельзя, поскольку любой желающий может запросить cgi-bin\data\wtbadmin.txt и подглядеть системные аккаунты. Подглядеть - это в лучшем случае. В худшем, хакер немного порулит твоей бордой, подключит через SSI бэкдор и будет рулить системой. Чтобы всего этого не произошло, очень рекомендуется увести системные конфиги за пределы WWW, а также переименовать структурные файлы как физически, так и в wtboard.ini. И напоследок закачай во все системные каталоги .htaccess с директивой Deny from all - это не позволит злоумышленнику лазить где не надо. Только в этом случае ты защитишься от указанных недочетов. А от этой дырочки официального спасения пока не существует, зато существует неофициальное - я переписал кусок кода, заносящий в хеш переменные из потока (функция initiate()), пропатченную версию форума ты найдешь на нашем диске. Искренне надеюсь на то, что эта статья будет тебе хорошим уроком - программистам нельзя доверять, особенно если они поддерживают OpenSource-проект и родом из России :). А как же *nix? Если борда крутится под Unix, то финт с заменой $wtbnames нужно модернизировать. Тебе не удастся создать файл в корне диска под правами Апача. Поэтому придется увести значение переменной в ../../../../../../../tmp (чем больше ../, тем надежнее). В этом случае wtbnames.txt.pag может быть создан (хотя опять же зависит от секурности сервера). В поисках жертвы Чтобы найти новую жертву, просто набери wtboard в строке любого поисковика. Для твоего изучения будут представлены порядка 20 страниц различных форумов. Правда, не на всех бордах работает интерполяция - причины этого пока не известны. Можно усложнить поиск, подставив wtboard/index.shtml, или еще лучше cgi-bin/data. Или data/wtbadmin.txt :). На все эти запросы ты найдешь порядочное число ссылок. Кстати, страница для администрирования форума находится в /wtboard/wtbadmin.htm. |