·10項最嚴重的開源web應用安全項目(OWASP)
1.A1注入
1.1注入簡介:
將不受信任的數據作爲命令或者查詢的一部分發送到解析器中,會產生諸如sql諸如,nosql注入,os注入和ldap的注入缺陷.攻擊者的惡意數據可以誘導解析器在沒有適當授權的時候執行非預期命令或者訪問數據.
1.2注入分類及載體
幾乎所有的數據源都可以作爲注入的載體,包括環境變量,所有類型的用戶,參數,外部和內部的web 服務,當攻擊者可以向解釋器發送惡意數據時,注入漏洞就產生.在遺留的代碼中,注入漏洞十分普遍.如SQL,LDAP,XPATH,NOSQL,Os命令中,xml解析器中,smtp包頭中,表達式語句和ORM查詢語句中.
原理:
方法:
- SQL注入的類型
- 簡單注入
- 永真式: 即”or 1=1 來保證無論如何都可以獲取數據.
- 錯誤語句:讓web應用構造錯誤的SQL語句來拋出異常,進而判斷數據庫類型
- 結束註釋:使用註釋符註釋剩餘的語句
- 聯合查詢:使用union all 後面可以寫出真正的要查詢的語句
- 盲注
- 註釋符號:–(MSSQL.mysql),#(mysql),/*comment*/(mysql)
- 單行用分號分隔開,運行多個SQL語句:MSSQL
- 判斷(IF,ELSE語句)
1.3簡單注入例子
- 1′ and 1=1;#,1′ and 1=1;判斷是否可以被注入
- 1′ or 1=1;#來嘗試或者所有的賬號信息
- 1′ union all select 1,2;#來判斷可以獲取的參數的個數
- 1′ union all select 1,(@@version);#來獲取數據庫的版本
- 1′ union all select 1, (database());#獲取數據庫名稱
- 1′ union all select 1,group_concat(column_name) from information_schema.columns where table_name=’users’;#’
1.4防護sql注入:
- 數據庫最小化權限的賬戶啓動數據庫
- 禁止數據庫執行系統命令
- 使用IDS,waf檢測是否有異常操作
- 連接數據庫的用戶權限最小化
- 統一管理錯誤信息
- 禁止向用戶提供錯誤信息
- 在服務器端過濾所有客戶端數據
- 審覈數據