Persistent SQL Injection уразливості

22:47 27.12.2008

Окрім звичайних SQL ін’єкцій, які ви могли неодноразово зустрічати в багатьох веб додатках, які я назову Reflected SQL Injection, є також інший тип даного класу уразливостей, який я назвав Persistent SQL Injection. Назви цим двом типам SQL ін’єкцій я вибрав враховуючи особливості їх роботи та особливості проведення атак, що використовують дані уразливості.

Новий тип SQL ін’єкцій я відкрив в цьому місяці, коли виявив уразливості в плагіні CapCC для WordPress. Де серед інших дірок була й SQL ін’єкція, яка видрізнялася по особливостям своєї роботи від інших SQL ін’єкцій (що знаходять щодня в різних веб додатках).

Визначальною особливістю Persistent SQL Injection уразливостей є те, що після проведення одного запиту до сайту, атакуючий код заноситься в БД і в подальшому береться з БД для виконання SQL запитів. В процесі чого і виконується атакуючий код. І це відбувається постійно, тому я й назвав даний тип уразливостей Persistent SQL Injection.

Тобто, потрібно відправити лише один запит, після чого SQL команди будуть весь час виконуватися (доки вони будуть в БД) в процесі роботи системи.

Подібні SQL ін’єкції зручно використовувати для проведення атак, де потрібне постійне виконання деякого коду, наприклад, для DoS атак. Що я продемонстрував у випадку уразливості в CapCC. Використання даного типу уразливостей відбувається через CSRF атаку, за допомогою якої в БД заноситься атакуючий код, який в подальшому автоматично спрацьовує в процесі роботи системи.

Протидіяти подібним SQL Injection атакам важче, тому що потрібно переверяти не тільки вхідні дані від користувача, але й дані, що беруться з БД, чого програмісти за звичай не роблять, довіряючи даним з БД. До того ж, жоден WAF не виявить подібної уразливості. Тому потрібно проводити перевірку всіх даних перед виконанням SQL запитів.


Leave a Reply

You must be logged in to post a comment.