ahelper

<<< Back

Получение внешнего IP из роутера Sagemcom F@ST 1744 V2 (продолжение)

Пример авторизации на роутере рассмотрено в предыдущей записи. Теперь получаю страницу статуса роутера, в которой есть вся основная необходимая информация.

Для получени страницы статуса используя программу SmartSniff, захожу с браузера на страницу статуса, она же главная. Получаю запрос / ответ такого плана:

GET /status.htm HTTP/1.1
Host: 192.168.1.1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: SessionID=43 // ID сессии

HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Server: Virtual Web 0.9
Content-Length: 10269 

Далее страница HTML...

Из первой строки понятно, что используется уже не POST запрос, а GET и обращение к "status.htm". С помощью команд cURL PHP создаю аналогичный запрос, и все той же программой отслеживаю правильность. Сценарии=>Связь=>Router_IP.
Но в ответ получаю не HTML страницу, а перенаправление на ввод логина "login.htm". Наступило разочарование...

Что не так? Мучал вопрос несколько дней.

Ответ оказался прост, с моим созданым запросом не отправлялся ID сессии.

Следующей задачей стало получение этого ID из первого запроса авторизации. И использовать его в GET запросе. Реализация его такая:

// Получаем ID сессии
preg_match('/SessionID=/', $result, $matches);
if (!empty($matches[0]))
{
     $cookie = strstr($result, 'SessionID=');
     $cookie = strstr($cookie, ';', true);
     $cookie = ltrim($cookie, 'SessionID=');
}

//print_r($cookie);
//print_r($result);
// Закрываем соединение
curl_close($ch);

Дописываю код GET PHP и чудо свершилось, получил в ответ HTML страницу. Прям ХАКЕРОМ себя почувствовал. GET запрос такой:

// STEP 2 -- GET DATA
$url = "http://192.168.1.1/status.htm";
$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     'Cookie: SessionID='.$cookie));
    $output = curl_exec($ch);

if ($output === FALSE) {
    echo "cURL Error: " . curl_error($ch);
    return;
}
//print_r($output);
curl_close($ch);

Запрос/ответ выглядит так:

GET /status.htm HTTP/1.1
Host: 192.168.1.1
Accept: */*
Cookie: SessionID=279

HTTP/1.1 200 OK
Content-Type: text/html
Connection: close
Server: Virtual Web 0.9
Content-Length: 10255 

Далее страница HTML...

Остается теперь достать нужную информацию и дальше реализовывать задуманное.
Пока создавалось понятие как все желания связать воедино, рисовал алгоритм на бумаге.
Реализовал перезагрузку роутера не методом атаки, с авторизацией через GET запрос. Сценарии=>Связь=>Router_reboot.

Продолжение следует...

Discuss (0) (1)

Малоярославец, Россия

На форуме: ahelper