Кролики — это не только ценный мех, но и три — четыре килограмма диетического, легкоусвояемого мяса.
Сегодня мы рассмотрим один из наиболее универсальных инструментов пентестера — Nmap — культовый кроссплатформенный сканер, который расшифровывается как «Network Mapper». Инструмент сам по себе довольно мощный, но его чаще всего используют в связке с другими утилитами, не предполагая, что, помимо способности сканировать сеть, Nmap имеет массу других возможностей. Основная из них — это использование скриптов с помощью NSE (Nmap Scripting Engine) — компонента Nmap, в основе которого лежит скриптовый язык Lua, напоминающий JavaScript. Именно NSE делает Nmap таким универсальным.
Допустим, мы просканировали хост и увидели открытые порты:
root@kali:~# nmap site.test.lan Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-31 11:58 MSK Nmap scan report for site.test.lan (192.168.60.50) Host is up (0.000030s latency). Not shown: 995 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 90/tcp open dnsix 3306/tcp open mysql MAC Address: 6E:93:12:AA:1F:6D (Unknown)
В первую очередь, нас интересует 80 порт. Вероятно, здесь «крутится» сайт. Если запустить скрипт http-enum
, то он будет искать всю полезную информацию на веб-сервере точно так же, как это делает сканер уязвимостей Nikto:
nmap site.test.lan --script http-enum
Сбор информации
Узнав, что сайт на WordPress, запустим скрипт http-wordpress-enum
.
nmap -p80 --script http-wordpress-enum --script-args http-wordpress-enum.search-limit=all site.test.lan
Сбор информации
Но это еще не все. В стандартном наборе Nmap имеется почти 600 скриптов, а если нет нужного – можно написать свой.
Поищем на сайте страницы с авторизацией, если они есть. И в этом нам поможет скрипт http-auth-finder
:
nmap -p80 --script http-auth-finder site.test.lan
Авторизация
Если использовать команду nmap --script=auth
, то к хосту будут применены по очереди все скрипты из раздела auth
.
Когда форма авторизации найдена, попробуем подобрать пароль к какой-нибудь учетной записи, используя очередной скрипт http-form-brute
:
nmap -p-80 --script=http-form-brute --script-args=http-form-brute.path=/wp-login.php site.test.lan
Brute-force
Весьма неплохо для “сканера портов”. Применяя различные скрипты и используя при этом лишь «сканер портов», мы получили довольно много информации. Но здесь стоит отметить, что, в отличие от Nmap, WPScan выводит не только названия компонентов, но и указывает на их возможные уязвимости.
Далее мы видим открытый 22 порт SSH и пробуем подобрать пароль от сервиса, используя скрипт ssh-brute
:
nmap -p22 --script ssh-brute site.test.lan
SSH
Также мы видим открытый 21 порт, который, предположительно, указывает на наличие FTP-сервера. Мы можем получить некоторую информацию о сервере при помощи скрипта ftp-syst
:
nmap -p21 --script ftp-syst site.test.lan
FTP
Далее произведем перебор пользователей FTP-сервера:
nmap -p21 192.168.60.50 --script ftp-brute --script-args userdb=/root/user.txt,passdb=/root/pass.txt
brute-force FTP
Еще у нас есть MySQL и его открытый порт 3306.
Скрипт mysql-info
покажет некоторую информацию о MySQL (для этого необходимо запустить Nmap с ключами -sV -sC
):
nmap -p3306 -sV -sC site.test.lan
MySQL
Скрипт подключается к серверу MySQL и выводит информацию, такую как номер протокола и версии, идентификатор потока, состояние, возможности и соль пароля.
Помимо этого, мы можем перечислить «валидных» пользователей MySQL:
nmap -p3306 --script mysql-enum site.test.lan
Еще MySQL
Если необходимо произвести перечисление нестандартных пользователей, то в аргументах указывается путь к файлу с необходимыми именами. Получив список, можно производить подбор пароля к учетным записям.