В настоящее время я пытаюсь написать вспомогательный модуль для Metasploit. Модуль в основном пытается получить несколько учетных данных по умолчанию для доступа к странице управления маршрутизатором. Аутентификация выполняется через Интернет, то есть HTTP POST.Metasploit: send_request_cgi возвращает nil для соединений HTTPS
В настоящее время модуль работает так, как ожидалось, для простых HTTP-соединений, то есть незащищенных соединений, однако каждая попытка подключения через HTTPS (порт 443) возвращает нуль. Ниже функция используется в Metasploit классе, чтобы получить страницу входа в систему:
def get_login_page(ip)
begin
response = send_request_cgi(
'uri' => '/',
'method' => 'GET'
)
# Some models of ZyXEL ZyWALL return a 200 OK response
# and use javascript to redirect to the rpAuth.html page.
if response && response.body =~ /changeURL\('rpAuth.html'\)/
vprint_status "#{ip}- Redirecting to rpAuth.html page..."
response = send_request_cgi(
'uri' => '/rpAuth.html',
'method' => 'GET'
)
end
rescue ::Rex::ConnectionError
vprint_error "#{ip} - Failed to connect to Web management console."
end
return response
end
При попытке подключения через HTTPS, то первый send_request_cgi вызов возвращает ноль . Никакое исключение не попадает и не бросается. Я попытался с тремя разными хостами, чтобы убедиться, что проблема не связана с конкретной конечной точкой. Все мои 3 попытки не смогли вернуть ответ. При каждой попытке я установил параметр RPORT равным 443;
RHOSTS 0.0.0.0 yes The target address range or CIDR identifier
RPORT 443 yes The target port
Обратите внимание, что я заменил настоящий IP 0.0.0.0. Используя веб-браузер, я могу фактически подключиться к маршрутизатору через HTTPS без каких-либо проблем (кроме необходимости добавлять исключение, так как сертификат не доверен), и я представил страницу входа. С Wireshark я попытался посмотреть генерируемый трафик. Я ясно вижу, что маршрутизатор ничего не посылает. Я замечаю 3 рукопожатия быть завершено, и запрос GET HTTP, вносимый:
GET/HTTP/1.1
Host: 0.0.0.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Есть 3-4 ACK после, а затем FIN/PUSH посылается сервером.
Основываясь на this page на GitHub от Metasploit, у меня создалось впечатление, что подключения к HTTPS-сайтам обрабатывались базовой структурой. Я не видел никаких статей/учебников/источников, которые заставляют меня думать иначе. Документ о send_request_cgi не указывает каких-либо конкретных требований для установления HTTPS-соединения. У другого posts не было той же проблемы, что и у меня. На данный момент я подозреваю, что OS, каркас или я забываем что-то активировать. Other modules Я рассматривал либо только объекты HTTP-сайтов, что я сомневаюсь, либо не имею специальной обработки для соединений HTTPS.
Любая помощь, определяющая причину, была бы весьма признательна.
версия Metasploit: Framework: 4.9.3-2014060501 консоли: 4.9.3-2014060501.15168
Версия ОС: SMP Debian 3.14.5-1kali1 (2014-06-07)
Я столкнулся с этим [сообщение] (https://community.rapid7.com/message/8822#8822) и попробую его, как только вернусь домой. – InfectedPacket