安全測試SQL隱碼攻擊


注入技術包括使用應用程式的輸入欄位注入SQL查詢或命令。

Web應用程式SQL隱碼攻擊

成功的SQL隱碼攻擊可以讀取,修改資料庫中的敏感資料,還可以從資料庫中刪除資料。它還使駭客能夠對資料庫執行管理操作,例如:關閉DBMS/刪除資料庫。

我們通過下面一個簡單的圖表瞭解這個漏洞的威脅代理,攻擊向量,安全弱點,技術影響和業務影響。

  • 威脅代理 - 匿名外部攻擊者以及擁有自己帳戶的使用者可能會嘗試從其他人那裡竊取帳戶。
  • 攻擊者的方法 - 在身份驗證或對談管理功能中使用洩漏或漏洞。例如,公開的帳戶密碼,用於冒充使用者的對談ID。
  • 安全弱點 - 開發人員經常構建自定義身份驗證和對談管理方案,但正確構建這些方案很難。
  • 如何發現缺陷 - 找到這樣的缺陷有時會很困難,因為每個實現都是獨一無二的。
  • 技術影響 - 可能會使某些甚至所有帳戶受到損害。一旦成功,攻擊者就可以做受害者可以做的任何事情。
  • 業務影響 - 漏洞的公開曝光。受影響的資料或應用程式功能的業務價值。

範例

以下應用程式在構造,很易受攻擊的SQL呼叫時使用不受信任的資料 -

String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";

動手實踐

第1步 - 導航到應用程式的SQL隱碼攻擊區域,如下所示。

SQL注入區域

第2步 - 使用SQL插入來繞過身份驗證。使用SQL隱碼攻擊作為老闆(‘Neville’)登入,而不使用正確的密碼。確認可以檢視Neville的組態檔案並且所有功能都可用(包括搜尋,建立和刪除)。

第3步 - 我們將注入一個SQL,以便能夠通過傳送引數為'a'='a' or 1 = 1來繞過密碼

第4步 - 提交登入後,可以登入Neville賬號,他是Admin,如下所示。

防止SQL隱碼攻擊

有很多方法可以防止SQL隱碼攻擊。當開發人員編寫程式碼時,他們應該確保它們相應地處理特殊字元。OWASP提供備忘單/預防技術,絕對是開發人員一個不錯的指南。

  • 使用引數化查詢
  • 跳脫所有使用者提供的輸入
  • 為終端使用者啟用資料庫的最低許可權