PHP-профи, помогите по SQL Injection

12
andr0s
На сайте с 02.02.2010
Offline
76
1298

Ситуация: есть PHP скрипт, зашифрованный ZEND'ом, купленный не так давно. Автор уверял и божился, что скрипт неломаемый в принципе. Но недавно я прогнал его через сканер уязвимостей, нашлась якобы sql injection. Написал автору, тот клятвенно утверждает, что уязвимости нет. Я на PHP уже ничего тыщу лет не писал, тем более без фреймворков, поэтому сам не могу понять, что это такое и опасно это или нет. Гуру PHP, подскажите, что это такое?

Первоначально сканер расковырял вот такое:

site.com/search/?area=53&type='1

Выдает

Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\\\'1) AND (l.area = 53)' at line 27 in ...

Далее, подставилось

site.com/search/?area=53&type=`1; show tables;`

Выдалось

Notice: Unknown column '1; show tables;' in 'where clause' in ...

обратите внимание, что кавычки во втором случае другие

я так понял, там как-то экранируются параметры, но опасно это или нет? т.е. может ли взломщик все-равно получить доступ к другим таблицам (т.е. провести инъекцию)?

Спасибо! :popcorn:

minor
На сайте с 04.10.2010
Offline
70
#1

Вам нужно экранировать переменный которые вы принимаете.

Конкретно к type у вас в примере, нужно найти где она используется и привести к int (целым числам) можно функцией intval или поставить перед переменной (int).

PHP experience 2 year, comprehend seo
LEOnidUKG
На сайте с 25.11.2006
Offline
1769
#2

Сам запрос покажите.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
andr0s
На сайте с 02.02.2010
Offline
76
#3

Спасибо всем ответившим.

Показать запрос к БД я никак не могу, я же его никак не "вытащу", скрипт зашифрован, переписать его я следовательно тоже не могу.

Я бы хотел узнать, опасная это уязвимость или нет, и если да - то тогда обоснованно предъявить автору скрипта претензии, чтобы он устранил уязвимости.

Что тут может злоумышленник сделать и может ли вообще?

[Удален]
#4

Нужно выше по коду прицепить php'ку где фильтровать переменные area и type, тем же интвалом

edogs software
На сайте с 15.12.2005
Offline
775
#5
andr0s:
Ситуация: есть PHP скрипт, зашифрованный ZEND'ом, купленный не так давно. Автор уверял и божился, что скрипт неломаемый в принципе. Но недавно я прогнал его через сканер уязвимостей, нашлась якобы sql injection. Написал автору, тот клятвенно утверждает, что уязвимости нет. Я на PHP уже ничего тыщу лет не писал, тем более без фреймворков, поэтому сам не могу понять, что это такое и опасно это или нет. Гуру PHP, подскажите, что это такое?

Того эффекта что Вы показали - быть не должно в любом случае. Это ошибки допущенные программистом. Достаточно ли они серьезны что бы привести к взлому - бабушка надвое сказала, как повезет. Но если купили скрипт недавно, то как минимум нормой поведения для программиста будет - исправить их бесплатно. В крайнем случае dezender Вам в руки и какой-нибудь другой программист, zend вполне себе раскодируется.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
minor
На сайте с 04.10.2010
Offline
70
#6

Я думаю что можно удалить таблицу например, если правильно подобрать. Вобшем в любом случае предъявляйте автору=)

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#7

ТС, отсутствие фильтрации это уже совсем не есть гуд. Такие уязвимости даже школьник с Ачата найдет, неговоря уже о спец.софте, который щас юзают продвинутые инъекционисты.

Подпись))
IL
На сайте с 20.04.2007
Offline
435
#8
to use near '\\\'1) AND

Очень похоже, что включены magic_quotes одновременно с "ручным" экранированием. Если так - попробуйте их отключить и запустить проверку уязвимостей повторно.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
S
На сайте с 23.05.2004
Offline
315
#9

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

Так что про отсутствие уязвимостей я бы сильно сомневался.

Это просто подпись.
palladin_jedi
На сайте с 13.07.2010
Offline
71
#10
andr0s:
Выдает PHP код:
Notice:*You*have*an*error*in*your*SQL*syntax;*check*the*manual*that*corresponds*to*your*MySQL*server*version*for*the*right*syntax*to*use*near*'\\\'1)*AND*(l.area*=*53)'*at*line*27*in*...*

Чей изощрённый ум не подавил вывод нотисов, варнингов и ошибок для продакшена?

Сайт о web-разработке и прочем (http://seazo.net)||Продвижение статьями под Google (http://short.seazo.net/ght4zf) Бесплатные консультации рефералам Sape (http://www.sape.ru/r.SWfwWOblBo.php) PHP и JS скрипты на заказ, создание сайтов с нуля и на CMS.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий