#sql
Основные моменты по SQL-инъекциям 💉
🔸In-Band SQL Injection
In-Band SQL Injection - самый простой тип для обнаружения и эксплуатации; In-Band означает, что для эксплуатации уязвимости используется один и тот же метод связи, а также получение результатов, например, обнаружение уязвимости SQL Injection на странице веб-сайта, а затем возможность извлечь данные из базы данных на той же странице.
🔸Error-Based -SQL
Этот тип SQL-инъекции наиболее полезен для легкого получения информации о структуре базы данных, поскольку сообщения об ошибках из базы данных выводятся прямо на экран браузера. Часто его можно использовать для перечисления всей базы данных.
Union-Based SQL Injection
Этот тип инъекции использует оператор SQL UNION вместе с оператором SELECT для возврата дополнительных результатов на страницу. Этот метод является наиболее распространенным способом извлечения больших объемов данных через уязвимость SQL Injection.
0 UNION SELECT 1,2,group_concat(username,':',password SEPARATOR '<br>') FROM staff_users
🔸Blind-SQLi
В отличие от In-Band SQL injection, когда мы можем видеть результаты нашей атаки прямо на экране, blind SQLi - это когда мы практически не получаем обратной связи, чтобы подтвердить, были ли наши введенные запросы успешными или нет, это происходит потому, что сообщения об ошибках отключены, но инъекция все равно работает. Вас может удивить, что для успешного перебора целой базы данных нам нужен лишь небольшой отклик.
🔸Boolean-Based
SQL-инъекция на основе булевых функций относится к ответу, который мы получаем в ответ на наши попытки инъекции и который может быть истинным/ложным, да/нет, вкл/выкл, 1/0 или любым другим ответом, который может иметь только два исхода. Этот результат подтверждает, что наша полезная нагрузка SQL Injection была либо успешной, либо нет. На первый взгляд, вам может показаться, что такой ограниченный ответ не может дать много информации. Но на самом деле, используя только эти два ответа, можно перечислить структуру и содержимое целой базы данных.
admin123' UNION SELECT 1,2,3 from users where username='admin' and password like 'a%
🔸Time-Based SQLi
Слепая SQL-инъекция, основанная на времени, очень похожа на вышеописанную булеву инъекцию, поскольку отправляются те же самые запросы, но нет визуального индикатора того, что ваши запросы на этот раз неправильные или правильные. Вместо этого индикатором правильности запроса служит время, которое требуется для его выполнения. Эта временная задержка вводится за счет использования встроенных методов, таких как SLEEP(x), наряду с оператором UNION. Метод SLEEP() будет выполняться только после успешного выполнения оператора UNION SELECT.
Так, например, при попытке определить количество столбцов в таблице можно использовать следующий запрос:
admin123' UNION SELECT SLEEP(5);--.
Методы идентификации SQL-injection:
▫️Самый очевидный метод - ввести в поля одинарную кавычку ' и проверить ошибки.
▫️Вводите булевы условия типа "ИЛИ 1=1", "ИЛИ 4=9" и т.д. и выявляйте аномалии в ответах.
▫️Фаззинг с полезными нагрузками SQL и наблюдение за ошибками
▫️Фаззинг с различными полезными нагрузками, основанными на времени, и проверка задержек в ответах
▫️SqlMap
▫️Acunetix, BurpSuite, OWASP ZAP, Wapiti
Основные моменты по SQL-инъекциям 💉
🔸In-Band SQL Injection
In-Band SQL Injection - самый простой тип для обнаружения и эксплуатации; In-Band означает, что для эксплуатации уязвимости используется один и тот же метод связи, а также получение результатов, например, обнаружение уязвимости SQL Injection на странице веб-сайта, а затем возможность извлечь данные из базы данных на той же странице.
🔸Error-Based -SQL
Этот тип SQL-инъекции наиболее полезен для легкого получения информации о структуре базы данных, поскольку сообщения об ошибках из базы данных выводятся прямо на экран браузера. Часто его можно использовать для перечисления всей базы данных.
Union-Based SQL Injection
Этот тип инъекции использует оператор SQL UNION вместе с оператором SELECT для возврата дополнительных результатов на страницу. Этот метод является наиболее распространенным способом извлечения больших объемов данных через уязвимость SQL Injection.
0 UNION SELECT 1,2,group_concat(username,':',password SEPARATOR '<br>') FROM staff_users
🔸Blind-SQLi
В отличие от In-Band SQL injection, когда мы можем видеть результаты нашей атаки прямо на экране, blind SQLi - это когда мы практически не получаем обратной связи, чтобы подтвердить, были ли наши введенные запросы успешными или нет, это происходит потому, что сообщения об ошибках отключены, но инъекция все равно работает. Вас может удивить, что для успешного перебора целой базы данных нам нужен лишь небольшой отклик.
🔸Boolean-Based
SQL-инъекция на основе булевых функций относится к ответу, который мы получаем в ответ на наши попытки инъекции и который может быть истинным/ложным, да/нет, вкл/выкл, 1/0 или любым другим ответом, который может иметь только два исхода. Этот результат подтверждает, что наша полезная нагрузка SQL Injection была либо успешной, либо нет. На первый взгляд, вам может показаться, что такой ограниченный ответ не может дать много информации. Но на самом деле, используя только эти два ответа, можно перечислить структуру и содержимое целой базы данных.
admin123' UNION SELECT 1,2,3 from users where username='admin' and password like 'a%
🔸Time-Based SQLi
Слепая SQL-инъекция, основанная на времени, очень похожа на вышеописанную булеву инъекцию, поскольку отправляются те же самые запросы, но нет визуального индикатора того, что ваши запросы на этот раз неправильные или правильные. Вместо этого индикатором правильности запроса служит время, которое требуется для его выполнения. Эта временная задержка вводится за счет использования встроенных методов, таких как SLEEP(x), наряду с оператором UNION. Метод SLEEP() будет выполняться только после успешного выполнения оператора UNION SELECT.
Так, например, при попытке определить количество столбцов в таблице можно использовать следующий запрос:
admin123' UNION SELECT SLEEP(5);--.
Методы идентификации SQL-injection:
▫️Самый очевидный метод - ввести в поля одинарную кавычку ' и проверить ошибки.
▫️Вводите булевы условия типа "ИЛИ 1=1", "ИЛИ 4=9" и т.д. и выявляйте аномалии в ответах.
▫️Фаззинг с полезными нагрузками SQL и наблюдение за ошибками
▫️Фаззинг с различными полезными нагрузками, основанными на времени, и проверка задержек в ответах
▫️SqlMap
▫️Acunetix, BurpSuite, OWASP ZAP, Wapiti
👍2