ASP脚本攻击模式

上一篇 / 下一篇  2010-11-10 11:40:31 / 个人分类:测试

一、技术背景简介

随着互联网络的飞速发展,各种各样的大小网站不断地涌现,在这些大小网站中,动态的网站以其实用性、多样性占据了绝对的优势。

在动态网站中,站长多是以ASPPHPJSP脚本为系统架设的。从目前国内的情况看,ASP系统因其易用性,兼容性(也不排除微软垄断的原因),再加上网上ASP源码的丰富,深受各个站长青睐,这一点通过搜索可以很清楚地显示出来。(如图12)是分别用google百度搜索ASP系统的常见关键字.aspid=1的结果。

正是由于ASP系统在互联网上广泛的应用,针对ASP系统的脚本攻击最近闹得是红红火火。在这些攻击中,攻击者多是利用注入、暴库、旁注、cookies欺骗等手段获取管理员的权限,然后通过后台取得webshell控制整个站点,继而通webshell提升权限获取服务器管理权限。

小知识:

什么是webshellwebshell就是一个相应脚本语言编写成的,具有在线编辑、删除、新增文件、执行程序及SQL语句等功能的脚本文件,如著名的海洋顶端就是这样一个文件。(如3所示)

脚本攻击之所以会闹得红红火火,正是因为这门技术掌握简单,又加之许多傻瓜化的工具的出现,深受广大菜鸟的喜爱,同时也是各牛人们在服务器系统漏洞越来越少的今天入侵的另一妙法。本书通过攻防两方面的详细讲解及一些防范工具的安全问题,加上本人学习中的一些心得体会,力求让广大菜鸟们对脚本攻击技术有一个全面的了解,希望广大菜鸟们能喜欢。因芒果我技术有限,其中有什么错误还望牛人们指正。

二、攻击篇

俗话说得好,知已知彼,百战不殆。有攻才有防,现在我就带领大家走进脚本攻击之旅,相信大家看完这部份后也能使众多的ASP站点在你面前哄然倒塌哦!

好了!先来看我们攻击的总目的,那就是获取webshell,然后提权!

废话少说,下面我们正式开始我们的脚本攻击之旅!

(一)暴库

一般而言,我们要获取一个站点的shell,必须先获得对方的后台管理权限,要获得对方的管理权限当然先要得到对方的管理员用户各种密码了!得到对方管理员用户各种密码的方法有很多,最方便的当数暴库了。

常见的暴库方法有conn.asp法和%5C大法,不知道是什么东东啊?没关系,往下看你就知道了。

我们先从conn.asp说起,conn.asp是一个很古老的暴库方法,它是通过直接访问数据库连接文件conn.asp使服务器产生错误,通过服务器返回的错误信息提示暴出数据库地址的。(如图45)所示就是用conn.asp分别暴出动力系统用户和管理员数据库的例子

小知识:什么是数据库连接文件conn.asp。数据库连接文件是对数据库调用的一个文件,里面包含有被调用数据库的路径及数据库名等,如调用的是SQL数据库,则还会含有SQL连接用户名和密码等内容。另外,数据库连接文件并不都是conn.asp的,有的系统可能会用其它名字,但大多数是conn.asp的,这里我们只是用conn.asp代替类似文件。

直接访问conn.asp为什么能暴出数据库地址呢?那是因为conn.asp与调用文件相对路径出错了。

小知识:什么是相对路径,绝对路径?

相对路径就是相对于服务管理web根目录的路径,如服务器的web根目录为D\wwwroot\,这个目录有一个inc目录,那么我们在访问inc目录时只须在浏览器中输入www.×××.com/inc而不用输入www.×××.com/www.root/inc,这个inc就是相对于wwwroot为根目录的一级目录,而在这里这个inc的绝对路径为D\wwwroot\inc,为二级目录。

这样读可能大家会不太明白。我们还是再来看前面的动力系统,动力conn.asp是放在根目录下的inc目录运行的,而许多调conn.asp的文件都是在根目录下运行的,因此,考虑到执行目录的不同,conn.asp中数据库的相对地址是写成数据库所在目录/数据库名的,我们来看动力默认conn.asp代码,其中一句表示的就是数据库的路径。当conn.asp被根目录下的其它文件调用时,其连接的是根目录中data目录下的 *.mdb文件,而当我们直接访inc目录下的conn.asp时,根据conn中的内容,服务器会去请求连接inc目录下没有data目录,相对路径就变成inc/data/  。因为inc目录下没有data目录和     文件,服务器当然会报错了,图5中的错误提示内容。

很明显,它说的是inc下的data\*.mdb不是有效路径,而inc是我们当前所在的目录,所以我们只须把inc后的路径换成相对路径贴到web根目录就是数据库的路径了,这里我们得到的数据库路径为www.×××.com/dada/*.mdb,直接访问这个地址,看是不是可以直接下载了啊(如图6所示)。

下面我们再来看%5C大法。

对一些网站,我们只需要把站点url的最后一个/改为%5C就能暴出站点数据库(如图7)所示就是用这种方法暴出的数据库。

为什么%5C大法能暴出数据库地址呢?开始我也不是很明白,但后来参考了一下相关的文章,自己弄了一下IIS设置,大致地明白了%5C暴库的原理。

要明白为什么%5C大法能暴库首先要明的%5C代表的是什么东东。其实,%5C就是16进制代码中的\,但如果我们直接在浏览器中提交\IE会自动把\转换为/,而提交%5C是不会被转换的,最后%5C已经编译仍是表示\的意思。为什么遇到\就能暴出数据库呢?还记得我说conn.asp暴库时最初是怎么说的吗?conn.asp暴库是相对路径出错,IIS报错信息就暴出了站点数据库。而%5C就是绝对路径出错而引起暴库的。

一般地,在conn.asp中都会有这么一个语句

dbpath=server.mappathdata/data.mdb),其中server.mappath的作用就是把相对路径转换为绝对路径只有经过转换服务器才能正确读写数据据。

server.mappath读取的绝对路径的方法是这样的假设IIS根目录为D\wwwroot在这个目录下有一个bbs文件夹一套ASP论坛系统就放在这个文件夹中该论坛系统的数据库路径为data/data.mdb那么server.mappath读取的路径就为IIS根目录+相对路径D:\wwwrootbbsdatadata.mdb.

IIS还有一个特殊的功能,就是虚拟目录。还是上面的例子,不过这次bbs目录还在D:\wwwroot下,而是在E:\bbs,但通过IIS的虚拟目录设置,我们仍能把bbs视为是在wwwroot下的。不过这时的目录指向的是一个物理路径IIS为了解决虚拟目录也能正常访问的问题,优先查询了每个目录是否指向了一个物理路径,而这种查询是以做为标志的。

现在我们可以知道%5C暴库的原理了。当IIS遇到了%5C,即是时,IIS就会以为遇到了一个虚拟目录,便停止向上解析了。如果网站的数据库是在D:wwwrootbbsdatadata.mdb,而遇到后就会被解析为D:wwwrootdatadata.mdb,因为wwwroot下没有data文件夹和datadata.mdb文件,所以IIS就会报错,我们的目的就达到了。

下面是暴库过程中的一些常见问题及解决方法

1、暴库时并不显示×××错误,而是Http500错误。

这个问题吗……其实很简单,那是你自己没有IE进行设置所致。打开IE,到工具→internet选项→高级处把显示友好的http错误信息前的去掉,应用后刷新页面看看,数据库地址出来了吧?(如图8


TAG:

 

评分:0

我来说两句

Open Toolbar