ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

24.01.2018, 21:50
|
|
Guest
Сообщений: n/a
Провел на форуме: 1491
Репутация:
0
|
|
Всем привет) я можно сказать мало-опытный по взломам) любитель.
Попался мне как то сайт с объявлениями и вот получилось залить шелл через загрузку картинок. С помощью 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
}
}
}
|
|
|
|

25.01.2018, 02:07
|
|
Guest
Сообщений: n/a
Провел на форуме: 5088
Репутация:
0
|
|
Позже отпишу,помогу,если что в лс
|
|
|
|

25.01.2018, 09:03
|
|
Guest
Сообщений: n/a
Провел на форуме: 97867
Репутация:
52
|
|
Код говно, но дыр в нём нет. Если ты конечно каким-то образом не протолкнёшь в $file_types_array расширение php.
Ещё тут есть странность: foreach ($_FILES["file"]["error"] as $key => $value) - таких массивов при загрузке файлов пхп не создаёт.
Похоже движок как-то изменяет массив $_FILES. Но всёравно это не даёт тебе шансов на взлом.
|
|
|
|

25.01.2018, 13:16
|
|
Guest
Сообщений: n/a
Провел на форуме: 1491
Репутация:
0
|
|
Да на счет я так и подозревал что мало шансов... Хотя в название файла можно вставить любой символ, почти любой.
Я уже и старый загрузчик фото где мне удалось подмену сделать смотрю, он он там по закрывал почти все и сейчас если файл не картинка просто не грузит его. Раньше еще получалось загрузить когда он закрыл только формат .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'; // Выберите картинку
|
|
|
|

25.01.2018, 13:31
|
|
Guest
Сообщений: n/a
Провел на форуме: 169212
Репутация:
441
|
|
Код выше модифицированный или старая версия?
imager.php возможно читалка, сорец есть?
|
|
|
|

25.01.2018, 17:34
|
|
Guest
Сообщений: n/a
Провел на форуме: 1491
Репутация:
0
|
|
Сообщение от crlf
crlf said:
↑
Код выше модифицированный или старая версия?
imager.php
возможно читалка, сорец есть?
Код выше это предпоследняя версия, он походу после этого что то изменил в нем. К сожалению исходника imager.php нет. Этот скрипт показывает в маленьком размере изображение после загрузки.
|
|
|
|

25.01.2018, 17:37
|
|
Guest
Сообщений: n/a
Провел на форуме: 1491
Репутация:
0
|
|
Есть еще пароли от админки. Но воспользоваться не могу... Там при в ходе стоит проверка по ip адресу и в админку можно попасть только с определенного ip. Я так понимаю чуть ли не с домашнего ПК админа. Может кто знает как подменить именно на нужный IP?
|
|
|
|

25.01.2018, 17:49
|
|
Guest
Сообщений: n/a
Провел на форуме: 300820
Репутация:
90
|
|
если глаза мне не врут
Код:
Code:
if (preg_match ("/^[А-Яа-яЁё\w\s\.*+-]+$/i", $_FILES['file']['name']))
^
пропустит любое имя файла, без спецсимволов
Код:
Code:
$blacklistExtentions = array(".php", ".php3", ".php4", ".sh");
foreach ($blacklistExtentions as $item) {
if(preg_match("/$item\$/i", $namefile)) {
echo '08'; //неверное расширение файла
exit();
^ валидация по черному списку
можно попробовать загрузить phml
Код:
Code:
if ($_FILES['file']['type'] == 'image/pjpeg' ||
$_FILES['file']['type'] == 'image/gif' ||
$_FILES['file']['type'] == 'image/jpeg' ||
$_FILES['file']['type'] == 'image/png')
{
^ нужно грузить валидную картинку
Код:
Code:
img_resize ($filename, $filename, 420, 420);
^ попробовать обойти этим https://rdot.org/forum/showthread.php?t=2780
Код:
Code:
$name = rand (1000, 10000) . '_bla_' . date ("Y-m-d H:i:s");
^ если имя файла не рандомится(говоришь код меняли), ресайз можно попробовать обойти загрузкой нескольких больших файлов, может поймаешь момент когда он ещё не начал ресайз
|
|
|
|

25.01.2018, 18:28
|
|
Guest
Сообщений: n/a
Провел на форуме: 169212
Репутация:
441
|
|
Сообщение от ArtS12
ArtS12 said:
↑
К сожалению исходника imager.php нет.
Тогда так потыкай, возможно прочитаешь патченную версию загрузчика.
Сообщение от ArtS12
ArtS12 said:
↑
Там при в ходе стоит проверка по ip адресу и в админку можно попасть только с определенного ip.
Каким образом определил?
Сообщение от t0ma5
t0ma5 said:
↑
можно попробовать загрузить phml
+ ещё pht можно попробовать
|
|
|
|

25.01.2018, 19:06
|
|
Guest
Сообщений: n/a
Провел на форуме: 1491
Репутация:
0
|
|
Сообщение от t0ma5
t0ma5 said:
↑
если глаза мне не врут
Код:
Code:
if (preg_match ("/^[А-Яа-яЁё\w\s\.*+-]+$/i", $_FILES['file']['name']))
^
пропустит любое имя файла, без спецсимволов
Код:
Code:
$blacklistExtentions = array(".php", ".php3", ".php4", ".sh");
foreach ($blacklistExtentions as $item) {
if(preg_match("/$item\$/i", $namefile)) {
echo '08'; //неверное расширение файла
exit();
^ валидация по черному списку
можно попробовать загрузить phml
Код:
Code:
if ($_FILES['file']['type'] == 'image/pjpeg' ||
$_FILES['file']['type'] == 'image/gif' ||
$_FILES['file']['type'] == 'image/jpeg' ||
$_FILES['file']['type'] == 'image/png')
{
^ нужно грузить валидную картинку
Код:
Code:
img_resize ($filename, $filename, 420, 420);
^ попробовать обойти этим
https://rdot.org/forum/showthread.php?t=2780
Код:
Code:
$name = rand (1000, 10000) . '_bla_' . date ("Y-m-d H:i:s");
^ если имя файла не рандомится(говоришь код меняли), ресайз можно попробовать обойти загрузкой нескольких больших файлов, может поймаешь момент когда он ещё не начал ресайз
Сейчас любой файл гружу не важно какой формат пусто ничего не пишет. Раньше хоть ошибка была, а сейчас ничего, только можно изображения грузить.
Имя картинки рандомиться (bla потом дата и время, а потом уже формат файла) и загружаеться в папку temp_files. Потом после подачи обьявления этот файл копируеться в папку pictures и опять перемейновуеться c номером id.
На счет расайза не пробовал
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|