【網絡空間安全】SQL Injection_SQL 注入..

SQL 注入漏洞

攻擊者利用 web 應用程序對用戶輸入驗證上的疏忽,在輸入的數據中包含對某些數據庫系統有特殊的意義的符號和命令,讓攻擊者有機會直接對後臺數據庫下達指令,進而實現對後臺數據庫乃至整個應用系統的入侵。web

  • 掌握SQL注入
  1. 數據庫分類
  2. SQL注入
  3. 實現

數據庫分類

當今數據庫模型主要分爲兩種,即關係型數據庫和非關係型數據庫。redis

關係型數據庫mongodb

把複雜結構歸結爲簡單的二元關係(即二位表格形式),經過SQL結構化查詢語句存儲數據,保持數據一致性,遵循ACID理論(即原子性,一致性,隔離性,持久性),例如MySQL、SQL Server、Oracle數據庫

非關係型數據庫安全

被稱爲NoSQL數據庫,在特定的場景下能夠發揮不可思議的高效率和高性能,例如:memcaahed、redis、mongodb服務器

SQL注入

SQL注入原理svg

SQL注入攻擊的本質,服務器沒有過濾用戶輸入的惡意數據,直接把用戶輸入的數據看成SQL語句執行,從而影響數據庫安全和平臺安全。工具

SQL注入的本質性能

對於輸入檢查不充分,致使SQL語句將用戶提交的非法數據看成語句的一部分來執行。網站

兩個條件

  1. 用戶可以控制輸入
  2. 本來程序要執行的SQL語句,拼接了用戶輸入的惡意數據

危害

  1. 繞過登錄驗證:使用萬能密碼登錄網站後臺;
  2. 得到敏感數據:獲取網站管理員帳號、密碼;
  3. 文件系統操做:列目錄、讀取、寫入文件;
  4. 註冊表操做:讀取、寫入、刪除註冊表;
  5. 執行系統命令:遠程執行命令

形成緣由

  1. 動態字符串構建引發
    不正確的處理轉義字符(寬字節注入)、處理類型(報錯泄露信息)、處理聯合查詢、處理錯誤(報錯泄露信息)、處理屢次提交(二次注入)
  2. 後臺存在的問題
    後臺無過濾或者編碼用戶數據、數據庫能夠拼接用戶傳遞的惡意代碼
  3. 錯誤信息處理不當
    詳細的內部錯誤消息顯示給用戶或者攻擊者、錯誤信息能夠直接給攻擊者提供下一步攻擊幫助
  4. 不安全的數據庫配置
  • 默認帳戶:使用默認帳戶進行數據庫的操做管理
  • 權限:數據庫安裝好以後默認許可管理員權限,能夠進行一切操做,但正確的作法應該是申請普通身份運行服務器上的服務,並下降用戶權限,只限於本服務將此服務與本機其餘服務隔離開來。

瞭解了SQL注入,那麼如何實現SQL注入?

實現

SQL注入分爲自動化注入手工注入

下邊的工具是爲自動化注入準備的

全適配工具

Sqlmap【屬於SQL注入工具】

單適配工具

穿山甲注入軟件 ; 海陽頂端注入軟件【只適配於PHP注入】

其餘

NBSI , 阿D注入【屬於ASP \ JSP 注入工具 】 ; Havij ,Sqlid 【屬於SQL注入工具】

而後是手工注入的核心

其過程大體能夠總結爲:

  1. 判斷是否存在注入點;
  2. 判斷字段長度;
  3. 判斷字段回顯位置;
  4. 判斷數據庫信息;
  5. 查找數據庫名;
  6. 查找數據庫表;
  7. 查找數據庫表中全部字段以及字段值;
  8. 猜解帳號密碼;
  9. 登錄管理員後臺。

引用一句經典的話:SQL注入其實就是數據和代碼搶活幹

多言無益,我先擺上一個幾年前多數網站都有的漏洞

在網站登錄界面輸入用戶名的時候
直接輸入SQL代碼:‘whoever’;DROP TABLE users;
其原理:
首先執行第一條,分號爲分割符,服務器返回錯誤,而後執行第二條,會刪掉整個user表

後期更新,講SQL注入的其餘實例…

相關文章
相關標籤/搜索