(二)——攻破上传时候js判断文件类型
这次我们的目标是一套管理软件,我个人对asp程序的管理型软件比较感兴趣。偶然一次机会,发现了一套xx行业的管理软件,而这套管理软件还有很多行业版本,因为鄙人是菜鸟,问高手要的时候没有一个人搭理我,于是只能自己想些办法。
先在网上搜索一下这套管理软件,哈哈,运气很好,有在线演示,同样的,其他的管理软件都有在线演示,ping一下,发现所有的管理软件演示是在一台服务器上,实在是太好了。我已经有了第一套的asp源代码,相信找出来漏洞只是迟早的事情。
同样先配置一下本机的管理软件运行,找到可以上传文件的地方——例如本软件的资源管理里面的上传,选择海洋木马,上传,发现弹出对话框,您上传的文件必须为.............,乱七八糟一堆文字,意思就是不能上传asp程序了,于是就不看他了,看一下文件中上传的我们还是找一下上传文件,upload.asp,所有的上传都是用的这一个文件,程序非常严谨,而且用了组件,但是却没有发现任何限制文件类型的语句,这个时候,任何人都会怦然心动,哈哈,一定是js进行的限制,我们看过很多文章,我们只需要保存一个页面,然后修改一下提交路径,就可以上传任意的文件了,在这里,我们有了源代码,连页面都不用保存,本机运行后,修改一下路径,就可以直接提交。
好,回过头来,看程序,刚才我们进入了资源管理的添加功能,出来了上传界面,右键,察看源文件,faint,居然用的网页对话框,没有办法新建窗口,也没有办法察看源文件。晕了。这个时候我们打开本机这个程序的文件夹,找到并打开上一个出现添加按钮的页面的源代码,研究一下,发现弹出的对话框中的文件为xxxxxxx/xxxx/xxx/update.asp文件,好,找到这个文件,打开,呵呵,果然,有这样一段js if(s=="" ││ ";gif;jpg;png;wav;mid;mp3;zip;rar;lha;avi;mpg;mpe;ppt;doc;xls;txt;js;css;exe;swf;pdf;htm;xsl;xml;mdb;log;".indexOf((";"+s+";").toLocaleLowerCase() )<0)
{
alert("文件扩展名必须 为"gif;jpg;png;wav;mid;mp3;zip;rar;lha;avi;mpg;mpe;ppt;doc;xls;txt;js;css;exe;swf;pdf;htm;xsl;xml;mdb;log"!")
document.Upload.Image.focus();
return(false)
}
复制代码立刻del它,再找提交的路径 <FORM. name=Upload nsubmit=return(CheckForm()) action=Update.asp
method=post encType=multipart/form-data>
复制代码这个时候我们要注意,在上传文件中,一直有一个判断权限的function,这就意味着,如果想提交到远程的网站,我们不但要在action后面输入网络上的Update.asp的绝对路径,还要具有远程程序运行的权限,也就是说我们在运行本机的程序之前,要登录一下远程这个管理系统的演示,要不然,我们是没有权限上传的。
好了,修改完毕,终于到了最后一步,打开我们本机的程序,运行,打开远程演示程序运行,点击我们这里的某个目录下的上传,然后去到远程程序的相应目录下找,哈哈,真的上传了一个asp文件,不过文件名变得稀奇古怪,但事扩展名还是asp,后面一个下载的按钮,点击一下,海洋2005的界面就立刻出来了。