Как найти уязвимости SQL инъекций? - PullRequest
6 голосов
/ 03 сентября 2010

Есть ли способ найти уязвимости в SQL-инъекциях?

Примечание. Я спрашиваю, как найти их на сервере, которым вы управляете, чтобы вы могли их исправить.Я не спрашиваю о том, как обнаружить их на чужом сервере, чтобы использовать их.

Есть ли способ найти каждое вхождение mysql_query(), не открывая каждую страницу и не делая ctrl+f?

Ответы [ 5 ]

10 голосов
/ 03 сентября 2010

Используя linux, вы можете использовать утилиту grep.

find /dir/containing/files -type f -name '*.php'|xargs grep --color=auto "mysql_query"
  • /dir/containing/files: каталог, содержащий ваши PHP-файлы, например, /home/user/domains/example.com/public_html
  • -type f: поиск только файлов (не каталогов)
  • -name '*.php' соответствует файлам, заканчивающимся только на .php. Если вы хотите сопоставить и другие файлы, например, .inc, используйте это вместо: -name '*.php' -o -name '*.inc' (соответствует * .php ИЛИ. .Inc)
  • |xargs grep использовать содержимое найденных файлов для поиска
  • --color=auto выделяет найденную часть
  • "mysql_query" условия поиска
6 голосов
/ 03 сентября 2010

Нет, простого пути не существует.И если это так, то это НЕ надежно.

При этом вы должны изучить этот вопрос / ответ ветку и применить их.

Для поиска mysql_query(), вы можете использовать функцию поиска в файлах вашего текстового редактора.Я использую Блокнот ++ , и у него есть search-in-files, который может искать любую строку, например mysql_query, в каталоге и подкаталоге с файлами определенного расширения (.php в вашем случае).

Учебник со скриншотом для Notepad ++: здесь .

2 голосов
/ 03 сентября 2010

Существует проект с открытым исходным кодом, созданный на python, который называется w3af , который используется, среди прочего, для поиска проблем с SQL-инъекцией.

Загрузите его со страницы, а затем при запускевыберите профиль fast_scan и в поле Target введите свой URL-адрес (это может быть что-то вроде http://localhost:8080, если вы работаете локально) и запустите приложение.

В случае, если оно может обнаружить любую проблему с инъекцией sql,сообщит вам.

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

0 голосов
/ 03 сентября 2010

Наилучшим способом поиска уязвимостей SQL-инъекций является использование Fuzzer, такого как Acunetix ($) NTOSpider ($$$), Wapitit (с открытым исходным кодом, очень хорошо), W3AF (с открытым исходным кодом, не очень хорошо.).

Убедитесь, что dispaly_errors = On.Эти инструменты обнаруживают инъекцию sql, вставляя неверные данные, такие как '", и просматривают, отображается ли ошибка.Они также обнаруживают SQL-инъекцию, внедряя запросы, которые занимают много времени, например ' sleep(30)--, чтобы узнать, занимает ли запрос более 30 секунд.

0 голосов
/ 03 сентября 2010

Если вы хотите выполнить поиск, попробуйте отличный инструмент Red Gate SQL Search (это бесплатно!), Но только для SQL Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...