Nessus社區版調用商業API

0X01 Nessus簡介

全球使用人數最多的漏洞掃描器,是由Renaud Deraison在1998年 開展的項名爲 "Nessus"的計劃,其計劃目的是希望能爲因特網社羣提供一個免費、威力強大、更新頻繁並簡易使用的遠端系統安全掃描程序。Nessus起初是開源的,後來公司決定走向閉源,核心開發者分爲了兩派,一派接受閉源,一派不接受,不接受的人就離開了公司,創建了GreenBone公司,開發了OpenVas。

OpenVas和Nessus我都用過,對OpenVas更爲了解一些。OpenVas的特點在於開源,你能使用其所有功能,除了無法使用商用規則庫,其他的都和商業版一樣。Nessus分爲社區版和商業版,社區版和商業版基本一樣,但是社區版限制了可調用的API和掃描IP數量,掃描IP數量限制的既不是單個任務掃描IP數量,也不是多個任務掃描IP總數,而是該機器歷史總共掃描的IP數量,16個。舉個例子,你掃描了192.168.1.0/24,這個網段,掃出了192.168.1.1 -- 192.168.1.16,這16臺機器,那麼16個IP的限制就達到了,其餘的所有IP掃描都沒有結果。

OpenVas的掃描配置比較複雜,容易讓人頭暈,Nessus就設計得更爲人性化一點,更容易使用。

0X02 安裝

官方網站:https://www.tenable.com/downloads/nessus

支持各種操作系統,自行下載。我使用的是Ubuntu18.04,所以下載的安裝包爲:Nessus-8.8.0-ubuntu1110_amd64.deb

1.下載好之後安裝deb包:

dpkg -i Nessus-8.8.0-ubuntu1110_amd64.deb

2.安好之後命令行輸出會提醒你使用命令開啓nessus進程:

/etc/init.d/nessusd start

3.nessus會佔用8834端口,用來啓動WEB服務,通過該WEB服務完成後續安裝步驟,所以需要保證8834端口沒有被其他進程佔用,同時防火牆規則沒有攔截對8834端口的訪問。

後面的安裝步驟沒有太多說明的,傻瓜式安裝,一路點下去就行了,要輸什麼參數就輸吧。

0X03 乾貨來了

上面提到過,社區版的Nessus對API的調用是有限制的,先來講下怎麼調用API。

1.首先點擊setting按鈕,進入配置頁面

2.Version就是nessus版本,Licensed Hosts可以清楚看到當前已使用的IP數量,這裏我已經把16個IP都掃完了,不能再掃描新的IP,但是舊IP可以重複掃描出結果,這個沒有問題。點擊My Account

3.可以看到,通過添加HTTP HEADER的方式來完成身份驗證,同時可以查看API文檔,藍色字樣。實際上還可以通過請求Nessus的身份驗證API來獲取token,也可以完成身份驗證,但是不推薦該方法。使用API Keys比較好。

4.再來看看API documentation,有很詳細的API介紹,寫的很清楚,慢慢看你會發現,很多重要的功能是不能調用的,比如創建掃描任務,也就是scans,開始一個任務等等。紅框的字啥意思呢?點進去會讓你搞什麼Nessus Manager,說白了就是要你花錢買商業版。

寫個調用API的DEMO:

import requests

url = 'https://192.168.1.2:8834'
headers = {'X-ApiKeys': 'accessKey=your_access_key;secretKey=your_secret_key',
           'content-type': 'application/json'}
resp = requests.get('%s/%s' % (url, 'scans'), headers=self.headers, verify=False)
print(resp.status_code)
print(resp.text)

攜帶了X-API-Token請求頭的調用:

import requests

scan_id = 11 # 掃描任務的id
url = 'https://192.168.1.2:8834'
headers = {'X-ApiKeys': 'accessKey=your_access_key;secretKey=your_secret_key',
           'content-type': 'application/json',
           'X-API-Token': 'XXADADASDASDASD'}

resp = requests.post('%s/scans/%s/launch' % (url, scan_id), headers=headers, verify=False)
print(resp.status_code)
print(resp.text)

5.如何調用商用API

如果直接去請求API會返回412,API不可用,但是瀏覽器去訪問頁面,這些API是全部可以使用的,那麼自然可以想到,Nessus用了一種方法去區分默認WEB界面的訪問和API請求,那就看看WEB界面請求就發了些什麼玩意吧。

X-API-Token,這字眼太吸引人了,讓人不得不懷疑這個字段。OK,把這個請求頭加在HTTP請求頭裏,你就發現,所有的API都可以調用了,就這麼簡單。

0X04 更牛逼的

上面說到了,通過添加X-API-Token就可以訪問所有API了,但是這個X-API-Token的值會不會變?會,有時候會變,但是我找到了方法,去獲取X-API-Token的值

繼續更新:

顯然,每次從瀏覽器去訪問WEB頁面來獲取X-API-TOKEN是不切實際的,所以就開始了尋找X-API-TOKEN之旅,由於時間有點久遠了,有些細節忘記了,說一下我當時的思路:查看頁面的請求記錄,找到可疑的JS文件,然後在Nessus源碼目錄中查看這些JS文件中是否存在當前X-API-TOKEN的值,或者X-API-TOKEN這個字段,後來在一個JS文件中發現了這個值,那麼可以通過監聽該JS文件來動態更新X-API-TOKEN。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章