Перебирая код MFS увидел, что там до сих пор не исправлена дыра. Не так. Дырищааааааа, которая позволяет загружать shell скрипты. Если коротко, то благодаря shell можно получить полный доступ к сайту
Дыра в модулях, где есть загрузка картинок (баннер 468*60, баннер 100*10, баннер 88*31, аватар и т.д.)
Править я всё буду на примере загрузки баннера 468*60. С изначальным кодом можно ознакомиться здесь
Т.к. в MFS никто не над чем на заморачивался, то я просто устраняю проблему, без какого-либо красивого оформления
Способ решения был взять здесь
Сразу после
if (isset($_POST["url"]))
{
Мы вставляем «защитный» код
$filename=$_FILES['banfile']['name'];
$filetype=$_FILES['banfile']['type'];
$filename = strtolower($filename);
$filetype = strtolower($filetype);
//check if contain php and kill it
$pos = strpos($filename,'php');
if(!($pos === false)) {
die('error');
}
$file_ext = strrchr($filename, '.');
//check if its allowed or not
$whitelist = array(".jpg",".jpeg",".gif",".png");
if (!(in_array($file_ext, $whitelist))) {
die('not allowed extension,please upload images only');
}
$pos = strpos($filetype,'image');
if($pos === false) {
die('error 1');
}
$imageinfo = getimagesize($_FILES['banfile']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
die('error 2');
}
//check double file type (image with comment)
if(substr_count($filetype, '/')>1){
die('error 3')
}
Всё, поздравляю. Ваш сайт теперь защищён. Должно у Вас получиться вот так
Отправить комментарий
Вы должны быть зарегистрированы чтобы оставить комментарий.
Вы должны быть зарегистрированы чтобы оставить комментарий.
можно сократить код:
1. запрос на формат .php удалит
2. проверку миме типа тоже массивом перебор
и кода меньше и красивее…