第一种、将其 FilePath 值改为“File/yueyan.asp□”,其后的“□”表示二进制的
00(空的意思),这样,该变量提交入 uple.asp 后,Filename 值就变成了
“File /yueyan.asp□/201210010321944973.jpg”,服务器在读取这段变量
时,因为“□”是二进制的 00,认为该变量语句已经结束了,于是“□”后面的字
符也就被忽略掉了,这样一来,Filename 就成了:“File/yueyan.asp”,程序
再用 le.SaveAs 进行保存的话,这个文件就保存成了 yueyan.asp 文件。
第二种、第二种突破方法针对的并不是上述源码,而是类似的一个,就是源码
中不含这个语句的(能用方法 2 突破的上传一般可以用方法 1 突破):
7"4(",6*855"("0("955'为变量 formPath 加
上”/”
设 FilePath 的原值为“File/”(就是在截断的数据中发现变量 FilePath 的值)将
其 FilePath 值改为“File/yueyan.asp;”,这样,该变量提交入 uple.asp 后,
Filename 值就变成了 “File/yueyan.asp;201210010321944973.jpg”,服
务器在读取这段变量时,就会把 yueyan.asp;201210010321944973.jpg
当成是一个文件名,这样一来,程序再用 le.SaveAs 进行保存的话,这个文
件就保存成了 yueyan.asp;201210010321944973.jpg 文件。利用 iis6.0
的解析漏洞成功拿下 shell。
以 上 截 断 突 破 的 方 法 后 面 将 用 burp suit 进行 演 示 。 当 然 也 可 以 采 取 用
WinSock 抓包,然后用记事本保存提交数据并增加、修改相关内容,再用
WinHex 修改空格为二进制,最后用 NC 提交的方法。同时也可以利用明小子
的动网上传。
最 简 单 的 两 种 方 法 是 用 火 狐 rebug 修 改 隐藏 表 单 , 还 有 就 是 只 要 一 句
javascript,就可以上传 jpg 后缀的马获得 shell。后面将一一介绍。
—动易上传漏洞(双文件突破)
FileName(上传文件名)过滤不严造成的漏洞,上传文件名过滤不严的形式
是多种多样的。对文件名过滤不严的最简单的事什么也没过滤,或者过滤后不
进行重命名,这里就不分析以上两种。这里利用动易文章系统上传漏洞进行分
析。
来看一下其上传文件 Uple_Article.asp 中的部分源码:
*+
.$'#;05E7E<7EEEE5'//允许的上传文件类型
.2D$'#("05$#'#5'//存放上传文件的目录,注:以上
两个常量均在 cong.asp 文件内定义
#,'#,),2D(",-#,-#/' //变量定义
……………………'//此处省略部分代码,后面同样如此。
'/0#'//此为是否允许上传的变量,初始化为假,表示可以上传。
/#$#0# '//此为上传文件扩展名是否合法的变量,初始化为假,
表示的是不合法。
2D("02D$'#(" '//存放上传文件的目录
……………………