LINUX.ORG.RU

Nginx не срабатывает правило от SQL инъекций.

 


0

2

Здравствуйте.

Добавил такой в конфиг nginx:

## Block SQL injections

set $block_sql_injections 0;

if ($query_string ~ "union.*select.*\(") {
	set $block_sql_injections 1;
}

if ($query_string ~ "union.*all.*select.*") {
	set $block_sql_injections 1;
}

if ($query_string ~ "concat.*\(") {
	set $block_sql_injections 1;
}

if ($block_sql_injections = 1) {
	return 403;
}

В логах сайта вижу такое:

95.135.128.21 - - [24/Sep/2018:12:13:59 +0300] "GET /def-s-vysokoj-gorlovinoj?page=41111111111111%27%20UNION%20SELECT%20CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45)%20--%20/*%20order%20by%20%27as%20/* HTTP/1.1" 403 173 "-" "Mozilla/5.0 (Windows NT 6.0; rv:34.0) Gecko/20100101 Firefox/34.0"
95.135.128.21 - - [24/Sep/2018:12:13:57 +0300] "GET /def-tunika-v-goroshek?page=52121121121212.1 HTTP/1.0" 200 150862 "-" "Mozilla/5.0 (Windows NT 6.0; rv:34.0) Gecko/20100101 Firefox/34.0"
95.135.128.21 - - [24/Sep/2018:12:13:59 +0300] "GET /def-s-bantom?page=41111111111111%22%20UNION%20SELECT%20CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45)%20--%20/*%20order%20by%20%22as%20/* HTTP/1.1" 403 173 "-" "Mozilla/5.0 (Windows NT 6.0; rv:34.0) Gecko/20100101 Firefox/34.0"
95.135.128.21 - - [24/Sep/2018:12:13:57 +0300] "GET /bea-rubashka-s-detalyami-iz-kogi?page=4%20%26%26%20SLEEP%283%29%20GrOup%20BY%206%20 HTTP/1.0" 200 152011 "-" "Mozilla/5.0 (Windows NT 6.0; rv:34.0) Gecko/20100101 Firefox/34.0"
95.135.128.21 - - [24/Sep/2018:12:13:59 +0300] "GET /def-s-vysokoj-gorlovinoj?page=41111111111111%27%20UNION%20SELECT%20CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45)%20--%20/*%20order%20by%20%27as%20/* HTTP/1.1" 403 173 "-" "Mozilla/5.0 (Windows NT 6.0; rv:34.0) Gecko/20100101 Firefox/34.0"
95.135.128.21 - - [24/Sep/2018:12:13:59 +0300] "GET /def-s-bantom?page=41111111111111%22%20UNION%20SELECT%20CHAR(45,120,49,45,81,45),CHAR(45,120,50,45,81,45),CHAR(45,120,51,45,81,45),CHAR(45,120,52,45,81,45),CHAR(45,120,53,45,81,45),CHAR(45,120,54,45,81,45),CHAR(45,120,55,45,81,45),CHAR(45,120,56,45,81,45),CHAR(45,120,57,45,81,45)%20--%20/*%20order%20by%20%22as%20/* HTTP/1.1" 403 173 "-" "Mozilla/5.0 (Windows NT 6.0; rv:34.0) Gecko/20100101 Firefox/34.0"

Но правило не срабатывает!

Что не так?


Вроде как разобрался:

Добавил в конфиг:

if ($query_string ~* "sleep.*group.*") {
	set $block_sql_injections 1;
}

Правильно или нет?

INDIGO
() автор топика

«prepared statemens», не, зачем нам это, будем костылить всё на nginx. Напиши еще скрипть на sed\awk, который будет резать опасные символы.

Deleted
()
Ответ на: комментарий от Jopich1

Это не мои скрипты. Это скрипты от OpenCart. Надо же как-то его обезопасить.

INDIGO
() автор топика
Ответ на: комментарий от INDIGO

Ответы выше тоже полезные, так что советую не откладывать и разобраться.

Deleted
()
Ответ на: комментарий от Jopich1

еще лучше - сделать cow-клон, и на этот айпи начать отдавать его

MyTrooName ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.