Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Помощь с SQL-Inj (https://forum.antichat.xyz/showthread.php?t=468505)

Leendesst 03.02.2019 01:08

Всем привет, есть такой скрипт, записывает логи. Недавно у знакомого слили через него сайт, но как обошли фильтр, мы не поняли(Оба знаем sql как прикладной язык).

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"]$crash[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]clear[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'crash'[/COLOR][COLOR="#007700"]]);
[/
COLOR][COLOR="#0000BB"]$db[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]insert[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"INSERT INTO `crashlogs` (id,name,crash,time) VALUES (NULL,'[/COLOR][COLOR="#0000BB"]$user[/COLOR][COLOR="#DD0000"]','[/COLOR][COLOR="#0000BB"]$crash[/COLOR][COLOR="#DD0000"]','"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]time[/COLOR][COLOR="#007700"]().[/COLOR][COLOR="#DD0000"]"')"[/COLOR][COLOR="#007700"]);
function[/COLOR][COLOR="#0000BB"]clear[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]){
[/
COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"\\"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]);
return[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"](array([/COLOR][COLOR="#DD0000"]"'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'"'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'\\'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'$'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'%'[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]);
}[/COLOR][/COLOR

Функция insert в себе фильтрации не несёт

Если кто сможет подсказать, буду очень благодарен.

ps: $user ограничен по длине в 20 символов.

crlf 03.02.2019 12:06

Почему решили, что именно этот код поспсобствовал сливу? Кто и для чего читает эти логи? Не видно что есть $user и т.д. Если не брать кучу неизвестных в расчёт, то возможно как-то так:

Код:

Code:
user=vasyans\
crash=,version(),1549180652)#

Код:

Code:
INSERT INTO `crashlogs` (id,name,crash,time) VALUES  (NULL,'vasyans\',',version(),1549180652)#','1549180652')


Leendesst 03.02.2019 14:58

Цитата:

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

Почему решили, что именно этот код поспсобствовал сливу? Кто и для чего читает эти логи? Не видно что есть $user и т.д. Если не брать кучу неизвестных в расчёт, то возможно как-то так:
Код:

Code:
user=vasyans\
crash=,version(),1549180652)#

Код:

Code:
INSERT INTO `crashlogs` (id,name,crash,time) VALUES  (NULL,'vasyans\',',version(),1549180652)#','1549180652')


Злоумышленники дропнули таблицу crashlogs. Тестировал sqlmap'ом дыру - он крутит как error based, stacked query, но потом говорит, что это ложноположительное срабатывание..

По логам было всё примерно так:

00:00 - Отправленно ~4000 запросов на данный скрипт.

0:15 - Зашли уже в pma, через pma залили шелл.

0:18 -Дропнули таблицу crashlogs.

Сам сайт на dle(10.0), с pma и mysql понятно всё. Знакомый не обновляется, а база от root'а работала.

Весь скрипт:

PHP код:

PHP:
[
COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]20[/COLOR][COLOR="#007700"]) die();

if([/
COLOR][COLOR="#0000BB"]c[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$crash[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"Pixel format not accelerated"[/COLOR][COLOR="#007700"])){
echo[/COLOR][COLOR="#DD0000"]"Игра не запустилась.\r\nОшибка при поиске видеокарты!\r\nПожалуйста, переустановите драйвера видеокарты!"[/COLOR][COLOR="#007700"];
}
if([/
COLOR][COLOR="#0000BB"]c[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$crash[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"Cant load library"[/COLOR][COLOR="#007700"])){
echo[/COLOR][COLOR="#DD0000"]"Попробуйте отключить антивирус!"[/COLOR][COLOR="#007700"];
}
if([/
COLOR][COLOR="#0000BB"]c[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$crash[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"Cant find dependent libraries"[/COLOR][COLOR="#007700"])){
echo[/COLOR][COLOR="#DD0000"]"Установите компоненты VisualC++."[/COLOR][COLOR="#007700"];
}
if([/
COLOR][COLOR="#0000BB"]c[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$crash[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]"OutOfMemory"[/COLOR][COLOR="#007700"])){
echo[/COLOR][COLOR="#DD0000"]"Не хватает ОЗУ для игры!\r\nПожалуйста, выберите больше 768мб."[/COLOR][COLOR="#007700"];
}
if([/
COLOR][COLOR="#0000BB"]strlen[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$crash[/COLOR][COLOR="#007700"])>[/COLOR][COLOR="#0000BB"]100000[/COLOR][COLOR="#007700"]) die();
[/
COLOR][COLOR="#0000BB"]$db[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]insert[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"INSERT INTO `crashlogs` (id,name,crash,time) VALUES (NULL,'[/COLOR][COLOR="#0000BB"]$user[/COLOR][COLOR="#DD0000"]','[/COLOR][COLOR="#0000BB"]$crash[/COLOR][COLOR="#DD0000"]','"[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]time[/COLOR][COLOR="#007700"]().[/COLOR][COLOR="#DD0000"]"')"[/COLOR][COLOR="#007700"]);
function[/COLOR][COLOR="#0000BB"]clear[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]){
[/
COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]"\\"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'/'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]);
return[/COLOR][COLOR="#0000BB"]str_replace[/COLOR][COLOR="#007700"](array([/COLOR][COLOR="#DD0000"]"'"[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'"'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'\\'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'$'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'%'[/COLOR][COLOR="#007700"]),[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"]);
}
function[/COLOR][COLOR="#0000BB"]c[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$s2[/COLOR][COLOR="#007700"]){
if ([/COLOR][COLOR="#0000BB"]strpos[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$s1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$s2[/COLOR][COLOR="#007700"]) !==[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"]) {
return[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"];
}
return[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"];
}
[/
COLOR][COLOR="#0000BB"]?>[/COLOR][/COLOR] 


crlf 03.02.2019 16:26

Цитата:

Сообщение от Leendesst
Leendesst said:

Весь скрипт

А где $crash = clear($_POST['crash']); ?

В общем, если обе переменные проходят через clear, инъекции нет.

Leendesst 03.02.2019 19:24

Цитата:

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

А где
$crash = clear($_POST['crash']);
?
В общем, если обе переменные проходят через
clear
, инъекции нет.

Что-то пропустил. Тоже через clear идёт оно) Ладно, спасибо за помощь, будем копать логи дальше)

BabaDook 03.02.2019 19:51

логи выкладывай, разберёмся как захекали тебя

Leendesst 03.02.2019 20:12

Цитата:

Сообщение от BabaDook
BabaDook said:

логи выкладывай, разберёмся как захекали тебя

К сожалению у него не логируются ip, всё localhost, но видно отчётливо, что гоняли сайт acunetix'ом..

Было дело ещё в ноябре, но он там что-то сам пытался найти, но не вышло.

PS: База у него от рута работала ещё, был pma, шелл точно через mysql влили.

Логи за тот день: https://yadi.sk/d/KKBu4uj3y0fl6A

Сам сайт на dle, 10 версия. Форум bullet energy, модули чистые, всё смотрели, всё экранируется..

BabaDook 03.02.2019 20:16

Один из самый *****тых топиков форума

/forums/110/

Leendesst 03.02.2019 20:27

Цитата:

Сообщение от BabaDook
BabaDook said:

Один из самый *****тых топиков форума
/forums/110/

А он разве не помер?) 2015 год - самая свежая тема)

BabaDook 03.02.2019 21:19

У меня блокнот зависает от такого лога. сарян

Leendesst 03.02.2019 22:18

Цитата:

Сообщение от BabaDook
BabaDook said:

У меня блокнот зависает от такого лога. сарян

notepad?)

BabaDook 03.02.2019 22:26

Цитата:

Сообщение от Leendesst
Leendesst said:

notepad?)

Точно

crlf 03.02.2019 23:17

Логи очень сильно засраны акунетиксом, сходу сказать сложно. По хорошему, нужно проводить аудит проекта. Если сервис профитный, наймите специалиста (пр. @winstrool), т.к. незванный гость мог оставить подарочков себе на будущее

Цитата:

Сообщение от Leendesst
Leendesst said:

модули чистые, всё смотрели, всё экранируется..

Я бы небыл так уверен, беглый осмотр логов показал наличие Directory Traversal в некоторых скриптах:

Код:

Code:
/viewskin.php?skin=../../../../../../../../../../../etc/hosts // true
/viewskin.php?skin=../../../../../../../../../../../etc/hostsx // false
/viewcloak.php?skin=../../../../../../../../../../../etc/hosts // true
/viewcloak.php?skin=../../../../../../../../../../../etc/hostsx // false

Так же phpmyadmin лежит не по старндартному пути, нафазить такое сложно, поэтому не факт что именно скуля послужила точкой проникновения.

Leendesst 04.02.2019 01:48

Цитата:

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

Логи очень сильно засраны акунетиксом, сходу сказать сложно. По хорошему, нужно проводить аудит проекта. Если сервис профитный, наймите специалиста (пр.
@winstrool
), т.к. незванный гость мог оставить подарочков себе на будущее
Я бы небыл так уверен, беглый осмотр логов показал наличие Directory Traversal в некоторых скриптах:
Код:

Code:
/viewskin.php?skin=../../../../../../../../../../../etc/hosts // true
/viewskin.php?skin=../../../../../../../../../../../etc/hostsx // false
/viewcloak.php?skin=../../../../../../../../../../../etc/hosts // true
/viewcloak.php?skin=../../../../../../../../../../../etc/hostsx // false

Так же phpmyadmin лежит не по старндартному пути, нафазить такое сложно, поэтому не факт что именно скуля послужила точкой проникновения.

Да. Вот меня тоже удивило.. В pma зашли и всё... Вот как знали прям)

По поводу аудита, предложил ему, он возможно возьмёт)

Там всё старое как дерьмо мамонта, pma - старый, mysql - старый.. Тем более база у него от рута работает

BabaDook 04.02.2019 02:20

Цитата:

Сообщение от Leendesst
Leendesst said:

Да. Вот меня тоже удивило.. В pma зашли и всё... Вот как знали прям)
По поводу аудита, предложил ему, он возможно возьмёт)
Там всё старое как дерьмо мамонта, pma - старый, mysql - старый.. Тем более база у него от рута работает

Старое не значит плохое.

Leendesst 05.02.2019 01:30

Цитата:

Сообщение от BabaDook
BabaDook said:

Старое не значит плохое.

Про MySQL это не скажешь, в 16 году там нашли большую бреш))


Время: 21:54