Читал сегодня размышления
"Старой перечницы" по поводу формирования PHP-форума из кусков файлов, вставляемых далее при помощи "require". И только я отписал в форуме, что так делать не годится, как мое замечание лишило форум работоспособности.
Благодаря тому, что файл формирующий сообщения форума, как оказалось в данном случае, не является исполняемым я смог его выкачать и посмотреть в чем дело:
<?php
$dataName[1] = "BOLK";
$dataMail[1] = "se@e-kazan.ru";
$dataMessage[1] = "...осторожно отфильтровывать символы ", <? и так далее...";
$dataDate[1] = "6.10.2001 10:15";
$dataAnswer[1] = "######";
$index = 1;
|
Роль слона в посудной лавке сыграла кавычка, которую я поставил совершенно случайно, а Павел как-то умудрился отключить ее фильтрацию. Вряд ли он трогал настройки в php.ini, скорее всего использовал
конкатенацию через точку, в этом случае фильтация кавычек и других потенциально опасных символов не происходит и они попадают в строку "как есть".
Все это, вкупе с использованием require, привело к очень опасной ситуации - возможности взлома сайта с проведением любых манипуляций с его файлами. Обнаружив это, я воспользовался дырой, убрал свое сообщение, которое привело к ошибке и послал Павлу письмо с пожеланием немедленно отключить форум.
Надо было на этом остановиться. Но я подумал, что за это время кто-то может обнаружить уязвимость и воспользоваться этим. Мне эта мысль не понравилась и я решил, что человеку нужно помочь.
Воспользовавшись дырой и довольно успешно миновав защиту от различных спецсимволов при помощи вставок \xHH, я скопировал себе скрипт форума, исправил его и залил назад, но, в спешке, пропустил одну-единственную букву и привел форум в негодность во второй раз - теперь все комментарии заменяются на единицы. Сегодня, похоже, не мой день. :(
Переборщил с помощью. В чем публично перед Павлом извиняюсь. :( Правда и дыру закрыл...