[这个贴子最后由烟圈配咖啡在 2006/11/29 06:04am 第 1 次编辑]
[watermark]目前不少玩脚本的朋友经常打交道的就是注入,上传,跨站这3个东东了,注入现在很多牛人已经公布了各种各样的利用方法了,可以说国内目前的注入方法千奇百怪层出不穷,思路极其灵活,这里插一句,最近隐式注入和cookie注入也在慢慢被大家发觉利用,不少朋友都在研究这2个方面,以后有机会我写一篇此方面技术细节的文章和大家一起交流。跨站的话这里也不再讨论,涉及的利用手法很多,且也有一定难度,以后也会写出相关文章和大家讨论,今天这里就把上传漏洞的利用方法和大家谈谈吧,希望能给大家带来帮助。
首先我们从上传漏洞的基本原理说起,上传漏洞是由于网页代码中的文件上传路径变量过滤不严造成的,以下就好是典型的存在此漏洞的代码:
这段代码中filepath就是文件上传路径变量,从头到尾都没对这个变量进行任何过滤,这样用户就可以任意提交修改为任何变量值,这里还要给大家介绍’\0’这个特殊终止符,这个符号是通知服务器停止接收此符号后面的数据。有了这个符号我们就可以上传我们所需要的文件,以asp文件为例的话,我们可以这样构造文件路径http://127.0.0.1/qingwa.asp\0/123.jpg,网页代码部分先进行判断发现此文件为jpg文件合法,于是开始向服务器传送数据,这样服务器接收数据时遇见\0符号时则认为是接收数据结束,此时就变为http://127.0.0.1/qingwa.asp,这样我们的asp文件就被成功传上去了,这里还要强调的一点是检测验证文件格式时,系统是从filepath右边向左边度读取数据的,动网6.0便是这种未过滤的典型代表。
其次下来是上传部分代码对\0符号进行了过滤,但在过滤过程中未对多个文件同时上传未做考虑,导致用户通过同时上传多个文件来改变文件是否允许上传的标志,从而达到上传非法文件目的。这种情况的典型代表就是蚂蚁影院收费系统了,其构造出来的利用页面代码如下:
其中第一个浏览框选择合法的jpg文件,第2个浏览框选择我们的非法类型文件。
蚂蚁影院系统代码首先检测第一个上传文件发现文件合法,于是将允许上传的标志设置为TRUE,此时第2个文件马上传入,但此时允许上传标志已被设置为TURE,于是文件直接被允许上传,这样我们的非法程序就被成功的上传了。
第三类常见的就是对上传类型的不完全过滤问题了,比如说他的代码检测一次发现asp就把这3个字符去掉,不过这样就能阻止我们上传了吗?答案是“NO”,我们如果把扩展名改为这样“aaspsp”呢,经代码过滤后我们得到的扩展名还是asp,结果还是被我们上传成功了,好象ewebedit这个在线编辑系统就存在这个问题,还有其他等等~不说了,大家慢慢找应该也能找到不少。
以上就是经常遇见的3大类上传漏洞问题,其他还有些明显的上传漏洞问题这里就不再陈述了,比如说有些地方根本连验证都没验证,怎么传都可以成功。这里给大家再顺便给大家总结下利用方法吧~~,一是利用网上的上传漏洞利用工具,二是NC提交,三是本地构造表单提交,为了提高成功率大家可以每种方法都试一下,如果是用工具的话就多换几个工具试试,有时能给大家带来意想不到的效果,不过这3种方法都是根据以上讲到的原理来实现的。
讲了这么漏洞的产生和利用,再讲下上传漏洞的防范吧。第一,禁止本地提交;第二,注意考虑处理同时上传多个文件的情况;第三,注意代码的逻辑性和顺序性;第四,也是最管用的一点,检验文件上传类型的时候最好采用只允许某些文件的方式,而不要使用禁止某些文件的方式。就写到这里吧~希望能给一些初学朋友带来点帮助,对于牛人就可以完全忽略掉这篇文章了。(偶个人再遇见注入漏洞后,一般不马上利用,而是喜欢先去找他的上传地方的利用方法,能找到的话和,呵呵就直接解决问题了,不必使用麻烦的注入了,可能是自己比较懒的问题吧,哈哈)
[/watermark] |