針對API接口滲透測試時要注意以下方面:
盡可能的先獲取API規范描述文件,如在線接口文檔、api-docs.json文件、Swagger文件,RAML文件,API-Blueprint文件等,通過文件來獲取API端點和詳細調用方式及參數定義。
在無界面的情況下,除了API規范描述文件,通過Proxy代理方式,對流量進行分析也是獲取API詳情的一種手段。
關注可攻擊的點,比如請求參數、請求方法GET/POST/PUT/DELETE、是否存在授權繞過(令牌是否正確驗證,是否令牌有時效性)、是否存在注入點(MySQL、NoSQL)、是否存在批量分配的問題等。
關注通用的安全問題,比如是否存在Key泄露、是否存在暴力破解的可能、同一API多個版本不一致問題、XSS、CSRF等。
面向不同層次會話的攻擊,比如傳輸層是否使用SSL或使用可信的數字證書、應用層會話是否設置超時或采取限流熔斷機制等。
加強API接口安全的機制有以下這些:
數據加密機制:必須對數據加密,常見的做法對關鍵字段加密比如用戶密碼直接通過md5加密,現在主流的做法是使用https協議 ,在http和tcp之間添加一層加密層(SSL層),這一層負責數據的加密和解密。
數據加簽機制:數據加簽 就是由發送者產生一段無法偽造的一段數字串,來保證數據在傳輸過程中不被篡改。數據在傳輸過程中經過加密,理論上就算被抓包,也無法對數據進行篡改,但是我們要知道加密的部分其實只是在外網,現在很多服務在內網中都需要經過很多服務跳轉,所以這里的加簽可以防止內網中數據被篡改。
時間戳機制:但是有不法者不關心真實的數據,而是直接拿到抓取的數據包進行惡意請求。這時候可以使用時間戳機制,在每次請求中加入當前的時間,服務器端會拿到當前時間和消息中的時間相減,看看是否在一個固定的時間范圍內比如5分鐘內。這樣惡意請求的數據包是無法更改里面時間的,所以5分鐘后就視為非法請求了。
AppId機制:大部分網站基本都需要用戶名和密碼才能登錄,并不是誰來能使用我的網站,這其實也是一種安全機制。對應的對外提供的接口其實也需要這么一種機制,并不是誰都可以調用,需要使用接口的用戶需要在后臺開通appid,提供給用戶相關的密鑰。在調用的接口中需要提供 appid+密鑰,服務器端會進行相關的驗證。
限流機制:本來就是真實的用戶,并且開通了appid,但是出現頻繁調用接口的情況。這種情況需要給相關appid限流處理,常用的限流算法有令牌桶和漏桶算法。
黑名單機制:如果此appid進行過很多非法操作,或者說專門有一個中黑系統,經過分析之后直接將此appid列入黑名單,所有請求直接返回錯誤碼。
數據合法性校驗機制:這個可以說是每個系統都會有的處理機制,只有在數據是合法的情況下才會進行數據處理。每個系統都有自己的驗證規則,當然也可能有一些常規性的規則,比如身份證長度和組成,電話號碼長度和組成等等。
回答所涉及的環境:聯想天逸510S、Windows 10。
針對API接口滲透測試時要注意以下方面:
盡可能的先獲取API規范描述文件,如在線接口文檔、api-docs.json文件、Swagger文件,RAML文件,API-Blueprint文件等,通過文件來獲取API端點和詳細調用方式及參數定義。
在無界面的情況下,除了API規范描述文件,通過Proxy代理方式,對流量進行分析也是獲取API詳情的一種手段。
關注可攻擊的點,比如請求參數、請求方法GET/POST/PUT/DELETE、是否存在授權繞過(令牌是否正確驗證,是否令牌有時效性)、是否存在注入點(MySQL、NoSQL)、是否存在批量分配的問題等。
關注通用的安全問題,比如是否存在Key泄露、是否存在暴力破解的可能、同一API多個版本不一致問題、XSS、CSRF等。
面向不同層次會話的攻擊,比如傳輸層是否使用SSL或使用可信的數字證書、應用層會話是否設置超時或采取限流熔斷機制等。
加強API接口安全的機制有以下這些:
數據加密機制:必須對數據加密,常見的做法對關鍵字段加密比如用戶密碼直接通過md5加密,現在主流的做法是使用https協議 ,在http和tcp之間添加一層加密層(SSL層),這一層負責數據的加密和解密。
數據加簽機制:數據加簽 就是由發送者產生一段無法偽造的一段數字串,來保證數據在傳輸過程中不被篡改。數據在傳輸過程中經過加密,理論上就算被抓包,也無法對數據進行篡改,但是我們要知道加密的部分其實只是在外網,現在很多服務在內網中都需要經過很多服務跳轉,所以這里的加簽可以防止內網中數據被篡改。
時間戳機制:但是有不法者不關心真實的數據,而是直接拿到抓取的數據包進行惡意請求。這時候可以使用時間戳機制,在每次請求中加入當前的時間,服務器端會拿到當前時間和消息中的時間相減,看看是否在一個固定的時間范圍內比如5分鐘內。這樣惡意請求的數據包是無法更改里面時間的,所以5分鐘后就視為非法請求了。
AppId機制:大部分網站基本都需要用戶名和密碼才能登錄,并不是誰來能使用我的網站,這其實也是一種安全機制。對應的對外提供的接口其實也需要這么一種機制,并不是誰都可以調用,需要使用接口的用戶需要在后臺開通appid,提供給用戶相關的密鑰。在調用的接口中需要提供 appid+密鑰,服務器端會進行相關的驗證。
限流機制:本來就是真實的用戶,并且開通了appid,但是出現頻繁調用接口的情況。這種情況需要給相關appid限流處理,常用的限流算法有令牌桶和漏桶算法。
黑名單機制:如果此appid進行過很多非法操作,或者說專門有一個中黑系統,經過分析之后直接將此appid列入黑名單,所有請求直接返回錯誤碼。
數據合法性校驗機制:這個可以說是每個系統都會有的處理機制,只有在數據是合法的情況下才會進行數據處理。每個系統都有自己的驗證規則,當然也可能有一些常規性的規則,比如身份證長度和組成,電話號碼長度和組成等等。
回答所涉及的環境:聯想天逸510S、Windows 10。