Как найти SQL Injection с помощью дорков. Обзор V3n0M-Scanner

Как найти SQL Injection с помощью дорков. Обзор V3n0M-Scanner


Всем привет! Сегодня будет небольшой обзор утилитки под названием 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 следующий запрос (см на скрине)

Код: 

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/V3n0... 

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

В моем случае скрипт нашел 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 - количество потоков.При запуске функции вылетит ошибка: 

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 - количество потоков.

Код: 

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

cd V3n0M-Scanner/ 

python3 setup.py install —user


https://github.com/v3n0m-Scanner/V3n0M-Scanner

Report Page