HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.01.2018, 21:50
ArtS12
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

}

}

}
 
Ответить с цитированием

  #2  
Старый 25.01.2018, 02:07
spainet
Guest
Сообщений: n/a
Провел на форуме:
5088

Репутация: 0
По умолчанию

Позже отпишу,помогу,если что в лс
 
Ответить с цитированием

  #3  
Старый 25.01.2018, 09:03
pas9x
Guest
Сообщений: n/a
Провел на форуме:
97867

Репутация: 52
По умолчанию

Код говно, но дыр в нём нет. Если ты конечно каким-то образом не протолкнёшь в $file_types_array расширение php.

Ещё тут есть странность: foreach ($_FILES["file"]["error"] as $key => $value) - таких массивов при загрузке файлов пхп не создаёт.

Похоже движок как-то изменяет массив $_FILES. Но всёравно это не даёт тебе шансов на взлом.
 
Ответить с цитированием

  #4  
Старый 25.01.2018, 13:16
ArtS12
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'; // Выберите картинку
 
Ответить с цитированием

  #5  
Старый 25.01.2018, 13:31
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Код выше модифицированный или старая версия?

imager.php возможно читалка, сорец есть?
 
Ответить с цитированием

  #6  
Старый 25.01.2018, 17:34
ArtS12
Guest
Сообщений: n/a
Провел на форуме:
1491

Репутация: 0
По умолчанию

Цитата:
Сообщение от crlf  
crlf said:

Код выше модифицированный или старая версия?
imager.php
возможно читалка, сорец есть?
Код выше это предпоследняя версия, он походу после этого что то изменил в нем. К сожалению исходника imager.php нет. Этот скрипт показывает в маленьком размере изображение после загрузки.
 
Ответить с цитированием

  #7  
Старый 25.01.2018, 17:37
ArtS12
Guest
Сообщений: n/a
Провел на форуме:
1491

Репутация: 0
По умолчанию

Есть еще пароли от админки. Но воспользоваться не могу... Там при в ходе стоит проверка по ip адресу и в админку можно попасть только с определенного ip. Я так понимаю чуть ли не с домашнего ПК админа. Может кто знает как подменить именно на нужный IP?
 
Ответить с цитированием

  #8  
Старый 25.01.2018, 17:49
t0ma5
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");
^ если имя файла не рандомится(говоришь код меняли), ресайз можно попробовать обойти загрузкой нескольких больших файлов, может поймаешь момент когда он ещё не начал ресайз
 
Ответить с цитированием

  #9  
Старый 25.01.2018, 18:28
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Цитата:
Сообщение от ArtS12  
ArtS12 said:

К сожалению исходника imager.php нет.
Тогда так потыкай, возможно прочитаешь патченную версию загрузчика.

Цитата:
Сообщение от ArtS12  
ArtS12 said:

Там при в ходе стоит проверка по ip адресу и в админку можно попасть только с определенного ip.
Каким образом определил?

Цитата:
Сообщение от t0ma5  
t0ma5 said:

можно попробовать загрузить phml
+ ещё pht можно попробовать
 
Ответить с цитированием

  #10  
Старый 25.01.2018, 19:06
ArtS12
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)
 


Быстрый переход




ANTICHAT.XYZ