攻防實(shí)戰(zhàn):注水漏洞的利用和防范
??探測(cè)漏洞
??隨手找了個(gè)頁面(http://www.promet.ric.com.cn/openpage.asp?page_id=0),在參數(shù)0后面加上個(gè)單引號(hào)。返回的頁面顯示:500服務(wù)器內(nèi)部錯(cuò)誤。在IE的“Internet選項(xiàng)→高級(jí)”中有一個(gè)“顯示友好HTTP錯(cuò)誤信息”的選項(xiàng),取消前面的鉤。現(xiàn)在,我們可以看到詳細(xì)的錯(cuò)誤信息:
??Microsoft OLE DB Provider for ODBC Drivers 錯(cuò)誤 '80040e14'
??[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near ''./audit.asp,行18
??原來PROMETRIC用的是MSSQL,看來存在嚴(yán)重的注入漏洞(由于涉嫌攻擊步驟,此處不詳細(xì)敘述)。
??漏洞原理
??SQL注入的漏洞通常是由于程序員對(duì)它不了解,設(shè)計(jì)程序時(shí)某個(gè)參數(shù)過濾不嚴(yán)格所致。就拿剛才測(cè)試用的鏈接中的page_id這個(gè)參數(shù)來講,肯定就沒有進(jìn)行過濾檢查,源程序中的查詢語句如下所示:
??Select * From Table Where page_id='0'
??當(dāng)我們提交http://www.prometric.com.cn/openpage.asp?page_id=0 and 1=1時(shí),查詢語句就變成了:
??Select * From Table Where page_id='0' and 1=1
??當(dāng)我們提交其他的查詢語句時(shí),程序也會(huì)進(jìn)行執(zhí)行判斷,如:
??http://www.prometric.com.cn/openpage.asp?page_id=0 and user>0
??查詢語句變成了:
??Select * From Table Where page_id='0' and user>0
??user是MSSQL的一個(gè)內(nèi)置函數(shù),指的是當(dāng)前連接數(shù)據(jù)庫(kù)的用戶名,是一個(gè)nvarchar值。當(dāng)它與整型量0進(jìn)行大小比較時(shí),MSSQL會(huì)試圖將user的值轉(zhuǎn)換成int類型,于是MSSQL就會(huì)報(bào)錯(cuò):
??[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'web' to a column of data type int.
??錯(cuò)誤信息的后面顯示的是庫(kù)名、表名、數(shù)據(jù)等。如果對(duì)方屏蔽了錯(cuò)誤信息呢?這時(shí),我們就要利用Unicode、Substr等函數(shù)通過條件判斷來進(jìn)行猜測(cè)了。
??如何利用
??大家可以利用小竹開發(fā)的NBSI2 MSSQL(以下簡(jiǎn)稱“NBSI2”)工具。不過大家要注意,工具永遠(yuǎn)只是工具,只能用來提高效率和準(zhǔn)確性,自己一定得了解原理。
??通過NBSI2,我們順利地導(dǎo)出了PRO METRIC中文站數(shù)據(jù)庫(kù)中的表名和數(shù)據(jù),這里面包括各個(gè)考場(chǎng)的登錄用戶和密碼。
??通過跨庫(kù)查詢,筆者還發(fā)現(xiàn)BALANCE表中的BALANCE字段存放了考場(chǎng)預(yù)付款的余額信息,只要進(jìn)行跨庫(kù)更新,這個(gè)金額完全可以改變。
??這時(shí)候,筆者突發(fā)奇想,既然可以得到考場(chǎng)程序,我們是不是可以私設(shè)一個(gè)考場(chǎng)……
??心動(dòng)不如行動(dòng),馬上開始安裝考試系統(tǒng)。安裝過程非常復(fù)雜,需要config.dts文件(網(wǎng)站上沒有)。
??正當(dāng)筆者不知怎么辦的時(shí)候,突然發(fā)現(xiàn)了企業(yè)郵箱服務(wù),PROMETRIC為每一個(gè)考場(chǎng)都開設(shè)了新浪企業(yè)郵箱。
??這些考場(chǎng)會(huì)不會(huì)為了方便沒有改默認(rèn)密碼呢?果然很多考場(chǎng)沒有更改默認(rèn)密碼,筆者很輕松地就進(jìn)入了這些郵箱。經(jīng)過一番搜索,終于在一個(gè)考場(chǎng)的郵箱中找到了PROMETRIC發(fā)過來的config.dts文件……
??到這里,本次安全測(cè)試算是告一段落了。試想一下,如果私自安裝了考場(chǎng)程序,我們是不是可以隨意修改考生信息?如果更改預(yù)付金,是不是還可以免費(fèi)報(bào)名考試?而且利用考場(chǎng)ID和密碼,我們?cè)诰W(wǎng)站上可以更改任何一個(gè)考場(chǎng)的注冊(cè)信息,然后通過社會(huì)工程手段,克隆出一個(gè)虛假的考場(chǎng)是完全有可能的。
??后記
??不知大家還記不記得上期《電腦報(bào)》上有關(guān)Oracle注入漏洞的文章。雖然兩者在技術(shù)實(shí)現(xiàn)手段、危害上都不一樣,但它們有一個(gè)共同點(diǎn)——從一個(gè)小小的地方撕開缺口,從而造成極大的危害。
??在筆者所探測(cè)的網(wǎng)站中,有些網(wǎng)站只注意過濾地址欄中提交的非法字符,卻忽視了搜索功能中提交的字符,這樣網(wǎng)站依然會(huì)存在注入漏洞。
??網(wǎng)絡(luò)安全是一項(xiàng)非常重要的、整體性很強(qiáng)的工作,每一個(gè)地方都需注意,否則造成的損失難以估計(jì)。
(責(zé)任編輯:admin)
- ·兩個(gè)未公開的ACCESS方法的使用技巧
- ·如何拆分復(fù)制的Access 97數(shù)據(jù)庫(kù)
- ·兩個(gè)未公開的ACCESS方法的使用技巧
- ·用Access 2000有效地組織班級(jí)管理
- ·數(shù)據(jù)在Access與Office組件間自由流動(dòng)
- ·Access"智庫(kù)"培訓(xùn)--高效設(shè)計(jì) 敏捷開
- ·Access查詢的基本知識(shí)(二)(Office免費(fèi)
- ·Access設(shè)置宏的安全等級(jí)
- ·Access查詢的基本知識(shí)(Office免費(fèi)公開
- ·四種用代碼打開外部Access(MDB)的方法
- ·access操作或事件已被禁用模式阻止的解
- ·簡(jiǎn)述vba字符串,函數(shù),表達(dá)式等基礎(chǔ)術(shù)
- ·Access VBA 開發(fā)公開課講座
- ·Access設(shè)置信任位置
- ·Access應(yīng)用程序應(yīng)注意的幾個(gè)問題
- ·簡(jiǎn)析能判斷Access版本的窗體
- ·兩個(gè)未公開的ACCESS方法的使用技巧
- ·如何拆分復(fù)制的Access 97數(shù)據(jù)庫(kù)
- ·兩個(gè)未公開的ACCESS方法的使用技巧
- ·用Access 2000有效地組織班級(jí)管理
- ·數(shù)據(jù)在Access與Office組件間自由流動(dòng)
- ·Access"智庫(kù)"培訓(xùn)--高效設(shè)計(jì) 敏捷開發(fā) 之
- ·Access查詢的基本知識(shí)(二)(Office免費(fèi)公開
- ·Access設(shè)置宏的安全等級(jí)
- ·Access查詢的基本知識(shí)(Office免費(fèi)公開課)
- ·四種用代碼打開外部Access(MDB)的方法
- ·兩個(gè)未公開的ACCESS方法的使用技巧
- ·定期歸檔 Access 數(shù)據(jù)庫(kù)記錄
- ·Microsoft Access經(jīng)典入門之一
- ·用代碼設(shè)置ACCESS選項(xiàng)
- ·庫(kù)房入出管理系統(tǒng)
- ·用 Access 2000 打開 Access 97 數(shù)據(jù)庫(kù)時(shí)出
- ·“自動(dòng)編號(hào)”例程。
- ·Access數(shù)據(jù)庫(kù)設(shè)置技巧
- ·在ACCESS中自動(dòng)壓縮當(dāng)前數(shù)據(jù)庫(kù)
- ·如何診斷/修復(fù)損壞的 Jet 4.0 數(shù)據(jù)庫(kù)