[点晴永久免费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 编辑过 |
关键字查询
相关文章
正在查询... |