什么是sql注入漏洞
百度解釋:
SQL注入即是指web應用程序對用戶輸入數據的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙數據庫服務器執行非授權的任意查詢,從而進一步得到相應的數據信息。
個人理解sql注入的根本原因:
在寫與數據庫交互的語句時,直接將用戶輸入的數據跟sql語句進行拼接,沒有過濾內容,導致用戶可以修改整條語句的結構,產生不同的數據庫操作語句,沒有經過任何的過濾就直接放入數據庫引擎執行。
sql注入對網站導致的危害
攻擊者可以直接或者間接的操作數據庫。sql注入的危害,一直排行在owasp排行榜的top10高居不下,其危害性不言而喻,又能夠直接獲取數據又能夠獲取權限,但是注意危險行為,切莫越界。
如何挖掘出sql注入漏洞網站:
黑盒滲透測試
網站中的每個參數值,思考是否與數據庫進行交互。例如登陸頁面,獲取http頭(user-agent/client-ip等),訂單處理,查詢功能
白盒安全測試
通讀代碼,尋找數據庫相關語句,也可以結合相關功能點,針對性的進行尋找sql語句,黑白盒結,對量比較大的代碼會顯得效率高很多,主要是看對傳入的參數是否直接進行拼接,對傳入的參數是否進行了完整的過濾函數過濾。是否采用了其他sql語句編寫模式,例如php中的pdo是否進行了預編譯處理,當然預編譯也不是完全安全的。
發現這個網站sql注入漏洞能做什么
查詢數據庫內容,獲取網站數據,獲取后台登陸帳號密碼登入后台,修改內容釣魚等其他間接利用(權限較小時);利用數據庫直接進行提權,寫入一句話,執行系統命令(權限夠大時)等等。
怎么去運用此漏洞呢?
在互聯網上的sql注入跟rce不一樣,sql注入容易猜測網站跟數據庫交互的位置,所以黑盒產出sql注入漏洞也是非常的多的,但是相對於一個比較安全的
網站而言,進行了一系列的函數導入以及過濾,也是會讓黑盒變得非常頭大,白盒的優勢就是可以看到過濾了些什么,以及sql語句的編寫方式,是否是拼接
進入數據庫的等等,更加的具有針對性,就是代碼內容會比較繁多。要進行上下的追蹤查詢。這里提一句,sqlmap一款非常不錯的工具,以高自動化著稱,
節省了滲透時的不少時間,也相信大部分的人都知道以及使用過,但是工具還是工具,我們需要理解原理以及尋找漏洞點。
發現漏洞如何修復
常見的方式有好多,簡單的就是直接導入一個現成的過濾函數,比如像是360safe函數又或者是dedecms采用的過濾函數都是非常的好用,但是也不代表是
完全安全的,比如你內容采用了編碼進入,那么函數就會識別不出來而直接無效了。所以最重要的是編寫sql語句時的規范,比如預編譯等等操作,還有自帶的
過濾函數,這里插一句,在大多數情況下,只需要過濾單引號其實就能抵擋大多數的sql注入,除非你是沒有進行單引號包裹,直接進行拼接的數字型,那自然
過濾了單引號是沒有用處的。對傳入的值進行參數化也是一種防范方法,但是事總無絕對,例子就不舉了,具體去網上搜尋。還有就是不要以為買了waf
就高枕無憂了,waf並不能修補漏洞,waf在高手面前並沒有什么阻擋能力,關於waf的講解以后也會提及,寫的不是很好,有錯誤請糾正。