2017-02-21 6 views
0

У меня есть скрипт perl с использованием модуля Net :: Nessus :: REST. В настоящее время я использую:Net :: Nessus :: REST с использованием ключей API против токена сеанса

$nessus->create_session(
    username => $NESSUSUSER, 
    password => $NESSUSPASSWORD 
); 

этот бит кода для создания токена сеанса. Это отлично работает, пока мои сканы завершатся в течение 30 минут. Через 30 минут истекает токен сеанса, и я получаю это сообщение об ошибке.

ошибка сервера: недопустимые учетные данные на nessus.pl линии 68

Если кто-то не знает, как установить тайм-аут на что-то вроде 86400 секунд, я хотел бы использовать API Access/секретный ключ, который я генерировать. Единственная проблема, с которой я сталкиваюсь, это то, что я не могу найти пример того, как перечислить это с помощью некоторого бита perl-скрипта, используя модуль Net :: Nessus :: REST. Может ли кто-нибудь помочь мне с битным API-кодом, который я мог бы заменить на пример create_session выше?

Thanks,

+0

Вы пролистать локальную документацию в [док разделе метода] в (HTTPS://metacpan.org/pod/Net::Nessus::REST#$nessus-%3Ecreate_session(username-=%3E-$username,-password-=%3E-$password))? По-видимому, это может дать понимание. У меня нет сервера Nessus, поэтому я не могу просмотреть его сам. – stevieb

+0

Спасибо за отзыв StevieB, я проверил их перед публикацией, и я ничего не вижу о API-ключах, а только сеансах токена. Я надеюсь, что что-то упустил. – Alby

+0

Я нашел способ около 30-минутного таймаута, изменив настройку xmlrpc_idle_session_timeout и перезапустив Nessus. Короче говоря, я могу вернуться к использованию токенов сеанса. Но я все равно хотел бы знать, как использовать API-ключи или токены сеанса. – Alby

ответ

1

Это действительно довольно просто; Вы должны включать в себя HTTP-заголовка "X-ApiKeys" в каждом запросе:

Java:

con.setRequestProperty("X-ApiKeys", "accessKey="+YourAccKey+";secretKey="+YourSecKey+";"); 

Curl:

curl -X POST -H 'X-ApiKeys: accessKey=YOURKEY;secretKey=YOURSECRET' -H 'Content-Type:application/json' 
    --data '{"scan_id":"21", "alt_targets":[127.0.0.1]}' 
-k "https://NessusServerIp:8834/scans/21/launch" | python -m json.tool 

..выполняется будет делать все волшебство.


Для получения дополнительной информации ознакомьтесь с API-доку [->] https://YourNessusIP:8834/api#/authorization:

API Ключи Эти ключи генерируются за счет через Nessus.session: ключи или Nessus.users: клавиши и может для аутентификации без создания сеанса. Добавьте их к вашему запросу, используя следующий HTTP заголовок:

X-ApiKeys: accessKey={accessKey}; secretKey={secretKey}; 

Пример:

curl -H "X-ApiKeys: accessKey={accessKey}; secretKey={secretKey}" https://{nessus-host}/scans *

Смежные вопросы