Последние комментарии
Для меня эта страница - это удобный способ смотреть, что нового происходит в комментариях и сразу находить заметку, не заходя в админку. Думаю, она будет полезна и тебе.
Михаил Фленов
Нет
CrackCoder
Миш ты на go писал/пишешь?
Михаил Фленов
Даже imagecreatefromgif не даёт тебе полную гарантию, что файл корректный. Я для бусти записал уже видео и в пятницу или субботу оно будет опубликовано. Ты в другом комментарии ссылаешься на статью ch4inrulz, где основной причиной для взлома был всё же LFI. О нём я также уже говорил на бусти. Защищай от LFI, не давай TXT фалам выполнение на сервере и проблем не будет.
toorr2p
А как быть в принципе, если это не картинка, а например мы даем юзерам загружать к примеру тот же .txt, а в нем будет <php ... получается выход только использование директив Apache? Т.е на уровне PHP нет инструмента определить соответствие содержимого файла его типу (расширению) ?
Михаил Фленов
Похоже вместо getimagesize нужно пробовать создавать картинку методами imagecreatefromgif или imagecreatefromjpeg. Нужно будет обновить книгу.
$gifimage = imagecreatefromgif($_FILES['file1']['tmp_name']);
if ($gifimage) {
if($_FILES['file1']['size']) {
move_uploaded_file($_FILES['file1']['tmp_name'], './filename.gif');
}
}
Михаил Фленов
Если есть защита от второго, то защита от первого не нужна. Для защиты от второго раньше использовали getimagesize. Сейчас я полез в документацию и там к сожалению написано:
Caution
This function expects filename to be a valid image file. If a non-image file is supplied, it may be incorrectly detected as an image and the function will return successfully, but the array may contain nonsensical values.
Сейчас написал тестовый пример и действительно, для некорректного файлы в PHP8 возвращаются мусорные данные, которые не работают. Неожиданно. На сколько я помню в 5-м PHP проверка работала. Сейчас поиграю с функцией.
toorr2p
Здравствуйте, вопросы по главе "5,1 Загрузка файлов на сервер"
1) Почему нет проверки $_SERVER['HTTP_REFERER']?
Ведь могут же сканером проходить по сайту, отыскивая формы с INPUT type="file" и грузить туда свои зловреды.
2) Также не понял, как защитится к примеру от загрузке шелла, под видом картинки GIF, описанной в этой статье "CTF-соревнование: взлом ch4inrulz (1.0.1)" на securitylab ru ? Я проверил, действительно все описанные проверки в главе не предотвращают от загрузки такого файла (shell.gif) с содержимым:
GIF98
<?php
echo $_SERVER["DOCUMENT_ROOT"];
?>
Код с проверками (из листинга главы)
<?php
$uplDstDir = $_SERVER['DOCUMENT_ROOT'] . '/upload';
$uplFileName = md5(microtime());
//Check file size
if(!$_FILES['file1']['size'])
die("Error fail upload file!");
//Check file max size
if($_FILES['file1']['size']>300*1024)
die("Error file size is larger 100kb!");
//If it’s a picture, check its width and height
$arrSize = getimagesize($_FILES['file1']['tmp_name']);
if(!$arrSize[0] || !$arrSize[1])
die("Error image dimensions must not be zero!");
//Check file type
preg_match("'([a-z]+)\/[x\-]*([a-z]+)'", $_FILES['file1']['type'], $ext);
if(!in_array($ext[2], array('jpg', 'jpeg', 'gif', 'png')))
die("Error file format not allowed!");
//Moving a file from a temporary directory to a permanent one
$uplFileName = "$uplDstDir/$uplFileName.$ext[2]";
if(!move_uploaded_file($_FILES['file1']['tmp_name'], $uplFileName))
die("Error file not upload!");
?>
Просьба подсказать как с этим бороться.
Михаил Фленов
Поправил опечатку, там должно было быть слово "письмо"
Андрей Ше
Михаил, привет.
Можешь поправить начало этой статьи, может опечатка или часть текста пропала.
"Недавно получил само с вопросом о том, зачем нужны интерфейсы..."
RandallDaw
Такой простой метод позволяет отсечь вымышленные координаты, которыми часто прикрываются мошенники, а также полюбоваться на заявленные места головных офисов. Этот простой метод не подвёл и с «Эсперио».
В футере сайта, а также в шапке клиентского договора указан один и тот же адрес на Сент-Винсент и Гренадинах: First Floor, First St. Vincent Bank Ltd Building, James Street, Kingstown. Здание действительно существует, и оно напрямую связано с финансовой системой. Находится в нём ровно то, что мошенники не удосужились вычистить из адреса: First St. Vincent Bank Ltd Building. То есть главный банк страны.
Несмотря на миниатюрность учреждения в карликовом государстве, офшорный банк не бедствует и уж точно не докатился до сдачи в аренду первого этажа здания всяческим проходимцам. Банкам по любым протоколам безопасности запрещается делить помещения с любыми арендаторами, поскольку это создаёт дополнительную уязвимость.
Ровно этим же адресом прикрылись лохоброкеры Pro Trend и Moon X. При этом признаков клонирования у этих ресурсов с Esperio нет, так что скорее мы имеем дело с новым популярным резиновым адресом. Выбор удачный: координаты ещё не растиражированы по сотням и тысячам сайтов, рисков, что на далёкий офшорный остров нагрянет русскоязычный клиент мало. Да ещё и поверхностная проверка через поисковик покажет, что адрес существует и там что-то про финансы. Так что для целей мошенников отлично подходит.
Чарджбэк для возврата средств на карту
Детальное руководство от экспертов
Не менее полезно проверять реальный стаж компаний. В большинстве случаев его выдаёт доменное имя. Esperio уверяет, что работает на благо трейдеров с 2011 года, однако проверка по доменному имени изобличает эту ложь. Сайт esperio.org пустили в дело только в мае 2022 года. Это зеркало, как и все прочие засветившиеся на скриншоте Центробанка РФ доменные имена лжеброкера, созданы в середине 2021 года. То есть лоховозка работает не более 1 календарного года. Впрочем, это солидный срок: большинство её коллег не преодолевают рубежа в несколько месяцев. Однако речи о солидном стаже и соответствии заявленному в легенде 2011 году не идёт.
Как чёрный брокер Esperio маскируется под нормального