nikto—插件
插件允許其他代碼插入到Nikto的處理中,并執行標準插件無法實現的額外檢查。
插件可以使用多個hooks,它們是:
- 初始化(必需)
插件初始化是在分配目標之前執行的。在此階段,該插件應告知Nikto它的存在和功能。它可以選擇設置以后需要的任何變量。
即使插件不會在掃描中使用,也始終為每個插件調用此方法。任何數據庫加載或變量設置都應推遲到啟動hook。- 啟動(可選)
在目標枚舉之后,目標掃描發生之前調用啟動hook,并且只會在計劃運行的插件上調用該啟動hook。它只會執行一次。該hook通常用于加載數據庫或初始化插件的內存。- 偵聽(可選)
在偵聽階段,插件應查找在掃描階段可能有用的有趣信息。它可能會報告漏洞,但不鼓勵這樣做。掃描(可選)
掃描階段應該執行插件的工作-在這里,它應該查看Web服務器并返回任何潛在的漏洞。- 報告(可選)
報告階段用于將所有發現的漏洞導出為以后可以使用的格式,例如,以文件報告的形式寫入或導入到數據庫中。在此階段,不應測試Web服務器或報告新的漏洞。
此階段比其他階段稍微復雜一些,在執行Nikto的過程中可能會多次調用,如稍后所述- 預取(可選)
在對服務器的每個請求之前,都會調用預取階段。它傳遞給請求hash的副本,并且可以在將其發送到服務器之前對其進行修改。
通常用于每個請求都需要標準數據的地方,例如,如果需要身份驗證。
由于將對每個請求都執行此hook,因此為了提高效率,應將hook子項保持最佳狀態。強烈建議使用條件執行(請參閱下文)以確保僅在需要時運行它。- 后提取(可選)
在對服務器的每個請求之后,都會調用后提取階段。它傳遞了響應hash的副本,以便可以檢查內容或標頭特定的風險。
由于將對每個請求都執行此hook,因此為了提高效率,應將hook子項保持最佳狀態。強烈建議使用條件執行(請參閱下文)以確保僅在需要時運行它。
插件在當前上下文中以標準perl編寫。它們應該放在nikto配置文件中定義的PLUGINDIR中,并且文件名必須以.plugin結尾。
關于插件和執行順序需要掌握的一個重要概念是插件權重:每個階段將按照權重定義的順序執行所有已定義的插件。插件的權重定義為1到100之間的數字,其中1是高優先級,而100是低優先級。權重相等的插件將以未定義的順序執行。
Nikto中文使用教程