Почувствуй себя багоискателем

Докучаев Дмитрий 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. Затем создай следующие каталоги: htdocswtb - каталог для хранения html-файлов, cgi-binwtb - здесь размещаются скрипты форума и cgi-binwtbdata - каталог с конфигами и базой данных. После этого выполни косметические изменения конфига и двух скриптов. Открой cgi-bindatawtboard.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 на месте. Напиши тестовое сообщение и проверь корректное сохранение данных. Все! Форум установлен. Можно приступать к операции.

Изучаем сорцы

Содержание  Вперед на стр. 065-060-2
ttfb: 778.63311767578 ms