SQL注入攻擊的總體步驟是:
不過,我們是「絕對領域」的專題,這些都不會教哦 =v=+
只會跟大家說一下要怎麼去驗證 & 修補這些漏洞…
除了安裝原始碼檢測軟體會有建議以外,也能參考一下修補方式嘛~
SQL Injection 可以做到什麼?
獲取使用者帳號密碼並非法登入系統
新增、修改、查詢出所有網站資料庫內容,也就是所謂的敏感資料 =v=+
刪掉整個 DATABASE
一般能用 SQL 執行指令均可透過SQL Inection 造成破壞。
像說一般我們常用的註解符號://, -- , /**/, #, --+, -- -, ;%00
都是能拿來當作攻擊的方式之一
而且如果沒有地方輸入,我們可以在網址列輸入、網頁右鍵去修改指令、密碼包或是破解工具…
但只要把這個漏洞修補起來,就可以防止被攻擊者從這個漏洞鑽進來!
線上實際教學:https://www.codebashing.com/sql_demo
歡迎大家來試著自行驗證看看!!!!!
.HTTP://xxx.xxx.xxx/abc.asp?p=YY'(附加一個單引號)
若頁面異常或無法正常顯示,就代表這個程式頁面「可能有SQL Ineciton」漏洞。
.HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1 執行結果正常,
而且與HTTP://xxx.xxx.xxx/abc.asp?p=YY 運行結果相同
.HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2 執行結果異常
同時滿足以上三點,就有SQL Injection漏洞。
輸入欄位中加入「可能造成破壞的語法」
以Acunetix 供線上測試的弱點網站為例
即使密碼隨便輸入,也能登入至系統中了…
HP Webinspect 供線上測試的弱點網站:
http://zero.webappsecurity.com/index.html
IBM 供線上測試的弱點網站:
http://demo.testfire.net/
Acunetix 供線上測試的弱點網站:
http://testasp.vulnweb.com/
http://testphp.vulnweb.com/
http://testaspnet.vulnweb.com/
(1)輸入資料檢查 : 針對任何由前端取得的資料都應妥善處理,其資料接收語法包括:
(2) Prepared Statement : 此種存取資料庫的程式寫法主要是將SQL執行語句邏輯與使用者輸入資料分開處理。
(3) 資料庫連線管理 : 當網頁程式在連線資料庫時,不可使用高於所需的權限登入,例如使用Microsoft SQL Server的sa權限,或mysql的root權限來存取一般使用者資料庫。除此之外,也應避免使用 dbo 權限存取,避免資料庫內容遭惡意更動。
(4) LINQ To SQL : 如果是微軟解決方案開發程式的使用者,可以考慮.NET Framework 3.5中所附元件LINQ To SQL來簡化資料庫相關語法的開發,並利用預設的資料庫呼叫方式來迴避SQL injection問題。相關元件的參考網址 : http://msdn.microsoft.com/zh-tw/library/bb386976.aspx
以下僅供驗證參考
hash-identifier:(需要安裝python) 解讀可能的加密方式
freemd5 http://freemd5.com/
b374k https://github.com/b374k/b374k/releases
前輩提出來的建議:
在表單GET模式或POST模式的參數在進入SQL或其它處理前,預先攔截。如果有發現有異常的表單變數就轉址到 SafeUrlCheckError.asp
https://hitcon.org/2015/CMT/download/day1-a-r4.pdf
SQL Injection在網路上的教學很多,但~難得有篇這麼仔細的!
謝謝大大!!!
但後來我覺得文字太多太煩了,等有時間再來精簡化 XDDDD
真心覺得教學動手做網址棒棒噠~
線上實際教學:https://www.codebashing.com/sql_demo
哈!謝謝分享,這個我有按左邊的step玩完XD