[點晴永久免費OA]利用于ASP文件上傳漏洞的0×00截斷上傳木馬
這篇文章翻譯自: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寫的上傳,有個共性的問題:空字節(jié)可以被插入到文件名,這樣文件名可以被增加任意擴展名,而寫入文件的時候,空字節(jié)當前的局部都會被疏忽掉。這樣,我們就能夠繞過一些針對擴展名的校驗。 這很相似于Perl/PHP,不同在于這個空字節(jié)是怎么上傳到ASP程序的。 這種情形產(chǎn)生于:數(shù)據(jù)在不檢查空字節(jié)的情況下,比擬、驗證后,又直接被傳入FileSystemObject時。 本文將探討Poison空字節(jié)攻擊如何作用于ASP的上傳腳本。 Scope 本文是基于以下兩點研討:upload時的POSTmultipart/formdata、Scripting.FileSystemObject對象。 本文中,咱們集中于CreateTextFile方式,它被用于對文件寫入??赡芷溆嗟膐bject function也有這樣的破綻。 0×00或者空字節(jié)在URL或者通常的form post中傳送不出去,因為服務器固然會以為這是字符串的成果然而并不會在文件名變量中存儲它的值。 而當文件名通過multipart/formdata的方式發(fā)送時,空字節(jié)將會保存在文件名變量中,這會影響對FileSystemObject的調(diào)用。 文件上傳 文件上傳通常是用輸入對象類型file跟編碼類型multipart/formdata。 application/xwwwformurlencoded不太合適發(fā)送大批的二進制數(shù)據(jù)或者非ASCII字符,multipart/formdata則比較適合。 一個multipart/formdata信息包含了很多個部分,當form被提交時,數(shù)據(jù)會被處理成multipart/formdata方式,這會把post的數(shù)據(jù)進行編碼,這些數(shù)據(jù)中當然也包括空字節(jié)。 文件保留 上傳成功后,文件會保存在服務器上的一個目錄中,下面的代碼就是通常的文件上傳處置代碼: 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 當文件名參數(shù)傳到CreateTextFile函數(shù),文件名中可能會包含空字節(jié)。這會使得創(chuàng)立的文件名被截斷,空字節(jié)后被忽略。 Set objFSOFile objFSO.CreateTextFile(path + filename) 該文章在 2020/11/30 15:24:42 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |