PERL

Practical Extraction and Report Language —
«практический язык для извлечения данных и составления отчётов»

Уязвимость самостоятельных модулей

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

– возможности обхода систем авторизации;

– отсутствие мер контроля входа данных в служебных скриптах.

Например, пользователь вводит в поле “search” запрос, браузер, извлекая его, передает скрипту поиска, который в свою очередь находит необходимый файл документа с требуемым содержанием, затем передает его имя другому скрипту, отвечающий за его отображение.

Разработчики предполагают, что вторые скрипты будут вызываться первыми и наверняка не станут проводить процедуру по фильтрации ввода вторых скриптов. Но это не отменяет вероятности вызова злоумышленниками этих скриптов, передав им имена любых файлов, которые им захочется посмотреть. Например, "/etc/passwd".

Любые данные получаемые программами извне, в обязательном порядке должны быть проверены. Важно, чтобы запрашиваемый файл пользователем, в самом деле, можно было просматривать.

Надежным способом считается передача не имени отображаемого файла, а индекса в списке доступных для просмотра посетителей файлов. Недостатки:

– чрезмерная сложность cкрипта;

– необходимость постоянной корректировки списка доступных пользователям файлов при очередном удалении или добавлении новых данных на сервер;

Существует массу приемов позволяющих обойтись без этих проверок.

На просторах сети можно найти почтовые системы, которые работу по алгоритму “входные” скрипт проводит проверку пароля и имени пользователя, и если все совпадает, передают одно имя пользователя без требуемого пароля следующему скрипту работающий с почтовым ящиком. Злоумышленнику ничего не стоит вызвать последний скрипт и получить, таким образом, доступ к корреспонденции всех пользователей. Похожую ошибку совершают и в Internet-магазинах. Если идентификатор до безобразия прост, например: 123, то злоумышленнику не составит особого труда заказать товары от имени любого покупателя магазина.

Сюда следует отнести и ошибки в обработке динамически генерируемых форм.

Помните, никогда не передавайте свои секретные данные методом GET, т.к. информация помещается в тело URL, а вероятность, того что сервер может оказаться сервером злоумышленника все таки есть и угроза перехвата информации весьма велик.

Намного безопаснее метод POST, его суть сводится к помещению содержимого запросов в HTTP–заголовок.

Главная

Perl-скрипты

Android

Карта сайта