The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  выход 
"Как получить пароль из CGI-скрипта на Perl."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение

"Как получить пароль из CGI-скрипта на Perl." 
Сообщение от harlan emailНайти другие сообщения данного автораПоместить сообщение в закладки. См. нижнее поле навигации. on 25-Мрт-03, 12:53  (MSK)
Хочу сделать так, что бы пользователь через web-интерфейс смог поменять свой пароль, а перед этим указал старый для аутентификации. Однако, аутентификация не проходила. Для проверки написал скрипт примерно такого содержания:
#!/usr/bin/perl
# ...
use CGI qw/:standard/;
$USER = param("user");
print "Real UID = $<<BR>\n";
print "Real Username = ".(getpwuid($<))[0]."<BR><BR>\n";
$<=$>;
print "Effective UID = $<<BR>\n";
print "Efective Username = ".(getpwuid($<))[0]."<BR><BR>\n";
print "user = $USER<BR>/n";
print "password = '".(getpwnam($USER))[1]."'<BR>\n";
#------------------------------------------------------------

При вызове из браузера через URL "http://myserver/cgi-bin/pswd.pl?user=user" результат был следующий:
-----------------------------------------
Real UID = 12
Real Username = nobody

Effective UID = 12
Effective Username = nobody

user = user
password = 'x'
-----------------------------------------

Тогда написал стартующий скрипт на С:
-----------------------------------------
#include <unistd.h>
void mail () {
   execl("/usr/bin/perl","pswd.pl","/home/html/cgi-bin/pswd.pl",NULL);
}
-----------------------------------------
Скомпилировал в файл pswd, установил биты присваивать UID и GID при исполнении, владельцем сделал root.
Далее вызвал URL: "http://myserver/cgi-bin/pswd?user=user" результат был следующий:
-----------------------------------------
Real UID = 0
Real Username = root

Effective UID = 0
Effective Username = root

user = user
password = 'x'
-----------------------------------------

Т.е. скрипт исполняется с правами root, однако, доступа к паролям скрипт не имеет.
Когда же запускаю скрипт непосредственно из рутовой консоли, то результат следующий:
-----------------------------------------
Real UID = <BR>
Real Username = root<BR><BR>
Effective UID = 0<BR>
Effective Username = root<BR><BR>
user = user<BR>
password = 'icawasdfasdfasdfsadfsadfasdfasdf'<BR>
-----------------------------------------
т.е. пароль отдаётся нормально.

Вот, собственно, и вопрос: как получить (заменить) пароль через CGI-скрипт?
Не надо рассуждений по поводу опасности и незащищённости такого подхода.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру