Ключевые слова:security, perl, (найти похожие документы)
_ RU.UNIX (2:5077/15.22) _____________________________________________ RU.UNIX _
From : Victor Wagner 2:5020/219.27 03 Apr 99 00:50:36
Subj : Add user from WWW
________________________________________________________________________________
tsa@saminfo.ru wrote:
tsr> From: Alexey Tsinaev <tsa@saminfo.ru>
tsr> Здравствуйте, ВСЕ!
tsr> Я хочу сделать веб-страницу, добовляющую пользователя в UNIX,
tsr> но команда adduser в скрипте perl не хочет выполняться.
tsr> Пробовал ставить на скрипт бит setuid on execution, но
tsr> появляется ошибка:
tsr> Insecure $ENV{PATH} while running setuid at ./www_adduser.html line 71.
В сетуидных скриптах перл ведет себя параноидально. Он не хочет
использвать в аргументах команды system или Open "|.."
что либо пришедшее из внешнего мира, в том числе и переменные
environment.
Конкретно проблема с PATH лечится посредством явного присвоения
%ENV{'PATH'}='/bin:/sbin:/usr/bin:/usr/sbin';
Проблема с
system "adduser $username"
лечится одним из двух способов
# $username insecure
if ($username =~ /(\w+)/) {
# $1 secure
$username = $1;
} else {
&complain
}
Заметим что написанный выше регексп действительно защищает от попытки
ввести имя пользователя вида "foo;rm -rf /"
либо заменой system
на
if (fork()) {
exec adduser, $username;
}
open F, "|adduser $username"
заменяется на
open F,"|-" or exec adduser,$username
tsr> Как правильно сделать? (так чтоб работало)
--
--------------------------------------------------------
Victor Wagner @ home = vitus@wagner.rinet.ru
I don't answer questions by private E-Mail from this address.
--- ifmail v.2.14.os-p2 * Origin: Wagner's home (2:5020/219.27@fidonet)