天天看點

asp.net虛拟主機的路徑洩露問題

       學習asp.net的時候發現,asp.net會把站點的asp.net的代碼作臨時編譯(我是這樣了解的,可能這樣的說法不是很對)放在WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files (如果使用的是2.0的frameworks,那麼就是WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files了),由此引發一個問題:如果該主機是虛拟主機,則虛拟主機上的所有使用了asp.net的站點的路徑資訊都會被洩露!

       首先用VS2005随便建立一個website,寫個hello world之類的aspx檔案,執行一下,然後到剛才所說的目錄下,找到website1(假設你建立的站點為website1),再進兩層目錄,可以看到字尾名為.cs或.xml的檔案,用記事本打開,可以發現編譯的資訊:

#pragma checksum "E:/Liswa/WebSites/WebSite1/App_Code/db_class.cs" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "A233AE738DF284277D8E2E285EEE4D93"

這時就已經洩露了該檔案來自E:/liswa/website1了.

   對于純asp的虛拟主機來說,洩露路徑可能造成的問題不大,因為各個站點可以用獨立的使用者啟動,是以各個站點之間是不能互訪的,但是asp.net的主機由于站點目錄都要有network services的權限,而asp.net程式都是使用這個使用者來執行,是以各站點間不能做到互相隔絕.(我配置asp.net虛拟主機時的對于asp.net的權限一直比較困惑,不知道這些複雜的關系應該怎麼樣才能做到最好,不過根據網上一些文章的意思,asp.net虛拟主機大都存在這樣的問題,無法進行站點間的有效隔絕).因為隻要知道另一站點的真實路徑,asp.net木馬就可以通路到另一站點.

     在實際的測試中,發現這個問題的确存在,在虛拟主機上進行我們文章開始時提到的目錄,可以看到幾乎所有站點都存在一個單獨的目錄.(還有一些沒有單獨的目錄,但是在root目錄下順次跟下去,一樣可以找到該相對站點的目錄.對于一個入侵者,可能的做法是,得到某一站點的asp.net的webshell後,如果支援asp,那麼上傳個海洋木馬,利用海洋木馬的搜尋檔案功能,搜尋目标站點的檔案名.譬如目标站點上存在一個叫做liswa.aspx的檔案,那麼就可以搜尋liswa,進而找到該檔案對應的編譯後檔案所在路徑(當然你也可以逐個目錄地翻,但可以告訴你,如果虛拟主機上站點較多,那麼你需要撿垃圾人員一樣的細心才可能找到對應目錄),然後随便找到一個字尾名為.cs或.xml的,打開它,就可以得到目标站點的真實路徑了.再在webshell中輸入得到的真實路徑,那麼目标站點的權限就得到了.

        由于對于asp.net的權限需求還不是很明了,暫時想不到有效的解決辦法,隻能祈求上帝減少虛拟主機上站點的漏洞了.