新型爬蟲如何重構「網站URL採集」這件小事?(內附視頻演示)
隨著 Web 發展的日益成熟,人們開始進入「數字化生存」時代。網上銀行、電子商務、個人空間、雲存儲等不斷湧入生活,Web 應用安全問題也日益凸顯。
根據 Gartner 的調查,信息安全攻擊有75%都是發生在 Web 應用而非網路層面上。同時,OWASP 發布的數據也顯示,三分之二的 Web 站點都相當脆弱,易受攻擊。
對 Web 應用的安全性進行手工測試和審計是一項複雜且耗時的工作,對於安全運維人員來說,基於安全的管理佔用大量工作時間。自動化的 Web 漏洞掃描器能夠大幅簡化針對安全隱患的檢測工作,有助於安全運維人員將精力轉向如何處理安全風險上來。
Web 漏洞掃描器
一般來講,Web 漏洞掃描器是基於 URL 的漏洞掃描工具,在工作時需要解決採集和核心檢測兩個關鍵問題:
如何採集輸入源(即採集網站 URL)
如何調用掃描插件(即對 URL 進行掃描)
怎樣去評價一個掃描器的好壞?首先要關注的就是:收集的 URL 夠不夠全面?資產蒐集不全,檢測準確率就無從談起。
發現率低下 傳統爬蟲的技術之觴
在 Web 漏掃中,採集輸入源的方式一般包括爬蟲、流量、代理和日誌,其中爬蟲是獲取掃描網站 URL 最常見的、不可或缺的一種主動採集模式。
Web 漏洞掃描器的爬蟲面臨著比其他網路爬蟲更高的技術挑戰,這是因為漏洞掃描器的爬蟲不僅僅需要爬取網頁內容、分析鏈接信息,還需要儘可能多的觸髮網頁上的各種事件,從而獲取更多的有效鏈接信息。
然而,現有的爬蟲受限於其在技術上的先天不足,給使用 Web 漏洞掃描工具的安全運維人員造成了諸多困擾:
1、 極易觸發 WAF 設置的 IP 訪問上限
通常情況下,網站的防火牆會對某個固定 IP 在某段時間內請求的次數做限制,如果沒有超過上限則正常返回數據,超過了,則拒絕請求。值得說明的是,IP限制大多數時候是出於網站安全原因針對 DOS 攻擊的防禦措施,而不是專門針對爬蟲的。但是傳統爬蟲工作時,機器和 IP 有限,很容易達到 WAF 設置的 IP 上限而導致請求被拒絕。
2、 無法自動處理網頁中的交互問題
Web 2.0 時代,Web 應用與用戶交互十分頻繁,給漏掃爬蟲造成了幹擾。以輸入驗證碼登錄為例,網站將一串隨機產生的數字或符號,生成一幅圖片, 圖片里加上一些幹擾像素(防止 OCR),由用戶肉眼識別其中的驗證碼信息,輸入表單提交網站驗證,驗證成功後才能使用某項功能。傳統爬蟲在遇到這種情況時,通常難以自動處理。
3、 無法全面爬取 JavaScript 解析的網頁
JavaScript 框架的誕生是研發工程師在效率至上時代的一大福音,工程師們得以擺脫了開發與維護之苦。毋庸置疑,Angular、React、Vue 等單頁應用的 Web 框架成了開發者的首選,JavaScript 解析的網頁日益普及,所以網頁中大多數有用的數據都是通過 ajax/fetch 動態獲取後然後再由js填充到網頁 DOM 樹中,單純的 HTML 靜態頁面中有用的數據很少,這也直接導致了 Web 漏掃爬蟲的爬取不全面問題。
傳統爬蟲與聚焦爬蟲
縱觀市面上常用的漏洞掃描產品,所使用的爬蟲通常包含以下兩類,即傳統爬蟲和聚焦爬蟲:
傳統爬蟲
它的工作流程是從一個或若干初始網頁的 URL 開始,獲得初始網頁上的 URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的 URL 放入隊列,直到滿足系統設置的一系列停止條件,爬取操作停止。