Как проверить, существует ли уязвимость внедрения SQL ПРОГРАММНО? - PullRequest
0 голосов
/ 08 февраля 2011

Я вижу, что некоторые хакерские инструменты могут автоматически находить веб-страницы с уязвимостью SQL-инъекций.

Как это работает?

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

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

Например, с уязвимым кодом подтверждения имени пользователя / пароля в большинстве случаев это будет что-то вроде:

select count(*) from users where username=@username and password=@password;

так что хакер попытается внедрить что-то вроде:

@username=" 'blabla' or 1=1  "
@password=" 'blabla' or 1=1  "

Таким образом, результатом будет то, что count (*) будет> 0, следовательно, вход в систему принят.

0 голосов
/ 08 февраля 2011

Многие из этих инструментов имеют списки параметров, которые, как известно, ломают веб-страницы.Они запускают эти параметры в нескольких запросах, вставляя параметры в:

  1. поля формы
  2. GET URL
  3. HTTP-заголовки

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

Одним из хитрых моментов является определение того, когда вы нашли эксплуатируемую веб-страницу.В некоторых случаях веб-серверу может потребоваться больше времени для восстановления страницы, либо некоторые части страницы могут немного отличаться.Что нужно проверить:

  1. Коды ответов HTTP (ошибка сервера 500, вероятно, означает, что SQL недопустим)
  2. Размер возвращаемой страницы
  3. Время, необходимое для возврата страницы

Сказав все это, если у вас действительно есть доступ к исходному коду сайта, вы можете использовать методы статического анализа для поиска уязвимостей.

0 голосов
/ 08 февраля 2011

Простым тестом может быть просто поставить одинарную кавычку в поле ввода и посмотреть, вернетесь ли вы сообщение об ошибке mysql.

Если вы получили что-то вроде «У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' '' 'в строке 1'

или если вы получили ошибку php / mysql (которая, вероятно, может быть программно распознана по ее форматированию или общему сообщению об ошибке), то вы также знаете, что у вас есть уязвимость, связанная с инъекцией.

Если вы просто получаете общее «нет такого имени пользователя» или действительный пустой набор результатов обратно, то, скорее всего, у вас нет уязвимости для инъекций.

...