Почувствуй себя багоискателем Докучаев Дмитрий aka Forb Xakep, номер #065, стр. 065-060-1 (forb@real.xakep.ru) Фатальные ошибки в Perl-проектах В любом проекте существуют ошибки. И чем крупнее система, тем этих ошибок больше и их проще найти. Впрочем, "проще" не значит "просто" - в ряде случаев поиск и использование уязвимостей даже для профессионалов превращается в серьезную головоломку. Но в случае распространения системы открытыми кодами, поиск багов превращается в увлекательное приключение! В этом мы и убедимся на примере одной популярной Perl-системы. Где будем искать? Багоискатель - человек, ищущий ошибки в каком-либо проекте с целью получения морального либо материального удовлетворения (некоторые получают еще и сексуальное, но это не ко мне). Прежде всего надо выбрать себе мишень - проект, в котором ты будешь искать баги. Следует останавливаться лишь на раскрученных скриптах, потому как искать ошибку в малораспространенном vote.pl не имеет смысла - если ты что-то найдешь, применить полученные навыки ты сможешь только на нескольких убогих сайтах, а это едва ли можно назвать достойной мотивацией. После того как ты определился с жертвой, необходимо скачать себе одну из свежих версий системы (чтобы дырка не теряла своей актуальности), установить ее на собственном компьютере и все дальнейшие опыты производить только по адресу 127.0.0.1 - ты ведь не хочешь раньше времени получить подзатыльник? Руководствуясь этими ограничениями, я выбрал проект Wtboard - известный форум от российских программистов. Если набрать в строке поисковика "wtboard", то он выдаст тебе порядка 15 тысяч ссылок, что говорит о дикой популярности форума в России. Подготавливаем операционную Следующий шаг к цели - скачивание и установка форума. На моем домашнем компьютере стоит Apache и ActivePerl, поэтому я не обременял себя инсталляцией ПО. Если ты такой же продвинутый (в плане софта), то просто скачивай с www.wtg.ru/download/wtboard.zip свежую версию форума - ее ты, конечно же, найдешь и на нашем CD. Затем создай следующие каталоги: htdocs\wtb - каталог для хранения html-файлов, cgi-bin\wtb - здесь размещаются скрипты форума и cgi-bin\wtb\data - каталог с конфигами и базой данных. После этого выполни косметические изменения конфига и двух скриптов. Открой cgi-bin\data\wtboard.txt и задай в нем 4 параметра: dirkonf=/wtb # Относительный путь к web-каталогу, dirrealkonf=f:/soft/web/apache/htdocs/wtb # Абсолютный путь к web-каталогу, dircgi=/cgi-bin/wtb # Относительный путь к cgi-bin, realpath= # Путь к предыдущему каталогу, где находится папка форума (в моем случае - это корень). В этом же конфиге можешь изменить e-mail админа и другие параметры форума. Но учитывая, что борда на твоем компе установлена лишь в качестве подопытного кролика, все эти примочки можно оставить дефолтными. Теперь открой скрипт wtbext.cgi и преобрази путь к data-каталогу (в моем случае это просто "data"). После всего зайди на http://localhost/wtb/ и удостоверься, что index на месте. Напиши тестовое сообщение и проверь корректное сохранение данных. Все! Форум установлен. Можно приступать к операции. Изучаем сорцы |