關於Oblog 2.52 help.asp漏洞的修補問題
來源:互聯網
上載者:User
關於Oblog 2.52 help.asp漏洞的修補問題
這是一件很有意思的事情。
OBlog是一套基於asp的Blog系統,目前的版本是2.52吧。
前些日子,出現了個help.asp檔案漏洞,
可以查看任意檔案的源檔案,包括asp檔案,後果自然是嚴重的。
現在,這個問題官方已經修補了,修改後的關鍵代碼如下:
<%
fname=trim(request("file"))
fname=lcase(fname)
fname=replace(fname,"asp","")
if fname="" then
fname="help/h_sysmain.htm"
end if
if right(fname,4)=".htm" then
show_help="當前位置:<a href='index.asp'>首頁</a>→blog使用協助<hr noshade>"
show_help=show_help&adodb_loadfile(fname)
show=replace(show,"$show_list$",show_help)
response.Write show
call bottom()
else
response.Write("輸入檔案不正確")
end if
%>
昨天某個QQ群裡,一個使用者突發奇想,說是修補後的上面這段代碼依然有問題。
下面來看看他的分析思路:
修補的代碼主要是兩方面,一個是替換掉所有的asp字串,防止查看asp檔案,二是只有尾碼是htm的檔案才能用。
首先,看看替換asp的代碼:
fname=replace(fname,"asp","")
所以如果訪問help.asp?file=conn.asp的時候,就變成了help.asp?file=conn.了
那麼如果我們訪問help.asp?file=conn.aaspsp呢,經過替換以後就變成了help.asp?file=conn.asp了。
所以,這個替換asp的保護措施不是很可靠的,還是可以繞過去的。
那麼,再看第二點,就是怎麼繞過尾碼是.htm的檢查
他的思路是這樣的:
前段時間不是有個上傳漏洞嗎,我們一般都是先抓包,然後修改資料,
構造檔案名稱,如a.asp%00.gif,
這樣,上傳程式還會以為這就是gif檔案,而實際儲存的時候只儲存成a.asp了。
那麼在這裡,不是也可以嗎?
構造一個conn.asp%00.htm的檔案名稱,這樣就能夠欺騙過fname的檢測,
然後在adodb_loadfile(fname)函數裡,真正開啟的是conn.asp檔案,
這樣就達到了目的。
從他的思路來看,還是比較合乎邏輯的,
而且,他分析的第一步,就是繞過對asp的檢查也是正確的
只是第二步,他的理解還是有誤的。
好多人知道上傳漏洞,可是到底什麼是上傳漏洞,
好多人就不清楚了。
而且在asp中,和php,perl裡面又有些不同。
具體可以參考一下這個文檔,
http://security-assessment.com/Papers/0x00_vs_ASP_File_Uploads.pdf
相信對大家理解上傳漏洞還是比較有協助的。