網站中常有可讓使用者上傳圖檔的功能,如會員類型的網站可讓會員上傳大頭貼,
但是常會淪為資安的漏洞..
以前維護某個asp的網站時,常被上傳不明的檔案,當然那個網站開發很久了,是很久之前的前人寫的,每天都要和不明人士戰鬥,研究了很久才發現他的手法:
不過當時的狀況離現在已經有段時間了,現今在IE的和IIS的安全性提高的前提下,沒又再去試過可不可行了..
當時的發現的方式是如下:
1)使用者登入為會員後,利用上傳個人大頭照的時候,先上傳一個正常的圖檔my.gif
然後瀏覽網站中的大頭照,便可得知照片的相對位置,如
http://markshu.webcsharpblog.com.tw/images/my.gif
2)利用網站可更換個人大頭貼的功能,重新上傳多個不同副檔名的照片,以便得知
程式碼中有屏除哪些負檔名,或允許哪些副檔名,如exe,xls,gif,jpg,bmp...
3)再次利用網站可更換個人大頭貼的功能,此時重新上傳個人大頭貼,然後實際是上
傳一個程式碼檔案hacker.asp
4)為跳過程式碼的檢核,因此上傳時將檔案改為hacker.asp;haha.gif
5)此時client便可執行
http://markshu.webcsharpblog.com.tw/images/hacker.asp;haha.gif
6)而hacker.asp中或許包含了檔案上傳功能或其他特殊功能
7)駭客便利用hacker.asp去延伸更多的危害,或上傳或執行有違害的
程式碼、script、執行檔、或其他檔案
如利用hacker.asp上傳複製系統中某目錄資料的script或上傳一個hacker.exe,
再上傳一個可以執行hacker.exe的程式碼,直到完全控制整個系統
不論現在還可不可行,重點是在開發網站時,往往可能疏忽了一些細節,就會被有心人士玩得很慘了
另外針對上面的問題可以用以下方式多加一層保護
1)程式碼檢察副檔名,排除特定的副檔名,如exe,asp,aspx,php...
2)程式碼控制上傳後的檔名,RENAME成自訂的邏輯檔名,如將hacker.asp;haha.gif
改為m6A7r7k592S3H2u8.gif
3)程式碼檢核上傳檔案的大小,如大頭照限制為20k以內
4)IIS中設定網站的存放圖檔資料夾權限,關閉指令碼及執行檔的權限
5)IIS關閉網站資料夾的瀏覽檔案目錄功能
6)使用url rewriter,隱藏網站真實的目錄結構或階層
順帶一提的是 有個叫做FCKEditor的HTML所見及所得編輯器,非常好用,但是那個上傳檔案的功能,需要注意把他關閉,而用自己做的上傳檔案功能,以便能掌握較多細節和安全..