從零開始內建你的安全測試流程

一、 安全測試的意義

安全問題,沒發生的時候我們可以僥倖,一旦發生生產安全問題,對很多公司來說可能就是黑天鵝事件了。平台的安全,是我們測試中不可捨棄的一環,而且需要長期持續的關注。

二、 從哪裡入手

很多公司沒有專職的安全測試人員,一個是安全涉及的技術棧比較廣,要做好還需要對每一個技術棧有深入的研究,市面上的安全人才是很稀缺的;另外一般小公司去養一個專職的安全人員,往往會去對比第三方安全外包平台,發現提交外包平台會更划算。
團隊中沒有安全人員,特別是在敏捷的當下,也不可能每一次迭代都提交第三方外包,那作為測試人員,我們就需要去思考,如何在測試流程中插入安全測試這一環,畢竟生產出損,你是無法置身事外的,引入安全測試也能為公司帶來價值
那麼我們該如何開展安全測試呢,很多同學目前可能直接用APPscan或zap進行掃描,這也是一個方式,但有些業務相關的安全問題這種工具是無法識別到的,有些還是需要手工環節的接入,安全測試也是測試的一種類型,在整個軟體研發的生命周期中,我們是如何去保障產品品質的?同樣,我們也按照這個思路,去建設我們的安全測試執行路徑

20200825142812

三、 萬丈高樓從地起,打造我們的安全測試流程

3.1 需求階段

在需求評審階段,我們除了關注需求的合理性和價值,還要加入破壞者思維去審視這個需求–這個需求哪裡有漏洞,可以讓我去破壞他的規則。
比如商家做活動,評論下點贊越多的發送禮品,那麼我是不是可以通過介面去不斷的刷點贊,讓你介面tps過載,導致別人無法點贊,這樣我就有更大的機會拿取禮品。所以這樣就引申出來一個安全性需求–我們需要對活動的點贊和評論做限流處理。

3.2 程式碼層面
  • 靜態程式碼掃描

我們可以引入靜態程式碼掃描工具,比如靜態程式碼掃描,目前也有很多開源的靜態程式碼掃描工具,比如大家常用的sonar

  • 三方組件的掃描

除了靜態程式碼的掃描,開發人員在引用第三方依賴包的時候,獲取來源比較隨意,很可能下載的這個依賴包就包含病毒,程式中集成的第三方的組件也是需要做安全掃描的,比如node的依賴包安全掃描就可以選擇nsp這個開源軟體

3.3 數據脫敏

關於數據脫敏我們主要關注兩部分,一個是敏感數據的存儲是否做了加密處理,比如用戶的賬戶密碼、商家的卡密,這些都需要在數據落地的地方做加密存儲。我們需要通過查詢資料庫或者文件,確認數據是否做了加密存儲

另外一塊就是在傳輸的過程中,敏感數據是否做了加密處理,比如我們的登錄註冊功能,在前後端介面交互過程中,密碼是否做了加密處理;獲取簡訊相關的業務,介面是否直接將簡訊做了返回等。我們可以通過瀏覽器自帶的開發者工具F12或者第三方工具fiddler、Charles抓包測試。

20200825092402

3.4 跨目錄許可權

在商戶管理側,涉及到了商戶和子帳號的業務需求,子賬戶是可以定義訪問哪些頁面的角色。當我們沒有給子賬戶賦權的頁面,他是否可以直接通過瀏覽器中輸入url進行訪問,這個我們是需要進行測試的。
20200825092735

3.5 跨站腳本

跨站腳本,大家比較熟知的有xss,跨站腳本會導致會話被劫持、敏感資訊泄露甚至賬戶被盜的風險,最簡單的方式是在有文本框的地方通過構造js或者html保存,看是否做了轉義處理;另外也可以通過帶參數的url後面進行js傳值進行請求,查看是否執行了js
20200825101432

3.6 SQL注入

sql注入大家都比較熟悉,在介面上做資料庫相關的操作,我們可以構造一些傳入參數去改變sql的最終執行邏輯,比如針對查詢類的,//xxx.com/salay/userid=9898,我們可以再後面修改9898為9898 「or 1=1「,這樣在最終sql查詢中就變成一個始終為真的數據,如果存在注入問題會將所有人的薪資數據暴露出來。sql注入相關的測試我們可以借用sqlmap這個工具
20200825223645

3.7 越權

越權,簡單的理解就是A用戶操作了B用戶的數據,比如我們在下單過程中,商品A是給會員的購買的,非會員在獲取商品ID後,通過下單結構模擬下單商品A,如果能夠成功,就證明存在越權的問題,我們可以通過fiddler進行請求截取,然後修改傳參進行測試
20200825101717

3.8 上傳下載

文件的上傳下載主要有三點
一個是對用戶磁碟空間的大小限制,比如提供了一個上傳功能,用戶無限制的上傳大容量文件,導致磁碟成本巨大。
文件類型校驗
比如要上傳excel的,用戶上傳了html文件,這個是存在一定的風險的,特別是上傳後可以直接訪問資源文件,這樣用戶可以通過上傳的html做一些xss的攻擊
資源下載的安全控制,比如用戶下載自己的工資條,是這樣一個鏈接,//xxx.con/8888.xls,這樣就可以聯想修改8888這個值為其他值,查看他人的敏感數據

3.9 伺服器埠

伺服器埠的測試,對有些自建機房,直接通過物理機進行部署的會很有用處,比如有些不需要使用的埠對外開放了,惡意用戶可能利用該埠從事一些非法操作,我們可以通過nmap進行伺服器的埠掃描,非必須的埠要關閉

3.10 業務需求維度

上面的測試項是通用性的規則,結合具體的業務需求,我們也可以產出一些安全測試點,比如針對登錄註冊的需求,我們從密碼強度、驗證碼可以產出安全測試用例

20200825125916

針對有些用戶類的API介面,我們可以做限流的策略,比如獲取簡訊驗證碼,我們就要做一些風控策略,否則遇到惡意用戶,會造成公司簡訊成本損失

四、 結束語

安全是品質保障不可或缺的一環,作為測試人員,我們可以從最基礎開始去打造我們的安全測試流程,與其他測試類型一樣將安全的思想貫穿在整個軟體研發生命周期,做好安全品質內建。也希望大家一起交流你們是如何做安全測試的

福祿ICH·品質保證部
福小龍
Tags: