在QA測試WebApp的時候我們可以做一些事,同時又完成Web安全測試,這該是多有趣的事情。
  傳統的安全掃描大部分都是基于爬蟲的,但是如果在QA測試的同時我們就可以廢棄爬蟲,拋掉安全測試最費時間,等待最久的環節。
  基礎架構:

  HTTP代理:
  我們采用HTTP Proxy的形式來捕獲所有HTTP請求,將所有請求記錄至Mysql中。
  數據庫架構:
  數據庫采用Mysql來記錄請求,我們可以給他5個Columns (id、requests、type、value、response)。

  id為主鍵requests紀錄著請求的url,
  type紀錄著請求的方式(e.g. get、post),
  value記錄著請求的詳細參數(e.g. userid=10000),
  response紀錄著當時請求的response,方便我們對比加入POC后的請求,用來判斷是否存在漏洞。
  這樣我們能解析出來的url就是:
  http://www.example.com/getuserinfo?userid=10000.
  攻擊模塊:
  在常見的Web應用中,可能存在很多風險,考慮到迭代和拓展,我們的每一個漏洞測試都是一個模塊(e.g. SQL injection、XSS、LFI…)。這樣我們可以很方便的增加后續的攻擊模塊,比如爆出一個新的漏洞時,我們只需要編寫一個新的POC并加入模塊中,就可以投入生產了

  考慮到研發周期的因素,攻擊模塊我們可以使用一些已經比較完善的開源程序來做(e.g. sqlmap),當整個爬蟲都不變的那么重要的時候,我們的攻擊模塊就可以自由配置。
  任務調度模塊:
  了更近一步的提到效率,與業務邏輯貼合,我們建立了一個任務分發調度模塊。這個模塊起的作用是把同一個URL里,同樣value的URL去重,e.g. http://www.example.com/getuserinfo?userid=10000這個URL中userid的值可能會發生變化,但是我們又不用去重復測試,我們可以去掉多出來的重復的請求。如果不這樣做的話,會嚴重影響我們測試的時間與效率。

  比如我的Web應用只有前端JS/HTML,我們就只需要使用XSS測試模塊。如果我的Web應用是一個resfulAPI的話,那我就或許可以只用SQL injection的模塊來測試。當然,你也可以一起使用,測試的時候可以很輕易的組合這些模塊。
  漏洞報表:
  當我們測試完應用后,我們需要知道哪個URL存在或者不存在哪些種類的漏洞。所以我們需要一個展現的頁面,這個頁面搭建會比較簡單,只需要從數據庫里讀出內容并且展示就可以了。