Возможна SQL-инъекция с перенаправлением на веб-страницу, если введенный запрос правильный

С разрешения моего друга я тестирую его сайт на наличие потенциальных уязвимостей.

Я пытался выяснить, могу ли я внедрить SQL-запрос в параметр запроса POST hi' or 1=1 --:

query=hi'%20or%201%3d1%20--

Я обнаружил, что документ распечатывает:

<div class="error">index job,query: syntax error, unexpected '-' near '-'</div>

а с ' or 0=0 -- я получаю:

<div class="error">index job,query: syntax error, unexpected '|' near ' | 0=0) --'</div>

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

EDIT: я вижу, что запрос работает, только если URL-адрес перенаправляется, но я не увижу результат запроса. Если URL-адрес не перенаправляется, я вижу эти ошибки SQL-запроса. Я пытаюсь понять, как получить вывод и сделать что-то более полезное для атаки на веб-сайт или даже сделать его обнаруживаемым из sqlmap.

Текущая команда, которую я использую, — sqlmap -r thework.txt -p query --dbs. thework.txt содержит полный действительный запрос POST.


person JavaScripter    schedule 18.01.2020    source источник


Ответы (2)


Внедрение SQL — это не только вредоносные атаки, которые считывают данные или изменяют данные на вашем сайте.

Большинство SQL-инъекций — это просто ошибки, подобные той, которую вы видели. Они могут быть даже не злонамеренными. Что, если у вас есть уязвимость SQL-инъекции, которая просто вызывает ошибку, когда кто-то хочет зарегистрировать свою фамилию как «О'Рейли»? У пользователя благие намерения, но ваш сайт ломается, когда он использует свое настоящее имя.

Этого достаточно, чтобы обнаруживать и исправлять случаи SQL-инъекций в вашем коде.

Вы не опубликовали свой код, который строит SQL-запрос из этого ввода, поэтому то, что вы показали, является лишь косвенным доказательством. Но я делаю вывод, что вы копируете ввод GET в свой SQL-запрос без надлежащего экранирования или предпочтительного метода, используя параметр запроса.

person Bill Karwin    schedule 19.01.2020

Жаль, что у меня не было 50 повторений, чтобы я мог оставить это в комментариях. Но да, сайт, скорее всего, уязвим. Чтобы быть уверенным, попросите своего друга разрешить вам запустить первоначальный эксплойт.

sqlmap.py -u ‹ Целевой адрес> --dbs

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

person David Cook    schedule 18.01.2020
comment
SQLMap не обнаруживает уязвимость. - person JavaScripter; 18.01.2020
comment
Это команда, которую я использую sqlmap -r thework -p query --dbs thework, содержит полный действительный запрос POST. - person JavaScripter; 18.01.2020
comment
Спасибо, JavaScripter, мне нужно было знать команду, которую вы только что опубликовали. Исправьте команду, которую я использовал, не показывает уязвимость, но если сообщение об ошибке является результатом уязвимости, вы обычно можете получить базу данных. Если на самом деле вы не уязвимы. - person David Cook; 18.01.2020
comment
Хорошо, спасибо, в основном вы говорите мне, что простая ошибка, как в OP, подразумевает уязвимость SQLi. Теперь я уверен, что это так. Посмотрите на мое редактирование и посмотрите, сможете ли вы ответить на это - person JavaScripter; 18.01.2020
comment
Обычно я сам не следую редиректам. Извините, я не могу на самом деле ответить на ваш вопрос о перенаправлениях, но исходный (домашний) источник, я бы сказал, уязвим из-за того, что вы написали до сих пор. - person David Cook; 18.01.2020