Как найти SQL Injection с помощью дорков

Как найти SQL Injection с помощью дорков

overlamer1


Всем привет! Сегодня будет небольшой обзор утилитки под названием V3n0M-Scanner.

Самая стоящая функция сканера - поиск SQLi- и XSS-уязвимостей в на веб-сайтах с помощью дорков. А база дорков у V3n0M просто колоссальная: более 14 000 штук! 

Если будем где-то через чур углубляться в подробности, то это делается для новичков.


Из второстепенных функций сканера:

- поиск IP за Cloudflare (Cloudflare Resolver);

- поиск админки веб-сайта;

- dns brute.


В будущем планируют реализовать функцию сканирования уязвимостей по базе Metasploit.


Немного юмора: Что такое гугл дорк?

Чаще встречаемое на полях рунета понятие Гугл Доркс — это транслит от английского Google Dork(s) — Тупица(ы), сидящий в GoogleТупица в Гугле и т.п. Изначально, когда понятие только зарождалось, им награждали неких нерадивых IT (или не всегда) специалистов, которые чаще по простому незнанию «сливали» в общий сетевой доступ конфиденциальную информацию о компании, где трудились.

Постепенно название Гугл Доркс закрепилось за малосведущим администратором, неумело прячущим элементарные секреты от взлома электронной визитки компании, оставляя почти в открытом доступе лазейки для хакера и последующего несанкционированного доступа


Как работает поиск уязвимостей с помощью дорков

Допустим, мы знаем, что если URL сайта содержит текст "page.php?file=", то есть некоторая вероятность, что данная ссылка уязвима к атаке SQL Injection. Манипулируя параметрами после знака = мы можем получить несанкционированный доступ к базе данных и извлечь из нее критичную информацию. Например, логины и пароли от веб-сервера. В данном случае "page.php?file=" - это дорк, шаблон, с помощью которого можно обнаружить уязвимости на веб-сайтах.

Поиск по доркам в народе называют гугл хакинг. Например, чтобы найти все сайты, у которых URL содержит дорк page.php?file=, нужно ввести в Google следующий запрос:

Вручную можно тестировать несколько десятков дорков. Но когда их тысячи, то на помощь приходят скрипты, которые позволяют осуществлять такой поиск в автоматическом режиме. Как V3n0M. Правда эта утилита для поиска использует не гугл, а bing.

Установка для Kali Linux

apt-get install python3-pip python3-dev python-dev
pip3 install aiohttp asyncio bs4 dnspython tqdm datetime requests socksipy-branch httplib2

git clone https://github.com/v3n0m-Scanner/V3n0M-Scanner.git
cd V3n0M-Scanner/
python3 setup.py install --user


Запускаем утилитку:

Воспользуемся сканером уязвимостей. Для этого выбираем пункт 1 и отвечаем на ряд вопросов от сканера.


1. Choose your target(domain) ie .com , to attempt to force the domain restriction use *, ie *.com :

Здесь можно указать конкретный домен, который мы желаем протестировать. Например, test.ru.

Если интересуют еще и субдомены, то вводим *.test.ru. Можно сделать поиск уязвимостей во всем русском сегменте интернета: *.ru . А если ввести просто *, то поиск будет осуществляться вообще по всем сайтам. В своем примере я выберу звездочку.


2. Choose the number of random dorks (0 for all.. may take awhile!)

Здесь необходимо выбрать количество дорков, которое будет использоваться при сканировании. Дорков в базе более 14 тысяч. Если выбрать 0, то скрипт будет искать по всей базе. Такой поиск может затянуться на несколько часов. Можно указать конкретное количество дорков, тогда скрипт будет выбирать их из базы в случайном порядке. Для своего примера я выберу 200.


3. Enter no. of threads, Between 50 and 500

Количество потоков сканирования. Можно выбрать от 50 до 500. Я выберу 50.


4. Enter no. of Search Engine Pages to be scanned per d0rk, Between 20 and 100, increments of 20. Ie> 20:40:60:80:100

Здесь нужно указать количество страниц в поисковой системе, вывод которых будет анализировать скрипт. Чем больше число, тем больше результатов, но при этом увеличится время сканирования. Для примера я выбрал 20.


Далее запускается процесс автоматического гугл хакинга.

После завершения процедуры поиска скрипт предлагает нам решить что же делать с тем, что он так тщательно искал. Например, на скриншоте ниже видно, что было найдено 1485 ссылок, а после очистки дубликатов и прочего мусора осталось всего лишь 172.

Но все ли они являются уязвимыми? Проверяем!

Выберем пункт [1] SQLi Testing

Скрипт автоматически проверит на SQL Injection все найденные ссылки и выдаст результат со списком уязвимых URL.

В моем случае скрипт нашел 10 уязвимостей и определил тип для каждой. Как показала практика, тип уязвимости MySQL Classic - это Union Based SQLi. Далее можно получать доступ к базам данных через SQLMap. Но можно и почувствовать себя настоящим хакером и попробовать получить данные ручками в браузере 


Можно проверить ссылки на уязвимость к XSS:

[4] XSS Testing

Скрипт в меню тестирования часто глючит и после очередной проверки нас может выкинуть в главное меню без сохранения результата. Поэтому лучше сразу воспользоваться функцией сохранения результатов в файл:

[5] Save valid Sorted and confirmed vuln urls to file


Что еще интересного есть в скрипте?

1. Можно настроить работу через прокси

[5] Enable Tor/Proxy Support


2. Можно попробовать найти IP-адрес сервера, если он спрятан за Cloudflare

[6] Cloudflare Resolving


Скрипт выполняет обычный брут по субдоменам и выдает для них IP. Если повезет, то где-то в глубинах DNS сохранился вожделенный прямой IP искомого сервера.


Ошибка запуска

При запуске модуля вылетит ошибка:

ImportError: No module named request


Чтобы ее исправить, необходимо найти в файле v3n0m.py строчку:

cloud = subprocess.Popen('python ' + pwd + "/cloudbuster.py " + str(target_site) + scandepth, shell=True)


и заменить в ней python на python3


3. Можно попробовать сбрутить субдомены

[4] DNS brute


Функция отличается от Cloudflare Resolving только тем, что скрипт показывает результаты с субдоменами без IP-адреса.

Как по мне, то лучше воспользоваться dnsmap.


 Ошибка запуска

При запуске функции вылетит ошибка:

dnsbrute: error: argument -t/--threads: expected one argument


Автор скрипта упустил значение параметра t в вызове скрипта dnsbrute.py:

dnsbrute = subprocess.Popen(pwd + "/modules/dnsbrute.py -w lists/subdomains -u " + str(target_site) + " -t " + att


Поэтому если хочется, чтобы DNS brute работал, то нужно удалить из этой строчки: + " -t"

Либо задать конкретную цифру этому параметру, в данном случае t - количество потоков.

Report Page