Устраняем дыру не снижая функциональности админки

+3
3.74K
Кто-то давно знает, кто-то узнал недавно, а кто-то узнает только сейчас про дыру в админке.
Речь идёт о файле /wysiwyg/editor/filemanager/connectors/php/upload.php.
Ранее рекомендованное действие для устранения дыры было простое удаление файла.
Не секрет, что после этого в админке пропадала возможность закачивать файлы, например, при создании/редактировании статьи.
Предлагаю рецепт, который позволит устранить дыру и при этом оставляет возможность закачки файлов в админке.
Рецепт очень прост — нужно изменить имя файла на своё уникальное имя.
Можно, конечно, просто добавить циферку к имени, но это плохо. Нападающий сможет подобрать имя файла. Лучше всего полностью сменить имя на другое, в крайнем случае добавьте не менее 4-5 символов и не только цифр.
Итак, изменили имя этого файла на другое (напоминаю меняем имя файла /wysiwyg/editor/filemanager/connectors/php/upload.php)

После этого заменяем в файле wysiwyg/fckconfig.js все вхождения ’/upload.’ на ’/new_name.’
здесь new_name твоё новое имя для этого файла без php.

Внимание! Eщё раз говорю, без расширения php!

Например, новое имя my_best_upload_system.php 😊
Следовательно, в том самом файле нужно будет заменить все вхождения ’/upload.’ на ’/my_best_upload_system.’
У меня было три строки, у вас, думаю, должно быть столько же 😊.
Да, чуть не забыл, браузер нужно будет закрыть и запустить по-новой, а то не заработает.

Кстати, существует ещё один способ, правда менее удобный — защита самого файла /wysiwyg/editor/filemanager/connectors/php/upload.php. Для этого вставим в начало файла вот такие строки:
  1. $adm_name = "admin";
  2. $adm_pass = "21232f297a57a5a743894a0e4a801fc3"; //Пароль в md5. Здесь пароль: admin
  3. function adm_auth(){
  4. Header ('WWW-Authenticate: Basic realm="Your_Zone"');
  5. Header ("HTTP/1.0 401 Unauthorized");
  6. echo '<html><head><title>access denied...</title></head>
  7. <body><center>Введите логин и пароль</h1></center></body></html>';
  8. }
  9. if (empty($_SERVER["PHP_AUTH_USER"])){
  10. adm_auth();
  11. }
  12.  
  13. if ($_SERVER['PHP_AUTH_USER'] != $adm_name OR md5($_SERVER['PHP_AUTH_PW']) != $adm_pass){
  14. adm_auth();
  15. }
  16.  
теперь при запуске этого файла он будет запрашивать у вас (но не только у вас 😊) имя и пароль.
По секрету скажу, что нужно будет поменять значение, как минимум у одной переменной. Можете выбрать для этого $adm_name, ну или $adm_pass.
Если же Вы озаботились ранее защитой админки и для этого использовали этот же метод, то тогда защита этого файла для Вас станет прозрачной — он не станет у Вас спрашивать имя и пароль.
И волки целы и овцы сыты.
0
14 лет назад #
т.е. если пользователи добавляют файлы (видео и тд) то подходит 1 способ?
0
lezginka.ru lezginka.ru 14 лет назад #
Виктор, а почему бы это в сборку не добавить.
0
Виктор Виктор 14 лет назад #
Если добавление происходит с помощью стандартного сейчас для instantcms редактора, то подойдут оба способа.
Разница в том, что если в админку вход стандартный без дополнительной авторизации, то придётся первый раз за сеанс работы в админке с добавлением файлов для второго варианта ввести логин и пароль, а для первого варианта ничего вводить не надо.
Но тиражировать, то есть вводить в сборку в таком виде всё равно нельзя, так как после установки системы требуется ручная корректировка. Второй вариант более подходит для тиражирования, но заставлять вводить админа логин и пароль ещё раз, по-моему это должно быть осознанное решение админа. Типа, да я готов проходить ещё раз авторизацию лишь бы не терять функционал.
Щас пришла в голову ещё одна мысль - пойду проверю.
0
Светлана Кондратьева ✝️ Светлана Кондратьева ✝️ 14 лет назад #
ммм...Виктор, как тебе такая идея:
1. при исталяции Инстанта где-нибудь в php генерируем случайное слово и присваиваем его переменной $slovo. Как хранить - в конфиге или в БД - неважно, сам решишь))
2. переименовываем файл командой
rename('/wysiwyg/editor/filemanager/connectors/php/upload.php', '/wysiwyg/editor/filemanager/connectors/php/'.$slovo.'.php');
3. После начала работы передаем значение этой переменной в js через форму formName <intut type='hidden' name=slovo value='.htmlspecialchars($slovo).'> ну и так далее
4. принимаем это слово в js val slovo=document.formName.slovo.value; ну и так далее
5. ну, а далее, как ты и предлагаешь, менять в джаваскрипте все вхождения /upload на slovo

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

еще раз говорю, это только идея, поэтому сильно меня не дразни, а то осатанею. тебе же не хочется, чтобя я стервой сделалась)))
0
neart neart 14 лет назад #
feba7:
...это только идея, поэтому сильно меня не дразни...
А почему кто-то должен дразнить? ИМХО, была высказана вполне здравая мысль.
0
Светлана Кондратьева ✝️ Светлана Кондратьева ✝️ 14 лет назад #
А почему кто-то должен дразнить?
я тоже не знаю, почему, но, к сожалению, есть люди, которые считают, что очень сильно поднимутся, если вывернут свою клоаку наизнанку и обгадят всех окружающих.

Борттехник дядя Саша говорил: "Течь масла свидетельствует о его наличии". Так же и здесь, обгаживание окружающих свидетельствует о наличии дерьма вместо психики.
0
neart neart 14 лет назад #
Дык попросите Админа включить в коллекцию смайликов жирный фак и тыкайте его всем огаживальщикам вместо просьб "не дразнить":) Разве такие просьбы на дермоедов подействуют? Забейте на всех недосказанных и будет Вам счастье:) А мы тут уж с тусовкой побеспокоимся, чтобы таких умниц, как Вы не обежали, тем более на кануне праздника:) ну, это типа сновымгодом:)
0
14 лет назад #
Уже писал по теме, но раз здесь тоже об этом, то позволю себе повториться.
Вернее всего поменять редактор и не выдумывать велосипед.
Ссылки которые могут помочь:
http://instantcms.ru/blogs/49/133/post557.html
http://instantcms.ru/blogs/0/myINSTANTCMS-moduli-haki-komponenty/zamena-wysiwyg---yeto-prosto.html
0
14 лет назад #
тоже согласен зачем крыть крушу если сам разработчик больше не поддерживает данный редактор.
0
14 лет назад #
Хоть мне и не нравятся предложенные решения, добавлю:
Если вы решили им воспользовались, то проделайте тоже самое с файлом connector.php также представляющим опасность в старой версии.

Еще от автора

Расширенная статистика сайта
В своё время maxisoft выложил модуль "Статистика сайта" посмотрев его некоторое время понял, что мне не хватает информации предоставляемой э
Плагин «История рейтинга»
Несколько раз встречалось на сайте пожелание увидеть информацию о том, кто и за что "плюсует"/"минусует" рейтинг по аналогии с &qu
Рекорд посетителей
Представляю для желающих модуль для instantcms «Рекорд посетителей» для сайта.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.