Netsparker Standard 通過腳本進行自定義安全檢查
通過腳本進行自定義安全檢查
通過腳本進行的自定義安全檢查功能使您可以擴展Netsparker Standard的漏洞檢測功能。通過允許您編寫提供攻擊模式,分析HTTP響應并檢測潛在漏洞的腳本,它可以起作用。
您可以在四個類別中定義“自定義安全檢查”。他們是:
- 主動安全檢查
- 被動安全檢查
- 單一安全檢查
- 每個目錄安全檢查
主動安全檢查
通過Netsparker中的主動安全檢查,您可以定義攻擊模式。然后,Netsparker攻擊者會將這些攻擊模式注入到由爬網程序發現的參數中。您提供的每種攻擊方式都會導致對搜尋器發現的每個參數的HTTP請求。您可以選擇過濾將注入攻擊模式的參數類型,例如,您可以選擇僅攻擊JSON參數,而不攻擊querystring或POST正文參數。
在Netsparker攻擊者執行請求并收到響應之后,您將能夠確定HTTP響應是否易受攻擊,以及注入的攻擊模式是否引起了漏洞。
這是一個示例腳本:
var attacks = [ { id: '8613F6DB-9AD2-4E45-9B8F-308C810FF7DB', name: 'My New Pattern', attack: '%27AND+1%3dcast(0x5f21403264696c656d6d61+as+varchar(8000))+or+%271%27%3d%27', attackUsage: AttackUsages.Json + AttackUsages.Xml }];function analyze(context, response) { if (response.Body.indexOf('iNj3Ct3D') > -1) { return new Vulnerability(VulnerabilityType.PossibleSqlInjection); }}
腳本的第一行定義了一個名為的數組attacks ,其中包含攻擊模式對象。攻擊模式可能定義了以下屬性:
- id (必填): 這是GUID格式的唯一標識符。您可以使用Online GUID Generator生成它們。
- 名稱(必填): 這是模式的名稱。它顯示在“掃描策略編輯器”中。
- 攻擊(必填): 這是注入到參數中的攻擊模式。
- AttackUsage : 這是攻擊將被注入的參數的類型。您可以使用加號來組合多個值。默認為
AttackUsages.QueryPost(querystring和post參數)。 - AttackEncoded : 這是一個布爾屬性,指示是否已對攻擊進行了編碼,因此不需要根據當前參數上下文進行編碼(例如,URL編碼,XML編碼)。默認為false。
腳本的第二行包含analyze 針對掃描期間對攻擊請求做出的每個響應執行的功能。您可以在此方法中進行分析,然后選擇返回一個新的Vulnerability實例。該函數具有兩個參數:上下文和響應:
- 上下文變量包含有關當前攻擊上下文的信息,例如易受攻擊的參數和Request。
- 響應變量表示這是從Web服務器響應于包含在攻擊模式攻擊請求返回HTTP響應。
被動安全檢查
被動安全檢查不會在掃描期間發出任何額外的HTTP請求。對于搜尋器發現的每個HTTP請求,您可以編寫被動安全檢查腳本來分析響應。如果響應中包含任何易受攻擊的信息,這將使您能夠檢測到新的漏洞。
這是一個示例腳本:
function analyze(context, response) { if (response.Body.indexOf('java.io.FileNotFoundException:') > -1) { return new Vulnerability(VulnerabilityType.ProgrammingErrorMessages); }}
analyze 針對搜尋器已收到的每個HTTP響應執行該功能。該函數有兩個參數: context和response:
- 上下文變量包含有關當前被動分析上下文信息,例如掃描當前是否處于重新抓取相,或
IdentificationSource該請求的。 - 響應變量表示從web服務器到爬行請求返回HTTP響應。
單一安全檢查
每次掃描一次執行這些檢查。您可以分析掃描已開始的目標URL的響應并引發漏洞。
這是一個示例腳本:
function analyze(response) { if (response.Headers['Server'].indexOf('Apache') > -1) { return new Vulnerability(VulnerabilityType.ApacheIdentified); }}
對請求對目標URL的HTTP響應執行分析功能。該函數采用單個參數response的響應變量表示響應于所述目標URL請求從web服務器返回的HTTP響應。
每個目錄的安全檢查
這些檢查與“活動安全性檢查”非常相似,但是它們對所有目錄(URL段)只工作一次。通常,如果要檢查目標Web應用程序目錄中是否存在某些文件(例如未在Web應用程序上任何位置鏈接的資源),則應編寫“按目錄安全性檢查”。
這是一個示例腳本:
var attacks = [ { id: '5664f8d7-11b1-4c4b-a3d7-513e5b45771b', name: 'web.config detection', attack: 'web.config', }];function analyze(context, response) { if (response.Body.indexOf('<connectionStrings>') > -1) { return new Vulnerability(VulnerabilityType.WebConfigIdentified); }}
該attacks 陣列和analyze 功能的工作很相似,主動安全檢查。唯一的區別是攻擊模式的AttackUsage值默認為AttackUsages.FullUrl。這是確保攻擊者將攻擊模式附加到每個目錄URL末尾所必需的。
輔助功能
Custom Checks JavaScript環境包括以下幫助器功能。
netsparker.request
該netsparker.request功能可幫助您創建HTTP請求。此函數有兩個重載,您可以向該函數添加string 參數或請求參數。該函數返回一個Response實例,其中包含已檢索到的HTTP響應信息。
// The following makes a GET request to the specified URLvar res = netsparker.request('http://example.com/page.htm');// The following makes a POST request, sets a parameter and a headervar request = new Request('http://example.com/action');request.Parameters.Add(new Parameter('foo', 'bar', ParameterType.Post));request.Headers.Add('X-CustomHeader', 'quux');var res = netsparker.request(request);
登錄界面
該logUI 功能將消息記錄到Netsparker Standard中的“日志”面板中。
logUI('Hello World!');
日志
該log 功能將消息記錄到掃描日志文件(nstrace.csv)。日志消息的嚴重性為“信息”。因此,為了能夠在日志文件中看到此消息,請將日志記錄選項設置為信息級別。
log('Performing the HTTP request.');
logInfo
該logInfo 功能將消息記錄到掃描日志文件(nstrace.csv)。日志消息的嚴重性為“信息”。因此,為了能夠在日志文件中看到此消息,請將日志記錄選項設置為信息級別。
logInfo('Performing the HTTP request.');
logWarn
此logWarn功能將消息記錄到掃描日志文件(nstrace.csv)。日志消息的嚴重性為“警告”。因此,為了能夠在日志文件中看到此消息,請將日志記錄選項設置為“警告”級別。
logWarn('Looks like the server is taking too long to respond.');
logError
此logError功能將消息記錄到掃描日志文件(nstrace.csv)。日志消息的嚴重性為“錯誤”。因此,為了能夠在日志文件中看到此消息,請將日志記錄選項設置為“錯誤級別”。
logError('An unexpected error has occurred.');
如何將自定義字段添加到漏洞?
var vulnerability = new Vulnerability(VulnerabilityType.PossibleSqlInjection);vulnerability.CustomFields.Add('Foo', 'Bar');
Netsparker Standard 中文漢化使用教程