[點晴永久免費OA]利用于ASP文件上傳漏洞的0×00截斷上傳木馬
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
這篇文章翻譯自:0×00 vs ASP file uploads,原作者是:Brett Moore,SecurityAssessment.公司的,本文寫于04年,原文在這里: www.securityassessment./Whitepapers/0×00_vs_ASP_File_Uploads.pdf,我之所以翻譯它是由于始終以來我對這個0×00有懷疑,感到有時能用有時又不能用,看了這篇文章,有點清楚了。 說白了一句話:只有form post時有用,而且只針對文件名變量,作用于asp的CreateTextFile等辦法。 簡介 用ASP寫的上傳,有個共性的問題:空字節可以被插入到文件名,這樣文件名可以被增加任意擴展名,而寫入文件的時候,空字節當前的局部都會被疏忽掉。這樣,我們就能夠繞過一些針對擴展名的校驗。 這很相似于Perl/PHP,不同在于這個空字節是怎么上傳到ASP程序的。 這種情形產生于:數據在不檢查空字節的情況下,比擬、驗證后,又直接被傳入FileSystemObject時。 本文將探討Poison空字節攻擊如何作用于ASP的上傳腳本。 Scope 本文是基于以下兩點研討:upload時的POSTmultipart/formdata、Scripting.FileSystemObject對象。 本文中,咱們集中于CreateTextFile方式,它被用于對文件寫入。可能其余的object function也有這樣的破綻。 0×00或者空字節在URL或者通常的form post中傳送不出去,因為服務器固然會以為這是字符串的成果然而并不會在文件名變量中存儲它的值。 而當文件名通過multipart/formdata的方式發送時,空字節將會保存在文件名變量中,這會影響對FileSystemObject的調用。 文件上傳 文件上傳通常是用輸入對象類型file跟編碼類型multipart/formdata。 application/xwwwformurlencoded不太合適發送大批的二進制數據或者非ASCII字符,multipart/formdata則比較適合。 一個multipart/formdata信息包含了很多個部分,當form被提交時,數據會被處理成multipart/formdata方式,這會把post的數據進行編碼,這些數據中當然也包括空字節。 文件保留 上傳成功后,文件會保存在服務器上的一個目錄中,下面的代碼就是通常的文件上傳處置代碼: Sub Save(filename) Dim objFSO, objFSOFile pathserver.MapPath("/uploads/") Set objFSO Server.CreateObject( Scripting.FileSystemObject ) Set objFSOFile objFSO.CreateTextFile(path + filename) objFSOFile.Write file contents objFSOFile.Close End Sub 當文件名參數傳到CreateTextFile函數,文件名中可能會包含空字節。這會使得創立的文件名被截斷,空字節后被忽略。 Set objFSOFile objFSO.CreateTextFile(path + filename) 該文章在 2020/11/30 15:24:42 編輯過 |
關鍵字查詢
相關文章
正在查詢... |