![]() |
Всем привет) я можно сказать мало-опытный по взломам) любитель.
Попался мне как то сайт с объявлениями и вот получилось залить шелл через загрузку картинок. С помощью Tamper data подменил формат файла. Пользовался я этой дыркой много месяцев, оставался не замеченным. Даже создал на всякий случай мини шеллы в разных места и запрятал от глаз админа. Но вот спустя почти 7 месяцев админ походу засек меня и удалил все. Плюс закрыл дыру по заливке картинок. Я в свое время успел закачать много файлов php себе на комп. И вот в поисках новых багов я нашел еще один загрузчик картинок который есть на сайте. Собственно в чем вопрос: Кто что посоветует по обходу фильтрации в этом скрипте. Я особо в коде не силен, так по мелочи. Сайт полностью самописный! Тут подмена не проходит естественно, при заливке к имени файла добавляется Id. И кроме .jpg ничего не хочет... Может кто подскажет? Приведу его код: $value) { if ($_FILES["file"]["name"][$key] != "") { echo $_FILES["file"]["name"][$key]; $filename = htmlspecialchars ($_FILES['file']['name'][$key], ENT_QUOTES); if ($value == UPLOAD_ERR_OK) { $result07 = mysql_query ("select max(id_picture) from picture;"); $row07 = mysql_fetch_array ($result07); $number = $row07['max(id_picture)'] + 1; //$uploaddir = "picture/"; //echo " $filename "; //$url="$uploaddir$filename"; //------------------------------------------------------------- $origfilename = $_FILES["file"]["name"][$key]; //echo "$filename[0]_$number "; $filename = $_FILES["file"]["name"][$key]; //уcho "$filename "; //echo "$filename "; $filename = explode (".", $_FILES["file"]["name"][$key]); //echo "$filename[0] $filename[1] "; $filenameext = $filename[count ($filename) - 1]; unset ($filename[count ($filename) - 1]); $filename = implode (".", $filename); $filename = substr ($filename, 0, 15) . "." . $filenameext; //echo "END=$filename "; //изменяем название файла $filename = str_replace (".", "_id_$number.", $filename); $file_ext_allow = FALSE; for ($x = 0; $x 640 || $picturesize[1] > 480) { img_resize($url , $picturelink, 640, 480) ; } else { img_resize($url,$picturelink, $picturesize[0], $picturesize[1]) ; } */ img_resize ($picturelink, $picturelink, 100, 75); //echo("$url ;$picturelink; $picturelinksmall"); //unlink($url); //--------------------------------------------------------------- echo("File uploaded successfully. - " . $filename . " "); } else { echo('' . $origfilename . " was not successfully uploaded "); } } else { echo('' . $origfilename . " was too big, not uploaded "); } } // if else { echo('' . $origfilename . " had an invalid file extension, "); } } else { echo('' . $origfilename . " was not successfully uploaded "); } // else } } } |
Позже отпишу,помогу,если что в лс
|
Код говно, но дыр в нём нет. Если ты конечно каким-то образом не протолкнёшь в $file_types_array расширение php.
Ещё тут есть странность: foreach ($_FILES["file"]["error"] as $key => $value) - таких массивов при загрузке файлов пхп не создаёт. Похоже движок как-то изменяет массив $_FILES. Но всёравно это не даёт тебе шансов на взлом. |
Да на счет я так и подозревал что мало шансов... Хотя в название файла можно вставить любой символ, почти любой.
Я уже и старый загрузчик фото где мне удалось подмену сделать смотрю, он он там по закрывал почти все и сейчас если файл не картинка просто не грузит его. Раньше еще получалось загрузить когда он закрыл только формат .php я подменял на .phtml это прокатывало. Потом он добавил еще и его. А вот сейчас вообще не хочет грузить ничего кроме картинки и Mime type тоже проверяет хорошо. Ну и запрещенные символы. Видимо он его еще модифицировал. 0) { if ($_FILES['file']['size'] [Удалить] '; @$_SESSION['file'][] = $namefile; } else { echo '04'; // При загрузке файла произошла ошибка } } else { echo '03'; // Файл с таким именем уже существует } } else { echo '02'; // mime тип не соответствует разрешённым } } else { echo '06'; // Количество картинок превышает 6 } } else { echo '05'; // В названии файла содержаться недопустимые символы } } else { echo '07'; // Файл большого размера } } else { echo '01'; // Выберите картинку |
Код выше модифицированный или старая версия?
imager.php возможно читалка, сорец есть? |
Цитата:
|
Есть еще пароли от админки. Но воспользоваться не могу... Там при в ходе стоит проверка по ip адресу и в админку можно попасть только с определенного ip. Я так понимаю чуть ли не с домашнего ПК админа. Может кто знает как подменить именно на нужный IP?
|
если глаза мне не врут
Код:
Code:пропустит любое имя файла, без спецсимволов Код:
Code:можно попробовать загрузить phml Код:
Code:Код:
Code:Код:
Code: |
Цитата:
Цитата:
Цитата:
|
Цитата:
Имя картинки рандомиться (bla потом дата и время, а потом уже формат файла) и загружаеться в папку temp_files. Потом после подачи обьявления этот файл копируеться в папку pictures и опять перемейновуеться c номером id. На счет расайза не пробовал |
| Время: 04:04 |