2017-02-21 127 views
0

我有一個使用Net :: Nessus :: REST模塊的perl腳本。目前我正在使用:Net :: Nessus :: REST使用API​​密鑰與會話令牌

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

這段代碼創建會話令牌。只要我的掃描在30分鐘內完成,這項工作就會很好。 30分鐘後,會話令牌過期,我收到此錯誤消息。

服務器錯誤:在nessus.pl線憑據無效68

除非有人知道一種方法來設置超時喜歡的東西86400秒,我想用的API接入/祕密密鑰生成我。我唯一的問題是我找不到如何使用Net :: Nessus :: REST模塊列出一些perl腳本的例子。有人能幫我用上面的create_session示例中可以交換的代碼API密鑰嗎?

謝謝,

+0

你細讀[方法的doc段]內的本地文檔(HTTPS:/ 使用下面的HTTP標頭將其添加到您的要求/metacpan.org/pod/Net::Nessus::REST#$nessus-%3Ecreate_session(username-=%3E-$username,-password-=%3E-$password))?顯然,它可能提供見解。我沒有Nessus服務器,所以我無法親自查看它。 – stevieb

+0

感謝您的提示StevieB,我在發帖前檢查了這些,我沒有看到關於API密鑰的任何內容,只是令牌會話。我希望我忽略了一些東西。 – Alby

+0

我通過更改xmlrpc_idle_session_timeout設置並重新啓動Nessus找到了一種解決30分鐘超時的方法。總之,我可以回到使用會話令牌。但我仍然想知道如何使用API​​密鑰與會話令牌。 – Alby

回答

1

這真的很簡單,你必須包括在每個請求一個Http-頭 「X-ApiKeys」:

的Java:

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

捲曲:

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 

..This將盡一切的魔力。


有關的詳細信息檢查出API-的Docu [ - >https://YourNessusIP:8834/api#/authorization]:

API鍵 這些鍵通過Nessus.session每個帳戶生成:鍵或Nessus.users:鍵和能用於驗證而不創建會話。

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

例:

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