ASP脚本攻防手册

时间:2023.10.20

站长专用!!

ASP脚本攻防手册

一、技术背景简介

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

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

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

小知识:

什么是webshell?webshell就是一个相应脚本语言编写成的,具有在线编辑、删除、新增文件、执行程序及SQL语句等功能的脚本文件,如著名的海洋顶端就是这样一个文件。(如图3所示) 脚本攻击之所以会闹得红红火火,正是因为这门技术掌握简

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

二、攻击篇

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

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

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

(一)暴库

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

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

我们先从conn.asp说起,conn.asp是一个很古老的暴库方法,它是通过直接访问数据库连接文件conn.asp使服务器产生错误,

通过服务器返回的错误信息提示暴出数据库地址的。(如图4、 5)所示就是用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.mappath(―data/data.mdb‖),其中server.mappath的作用就是把相对路径转换为绝对路径,只有经过转换,服务器才能正确读写数据据。

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

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

现在我们可以知道%5C暴库的原理了。当IIS遇到了%5C,即是―\‖时,IIS就会以为遇到了一个虚拟目录,便停止向上解析了。如果网站的数据库是在D:\wwwroot\bbs\data\data.mdb,

而遇到―\‖后就会被解析为D:\wwwroot\data\data.mdb,因为wwwroot下没有data文件夹和data\data.mdb文件,所以IIS就会报错,我们的目的就达到了。

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

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

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

2、暴出的数据库是以.asp结尾的,下载不了。

呵呵,其实.asp的数据库也是可以下的,我们只须将数据库地址复制下来,用网际快车等工具就可以下载了。不过,有的数据库中专门建了一个防下载的表,里面写了一条错误的ASP的语句,一般是<% nodownload%>,这时如果把数据库改为asp后缀的就下不了了。(如图9、10)

3、爆出的数据库中含有―#‖号,下载不了。

这个吗,也是可以解决的。还记得说%5C暴库原理时说过%5C其实是―\‖的16进制代码吗?同样的,我们也可以用―#‖的16进制代码%23代替―#‖,这样数据库不就可以下载了吗?(如图11)。

4、ASP的数据库下载回来后无法打开或下载回来的数据库打开要密码。

ASP的数据库当然无法打开了,你只须把它的后缀改为mdb就可以了啊!如果打开数据库要密码可以找一些ACCESS密码破解的工具,ACCESS的密码是很好破的。

5、我在网吧上网,没ACCESS怎么打开数据库?

可以用辅臣数据浏览器打开。

6、我遇到了一个超BT的网站,数据库中管理员密码全是16/32位无规律的密码,而且我一个个输入后都说我的密码不对,怎么回事啊?

晕绝,那16/32位的密码是经md5加密的,我们可以用一个md5破解工具把密码还原(如图12),不过md5可不是那么好破的东东哦。

7、数据库明明是.mdb的我却下载不了。

这个问题在非安全第5期提过,这时你可以用工具下载试试,如果还不行那就是可能是数据库是位于虚拟目录中的,那就没办法了。

8、我用%5C暴库显示―处理url错误,请与系统管理员联系‖,用conn.asp暴又一片空白。

用conn暴库一片空白是因为conn中加了容易错语句,而显示―处理url错误,请与系统管理员联系‖则是服务器屏敝了错误信息显示,这时暴库就没有用了。

(二)注入

在众多针对脚本系统的攻击中,注入可谓是闹得最红火的攻

击手段了。那么什么是注入攻击呢?来自官方的说法是:―当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生SQL注入攻击。SQL注入可能导致攻击者能够使用应用程序登录在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。‖

目前引起SQL注入的原因主要是程序员在编写帐脚本程序时对特殊字符过滤的不完全引起的,因为一个脚本系统中文件众多系统开发人员不可能每一个文件都考虑得十分周全,这样使我们有机可趁了。加上注入攻击的易学易用性,使得最近的注入攻击成风。

说了这么多还没玩过注入攻击的朋友们是不是跃跃欲试了呢?好,下面我就带领大家开始我们的注入之旅。

(1)工具篇

由于注入攻击的兴起,越来越多的注入攻击工具也随之出现了,而且这些工具也越来越傻瓜化,深受我们菜鸟的喜爱。下面我们就先讲讲怎么利用工具来实现注入攻击吧。

注入攻击的工具有很多种,这里我推荐大家用小竹的NBSi2,教主的HDSi和阿D的注入工具以及小榕的wedtwis图形版,这几种工具的界面分别如图13-16所示,下面我将主要以NBSi2进行讲解,其它几个工具的使用也是类似的,大家会用

NBSi2就可以了。

下载NBSi2后我们需要把NBSi2文件夹中system32内的文件复制到系统文件夹的system32内,win9X的可以放到system内,运行NBSi2登录后,我们就可以看到图13所示界面。这个界面是注入分析界面,如果我们知道一个注入点就可以在注入地址处填入注入点的url。现在我们不知道哪个地址可以注入,我们就可以来到注入扫描界面(如图17),在扫描地址那里我们填上欲扫描网站的url选全面扫描,然后点开始扫描,不一会下面就会列出可能存在的注入地址和注入的可能性高低如(图18)。

小技巧:如果用NBSi2扫描时扫www×××.com扫不到或扫到的全是可能性低的注入点,那么我们可以试着扫www×××.com/××.asp?id=××,这时你可能会得到一个注入可能性高的注入点。

我们选择一个注入可能性高的注入点,这个注入点的url会出现在下方的方框中(如图19),点方根旁的―注入分析‖,我们就会来到注入分析界面。开始分析后不久我们就可以得到这是一个数字型+ACCESS的注入点(如图20)我们在表名的大方框下点击开始猜解,这时会单出一个提示(图21)不管它,确定,不一会就会猜出表名,选择要猜解的表名,一般是admin,然后用类似的方法猜出列名,同时选中要猜解的列,用类似的方法就可以猜出列中的数据了。(如图22)就是我猜的管理员用户和密码。

当然得到的密码也可能是经MD5加密过的,这时我们就要破

解之后才能用了。只得到用户名和密码如果不知道后台地址也是没用的。那么我们就对该站的后台进行扫描吧。NBSiZ虽说也带有扫描功能,但因为它的字典不够强大,这里就以HDSI为例了(如图23)所示,打开HDSI后选择―后台地址扫描‖,在扫描地址处填上站点url http://www.×××.com,然后点开始扫描,不一会就会在中间的框中迅速闪过被扫描的地址,地址后面有一个用中括号括起来的数字,404表示页面存在,403表示禁止访问,500表示页面错误,200表示页面存在,302表示页面有转向,如果我们直接用浏览器访问上进几种情况的页面会出现图24-28所示的页面。

扫描结束后,HDSi会把可能存在的后台地址列到下方的框中(如图29),如果没有扫描后台则会列出你所填的扫描地址(如图30)。

好了,找到后台我们就可以用得到的用户和密码登录后台管理了,至于进了后台除了删文章发发公告和来吓吓管理员还有什么用,我们后面再说。

上面说的是针对ASP+ACCESS的注入,其实注入攻击最好玩的还是SQL注入,跟ASP+ACCESS的注入一样,ASP+MSSQL的注入在经过NBSi2的扫描→检测后也可以直接去读数据库的信息,但对SQL的注入而言,这么做显然是不见诱惑的,因为SQL的注入我们可以做更多的事。

在检测到一个网站有SQL的注入点时,NBSi2通常出现(如

图31)所示的界面,我们注意看这个界面ACCESS注入时的不同,它在上面多了一个小框,上面写出了当前的数据库名,连接帐号及权限等信息。在这里我遇到我是Sa权限,比系统管理员权限还大!现在我们不去扫用户数据去干什么呢?当然有得玩了!我们先用NBSi2的SQL弱口令扫描功能看看(如图32),这次我很幸运,遇到了台sa连接且口令为空的扒器,马上搬出SQL连接器吧,(如图33)所示,我们填上连接IP,用户名Sa,密码为空,好了,连上去了,赶快执行命令把自己升为系统管理员吧!

然后再开个3389或telnet,呵呵,恭喜你,又抓到一员小鸡了。

如果没有SQL弱口令怎么办呢?没问题我们还可以用NBSi2的另一个功能执行我们的命令。

虽然现在遇到的服务器SQL没有弱口令,但用NBSi2扫得的结果中我们知道当前用户是具有Sa权限的,这时我们可以用NBcommander命令执行器执行命令。选择―扫描及工具‖→―Nbcoommandaer命令执行器‖,如图33所示,然后来到了(图34)所示的NBcommander命令执行器界面,在―注入地址‖中输入注入点链接,并选择注入类型,然后句选―尝试回显结果‖及―执行Dos命令‖项,并在―命令‖中输入执行的系统命令,这里我要服务器开启了什么系统服务,就输入了―netstal-an‖点―执行‖后,即可看到服务器上,此时打开的服务了(图35)。

怎么样,现在可以执行任意命令了吧?什么,用惯widws记

不得这么多Dos命令?晕!不用急,NBSiZ很照顾小菜的。我们在―NB commander命令执行器‖中句选―执行Dos命令―后,NBSiZ会自动弹出常用的DOS命令,句选执行SQL命令也同样会弹出常用的SQL命令(如图36、37所示)。怎么样,这回直接选就行了吧,不用记那么多命令了。

上面说的都是基于Sa权限的命令执行,如果遇到一个没有Sa权限的机器呢?没关系,其实只要有Pablic以上的权限,我们就能遍历服务器的文件了。这时,我们要请出NBSi2另一个实用的工具―MBTreelist‖了,还是从―扫描的工具‖中打开―NBTreelist‖,我们来看(图38)所示页面。勾选右边―文件‖和―文件夹‖项,然后在―输入路径‖中输入要查看的磁盘路径。点列目录……,慢慢,不要急,先去泡碗面吃了回来先。吃饱了,回来也就看到了列出的目录信息了(如图39)。通过这个工具,我们就可以了解服务器上装了什么软件,数据库在哪等信息了,是不是行实用呢?

(2)手动篇

毛主席说得好:―自己动手,丰衣足食‖(哪来的鸡蛋?不要浪费国家粮食啊!)只用工具是永远得不到提高的。所以我们还要学会手动注入。

说起手动注入,就不得不说一个很高笑又很经典的漏洞。虽然这个漏洞现在已经很罕见了(其实也很常见的,前段时间我还在某知名大学计算机系的网站发现该漏洞,更搞笑的是这个大学还开有信息安全专业,汗),但却十分实用。我们找到一个站的

管理入口后,要以尝试在用户名和密码处都输入'or''='(如图

40),怎么样,直接进入后台了吧?类似的漏洞还有在用户名处输入管理员的用户名,如admin,密码处输入一个SQL语句,同样可以通过验证,常见的这类语句有a'or'1=1-- 'or1=1-- "or1=1-- or1=1-- 'or 'a '='a "or"="a'='a ' ) or (' a ' =' a 等。

好了,还是说说常规的生动注入吧。我们打开一个类似www.×××.com/×××asp?id=××的url后,先在这个url后加个单引号,变成www.×××.com/×××.asp?id=×× ',如果出现错误提示(图41),则说明可能存在注入漏洞。然后分别提交www.×××.com/×××.asp?id=××and 1=1和www.×××.com/×××.asp?id=××and 1=2,两次返回的页面不同,则说明有注入漏洞,我们就能开展下一步的行动了。(如图42、43)

下面先以ACCESS的数据库为例说说怎么手动猜数据库内容:

我们先来猜数据库的表名,猜表名的语句为在注入点后加上―and exists (select count from 表名)‖还是以www.×××-com/×××.asp?id=××为例,如果我猜这个站的数据库中有个名为123的表,那就提交www. ×××.com/×××.asp?id=×× and exists (select count from 123),结果返回错误页面(图44),说明数据库中没有123这个表,那我再猜有没有admin这个表,于是提交如下语句,www.×××.com/××.com/××.asp?id=××

and exists (select count from cdmin),返回正常页面图45),说明存在 admin表,我们可以继续猜列名。

小提示:

常见的表名有:admin

a_admin

x_admin

m_admin

adminuser

admin_user

article_admin

administrator

manage

manager

member

memberlist

user

users

userinfo

user_info

admin_userinfo

userlist

user_list

login

用户

密码

会员

登录

movie

movies

news

password

clubconfig

config

company

book

art

bbs

dv_admin等。

好,猜出存在admin表后,我们就可以猜到列名了,猜列名的语句是―and (select count(列名)from表名)>0。同样的,如果返回错误,则说明此列不存在,如果返回正常,则存在此列。我这里提交的是www×××.com/×××.asp?id=×× and (select count (username)from admin)>0,返回正常,继续猜,可知admin表中还有Password和id这两个列。

小提示: 常见的列名有:id admin

adminid admin_id

adminuser admin_user

adminuserid admin_userid

adminusername admin_username

adminname admin_name

adminpwd admin_pwd

adminpass admin_pass

adminpassword admin_password

administrator administrators

usr

usr_n

usrname usr_name

usrpass usr_pass

usrnam nc

uid

user userid user_id

name username user_name

pass userpass user_pass

password userpassword user_password

pwd

userpwd user_pwd

useradmin user_admin

pword

p_word

passwd

pass_wd

yonghu

用户

用户名

mima

密码

dw

oklook等。

好了,猜完表名和列名,我们就该猜列长度了,猜解语句为: and (selct top l len(列名)from表名>×。其中×是数字,我们需要变换这个×事猜列长度,如这里我提交www.×××com./××.asp?id=×× and (selct top l len (username) from admin>1、>2、>3、>4都返回正常,猜到>5时出现错误提示,说明正经列长度为5,另外,变换top后的数字就可以猜此列的第N行长度了。

激动人心的时候到了,我们要猜用户名和密码了。猜用户名和密码需要用ASC和Mid函数。用Mid(列名,N,1)截取第N位字符,再用ASC mid(列名,N,1))得到ASCLL码。这里变换N可得到用户名或密码的第N位的ASCLL码,猜用户名/密码的语句为:and (selelt top l asc(mid(列名N,1)) from表名)>×,×为ASCLL码,top后数字为该列第N行。这里我提交www. ×××.com/×××.asp?id=×× and ( select top l asc(mid (username, N,1)) from admin)>10,返回正常,继续提交>50,正常>100,显示错误,提交>90,正常……一直到>96正常,>97显示错误,得到用户名第一位ASCLL码为97,然后打开ASCLL码转换器(如图46),得知第一位是a,变换N值可猜出用户名为admin,变换列名可得密码。我们可用NBSi2试试,猜解的结果是一样的(图47)。

我们可以看到,对ASP+ACCESS的注入主要是靠猜测和运气,如果遇到一个常见的系统我们就可以下载源码看数据库中的表名和列名,从而直接猜用户名和密码,费时又费力。但对ASP+MSSQL的注入就不同了,它不但可以直接爆出表名和库名,还能直接执行一些命令,修改数据库等。怎样,心动了吧?下面就跟我来一起玩SQL的注入吧。

还是以www.×××com./×××.asp?id=××为例,如果用单引号,and 1=1和and 1=2检测到这个网站有漏洞,并以加单引号返回的错误信息中得知这个站用的是SQL的数据库(图48),

那么我们可以提交这么一个语句: having 1=1--可得到另一个错误信息,这里我提交www. ×××.com/××.asp?id=×× having 1=1--,返回如图49所示页面,其中admin.id就是一个表名admin 一个列名id。

继续提交www. ×××.com/×××/.asp?id=×× group by admin .id having 1=1--可得到另一个列名username,继续提交www. ×××.com/×××.asp?id=×× group by admin.id , admin .username having 1=1--,就能爆出另一个列名password(如图49、50)。

用类似的方法提交直到不再报错,我们就能得到当前表的所有列名为id、username、psaaword上面这个方法的原理为:在SQL语句中,hving 1=1--是与group by结合使用进行条件判断的,如果语句不完整,数据库会返回错误信息,并显示一个表名和一个列名。

但上面的方法只能暴当前表中的列,下面我教大家一个爆任意表名和列名方法。

此方法的相关语句为and (select top l name from (sekect top[N]id,name from sysobjects where xtype=char(85))T order by id desc)>1

其中[N]代表数据库中的第N个表,这里我们来提交:www.×××com./×××.asp?id=×× and (select top l name from (select top [10]id,name from bysobjects where

xtype=char(85)) T order by id desc)>1

这时就可以暴出一个表名为admin的表,(如图51)

要爆任意表名中的任意列名,语句为:

and (select top l col_ amelobject_id(表名),[N] from sysobjects)>1,我们这里提交:www. ×××.com/×××.asp?id=×× and (seclect top 1 col_namelobjet_id ( ?admin‘,1) from sysobjects )>1,返回(如图52)所示,我们就可以知道第1个列名为id了。(其中[M]为第M个列名)。

好了,现在爆出了表、列名我们就可以读其数据库中的数据了,这个命令的相关语句为:and (select top 1 列名from 表名where id=[N]>1,其中N代表第N条数据,这里我们提交www.×××.com/×××.asp?id=×× and (select top 1 asernaose from admin where id =1)>1,就会显示如图52所示情况,我们就知道了admin表中username第1条款数据为admin,用类似的方法我们还能直接读出密码,怎么样,方便多了吧?

如果是ASP+ACCESS的,我们得到用户名和密码也就完成了,但SQL的功能可大得多了,想想你有没有因为密码是md5加密过的破不出来而烦恼啊?在SQL的注入中,你完全不用担心这个,因为SQL的注入是可以修改数据库任意数据的,相关语句因为:―updata表名set列名=?内容‘where id=cf ′′′

如果我们这里提交www. ×××.com/×××.asp?id=××‖;updata admin set password=′123′ where id =?1‘‖我们就id

为1的管理密码改为123了,当然我们也可以新增一个管理员相关语为:―;insert into 表名valaes(内容)--,如我们提交www. ×××.com/×××.asp?id=××‖;inert into admin valaes (123) –就能能往admin中写入123了。

另外,SQL的注入还可以利用许多扩展功能,现在我只举几个常用的。

1、判断当前数据库权限www. ×××.com/×××/ asp?id=××and user>0返回(图53),其中值dbo就是读当前为dbo权限。

2、获得当前数据库名www. ×××.com/×××.asp?id=×× and db_name( ) >0,返回(图54),值―admin‖表明当前连接数据库名为admin。添加系统帐户并提权:

www. ×××.com/×××.asp?id=××; exec master .. xp_ cmdshell ‖ net user 123 123 /add. 添加用户名123, 密码123用户。

www. ×××.com/×××.asp?id=××; exec master .. xp_cmdshell ‖ net localgroup adminis trators 123 ladd , 把123升为管理员,其实,我们只须在xp_cmdsell后用引号写上cmd语句就能执行了。

其实SQL注入的功能是十分强大的,我就不再多说了,大家日后自己慢慢体会吧。

(3)常见问题:

我用NBSi2检测时提示暂来检测到注入漏洞,要我输入特征字符怎么办?

用手动注入,and 1=1和and 1=2检测,前后不同的字符便是特征字符,找一部份填进去,再检测就可以了。

服务器做了错误信息屏蔽,看不到报错处息怎么办?

这个对ASCCES的注入影响不大,看它什么时候出错就行了,对SQL注入会有点阻碍,可以用NBSi2代劳。

我输入一个单引号就说我非法注入,还记了我IP,我好怕啊!有什么办法吗?(图55)

这是加了防注入通用程序,想直接注入恐怕不行,但可以从这个程序本身的漏洞攻击,具体下面会讲到。

我找了很久也找不到注入点,怎么办?

你可以看看一些容易被忽略的地方,如打印、编辑、资料修改、自定义头像搜索等。如实在找不到可以用下面进的其它方法。

(三)旁注及cookies欺骗

(1)旁注

说起旁注,其实也就是看同台服务器上是否绑有多个站点,如果绑有多个站点,那么就算其中一个站点的脚本做得很安全,也可以从另一个站点进行突破。我们说的旁注一般指的是绑了不同域名的不同站点上的旁注,这里我称为广义上的旁注。其实,还有一种由于同一站点内使用了多套不同程序,其中一套也许比较安全,但另一套却是有漏洞的。这里我称之为狭义的旁注。如动力3.51+dvbbs7.1的站点中,dvbbs7.1也许比较安全,但动力3.51漏洞百出,这就是狭义旁注利用的一个例子。关于狭义的旁注比

较好理解和利用,我这里就不多说了,只是说一下一个极易被管理员忽略的狭义旁注的利用就可以了。

这个容易被人忽略的地方是ewebeditor,ewebeditor是一款优秀的基于网页的在线编辑器,很多系统都会选择它作为第三方插件,实现在线编辑的功能。但是,许多站长并不知道自己下的系统中还包含有ewebeditor,所以是很少有人会去改它的默认管理员用户名、密码数据库路径的,这就给我们带来了入侵的机会。

怎么判断一个系统有没有用ewebeditor呢?如图56所示,如果有图中标记处的按扭出现的系统就大致可以确定该系统是用了ewebeditor。

好了,下面在出现图56所示页面的地方直看源代码,我们现在得到了ewebeditvv的路径为edit,访问www. ×××.com/edit/admin_login.asp,来到图57所示页面,用默认用户名admin,密码admin试试是不是进去了啊?(图58)。如果不行,那就试试访问www. ×××.com lelit/db/ewebeditor.mdb,,看是不是能下载ewebeditor的数据库了呢?(图59)不过密码是md5的,又要慢慢破了。

简单提了一下一个容易被人忽略的ewebeditor,下面要开始讲我们通常讲的广义上的旁注了。引起这个旁注的原因,主要是因为我们现在使用的DNS域名是需要统一向总部位于美国的国际域名组织进行注册的,而国际域名组织为了方便管理等原因,将域名的信息放到了whois查询系统中,这样,只要用whois就能

查出某域名解析的IP是什么了,得到解析的IP后,我们可以继续通过whois的查询功能,在域名记录里寻找到所有解析到这个IP的域名信息,这样我们就可以知道一个服务器上绑了多少个站点了。

下面我们来具体实践一下,就拿我的cnnsafe.com开刀吧。 首先打开,(如图60)所示,在框中输入cnnsafe.com,点Go,来到(图61)所示页面,得到CNN安全网的IP,然后再点那个IP,就会来到(图62)所示页面,还绑有几个域名在这里的吗,呵呵,下面就可以看看其它站有没有什么词了,如果E文不好,也可以用老兵的工具查询,步骤是一样的(图63-65)。找到在同一服务器上的站后就用前面的方法检查站点安全性吧。

(2)cookies欺骗

现在有很多系统为了方便网友浏览,都使用了cookies技术以避免多次输入用户名和密码等信息,那么,我们只要对服务器递交给用户的cookie进行改写,也就是cookies欺骗,以达到欺骗服务程序的目的。

小知识:什么是cookies?cookies是一小段文本信息,伴随着用户请求和页面在web服务器和浏览器之间传递。用户每次访问站点时,web应用程序都可以读取cookies包含的信息。使用cookies能够达到多种的,所有这些目的,所有这些目的都是为了使web站点记住你。

上面我们大致了解了一下cookies欺骗的原理,下面我们来看一下它有成因,cookies欺骗的成因一般是对cookies的验证不严,如当年动网6.0的欺骗和前段时间leadbbs3.14插件美化版的欺骗。其中leadbbs3.14插件美化版的欺骗犹为严重,居然可以直登录后台,让我这个leadbbs的忠实fans着实心寒了一天晚上(第二天得知有漏洞的是美化插件版,而官方的3.14a补丁N年前就补了这个洞,汗)。为了大家对这个验证不严造成的cookies欺骗有感性的认识,征得偶朋友―白天的描[F·S·T]‖的同意,现将它写的对lead欺骗的文章引用如下:

经多次测试及在火狐兄弟们的帮助下,发现在Leadbbs 3.14美化插件版能欺骗成功(官方说是在某一时段发布的leadbbs3.14论坛存在这个漏洞,估计美化的人正好下了那一时段的版本。),而非美化插件版试了十多个论坛了都不行!所以这次的目标是Leadbbs美化插件版。首先在百度上输入关键字 下载 leadbbs美化插件版,,呵呵,为什么要打这个关键字呢?等会你们就明白了。搜索出了一大堆叶子,随便点了一个下面页面,看到了程序的演示地址,目标就是它的演示地址。进到演示地址的那个论坛,用IE注册了一个帐号,这时拿出mini浏览器,在URL中填入论坛地址,点get,但当页面打开到一半时突然出现奇怪的现象,如图1,

根本无法登陆。难道说他们早已发现这个漏洞然后自己开发

出了补丁?反复试了几次还是这样,后来查看了一下论坛首页的代码,发现原来是太极链计数器搞的鬼,嘿嘿,不怕,回到mini浏览器,点击settings这个选项,在 show GET-Dialog 这项前面打上钩,再在URL上输入论坛地址,点get,当页面载入一半时出现了一个框框,图2,

这时只要点cancel就不会发生图一这种现象了。下面开始欺骗,在管理团队中找到总斑竹的ID,在mini浏览器上选择cookies这项,看到cookies是这样的:

gbtoyAtBD=0; path=/

ASPSESSIONIDAQDRRDBD=DMMBDEPBNOGCKDGKBKEHGHAN; path=/

gbtoyTime=2005%2D3%2D25+19%3A48%3A19; path=/

gbtoy=pass=111222333&user=%B0%D7%CC%EC%B5%C4%C3%A8; path=/

其中user=后面的就是ID了,把总斑竹的ID换上去,先点一次get,没反应,再点一次post,呵呵,比较变为总斑竹了图3,接着在URL上输入 _blank rel=nofollow>/bbs/manage ,这个是leadbbs的默认后台管理地址,点get,进后台传马去了。

怎么样,可怕吧?其实,即使是验证没问题,还是可能造成

cookies欺骗的。其实对cookies的欺骗无外乎就是用户名和密码,以BBSXP为例,登录后,我们提取用户名为光芒果,密码为123456的用户的cookies为:其中usetname=―后面的就对应用户名光芒果,―passmrd=‖后面的就对应123456的MD5密码,有些cookies中还会包含url,这也是可以明显看出来的。前段时间BBSXP5.15不是传出个blog.asp的漏洞吗?其实这个漏洞是我首发的,只不过大过年的没有深入研究,告诉yuzi它又置之不理,活该它倒霉。现在我们拿出BBSXP暴库工具,(如图69)所示,输入注入点符信息,点破解,嘿,区长的Md5是不是出来了啊?(图70),下面我们拿出老兵的修改cookies浏览器(图71),登录这个BBSXP的论坛后,点击上方那个小锁头(图72),把username=光芒果中的―光芒果‖换为区长的用户名,―password=‖后面的换成暴出的md5密码。刷新,(如图73)所示,我们变成社区区长了,神吧!

对于cookies欺骗,我还发现了一种新的方法,就是以前台欺骗后台。大家也许要问我,前面那个leadbbs3.14美化插件版不是可以直接欺骗后台吗?不错,但并不是所有系统的前、后台的cookies都是相同的,如动力3.0,这可是个老系统,各方面的漏洞都很多,但行到的密码是Md5的,可不太好玩。别急,不是还有cookies欺骗吗?先在本地架个一样的系统,还是用老兵的修改cookies的浏览器,访问本地系统的后台,提取cookies,这下我们得到了cookies的样式,再把通过其它手段得到的欲入侵站点的用户名和密码等替换这个cookies的相应信息、保存起来,然后我们

到欲入侵站点注册一个用户点―发表文章‖, 然后切换到―源代码‖模式,如(图74)所示,输入<a href=―admin_index.asp‖> cookies欺骗</a>然后切换到―预览‖,把当前的cookies改为先前保留的cookies,点击―cookies欺骗‖链接,(如图75)所示,是不是进入后台了呢?下面我们就能进行一步的工作了。

关天cookies欺骗一节,好像还没人问过我什么,所以常见问题就先说了,有什么问题可以到提出。

(四)获取webshell

上面说了那么多的入侵方法,终极目的只有一个——获取webshell。

下面我就给大家讲几个常用的webshell获取方法。

1 上传

说到上传获得webshell,就不得不提大名鼎鼎的动网7.0SP2之前的文件上传漏洞了,那可是连官司方都没能幸免于难的啊!其中的成因吗不太好说,大概地说就是字符截断的问题。我们还是来看看怎么利用吧。这里我们要请出老兵的万能上传工具呢(图76),为什么叫万能上传工具呢?很简单,因为连大名鼎鼎的动网论坛都没有注意到这个严重漏洞,其它许多系统自然也避免不了,所以说这个工具是―万能‖的,下面我们找一个没打过SP2补丁的dvbbs,注册一个帐号,登录进去后看有没有禁止上传,如果没有禁止,我们就是提取当前cookies保存起来(怎么提取?

又忘了不是,前面不是说过可以用修 改cookies浏览器提取吗?)然后在万能上传工具处填好漏洞url,欲上传的文件和cookies等信息(图77),点―上传‖,不一会就提示成功了(图78),我们现在来访问这个上传后的文件,看,是不是得到一个shell呢(图79)

当然,并不是所有的系统都能用这个方法上传的。下面我再总结几个常见的上传方法。

1、进入后台直接上传。有些系统对管理员可是十分信任的哦,进了后台只要找到有上传的地方你就可以直接选匹马放上去,绝不会有任意阻拦(图80)。

2、添加上传类型上传。如果不能直接上传,可找找看有没有添加上传类型的地方,有的话添加一个ASP就可以了。当然,有些系统在代码中就限定了不允许上传ASP文件,不要紧,我们可以添加允许上传ASA、CER等文件,然后把.asp的后缀改为ASA或CER上传,一样可用的(图81)。

3、抓包上传。这里就要利用Win2000的一个小漏洞了,如果文件名的结尾是空格或―.―号,那么windows会自动把这个符号―吃‖掉。那么,我们就可以添加允许上传―ASP ‖文件,注意ASP后有个空格,ASP 可不等于ASP啊,所以代码里的限制就没用了。然后我们来到文件上传界面,选择一个ASP文件,先别上传。我们打开抓包工具Wsock Expert(图82),选择监控IE的上传窗口,然后回到上传界面,点击上传,提示上传失败。预料之中。我们来到Wsock Expert,找到刚才提交的数据包(图83),看到那个

mm.asp没有,我们在这个后面加个空格,再用NC提交,成功上传!

4、利用表单冲突上传。用这个方法最典型的就是动力3.51的上传了。我们同样注册一个用户,来到发表文章处。切换到―源代码‖模式,输入下面的代码:

<FORM name=form1 onsubmit="return check()"

method=post action=upfile_article.asp

encType=multipart/form-data><INPUT class=tx1 type=file name=FileName> <INPUT class=tx1 type=file name=FileName><INPUT style="BORDER-RIGHT: rgb(88,88,88) 1px double; BORDER-TOP: rgb(88,88,88) 1px double; FONT-WEIGHT: normal; FONT-SIZE: 9pt; BORDER-LEFT: rgb(88,88,88) 1px double; LINE-HEIGHT: normal; BORDER-BOTTOM: rgb(88,88,88) 1px double; FONT-STYLE: normal; FONT-VARIANT: normal" type=submit value=上传 name=Submit></FORM>

再来到―预览‖模式,是不是看到了两个选择上传文件的框却只有一个上传按钮啊(图84)?我们在第一个框处选择一个ASP文件,第二个框处选择一个jpg文件,然后点上传。可能会提示冲突,但我们返回―源代码‖模式,就可以看到我们上传后的Webshell地址了。

5、利用代码对文件类型的限制上传。现在许多代码为了安全都限制了上传ASP文件,但一些代码的限制方法实在令我不敢

恭维。我见过有些代码的限制方式是一遇到ASP就把它去掉的。那么,我们完全可以添加一个上传类型―ASASPP‖,这样一来,在上传过程中代码会把中间为ASP去掉,后缀的自然也就变为ASP的了。

6、利用其它上传工具。老兵的万能工具虽名为万能,但因为有些系统的上传代码与动网的是有差异的,所以这个工具对它就失效了。我这里还收集了别的一上上传利用专用程序。比如去缘雅境的,操作起来也十分简单,相信大家都会用的。

(2)写入过滤不完全,

因为现在许多系统都是可以用FSO功能直接写入其文件的,如果写入文件的过滤不完全,也可以直接往里写个webshell,如动易的conife.asp。这里我要讲的是leadbbs后台友情链接添加处写入webshell,我们来到后台的添加友情链接处,点―新增友情链接‖(图85),然后在―网站名称处填上冰方后浪子微型ASP后门式海洋的一句话木马,其它乱填(图86),然后我们用客户端连接,成功了吧!(图87)

除了对文件写入的过滤外,还有对数据库写入的过滤。当我们暴库得知数据库后缀为ASP,但用网际快车能下载时,我们就可以确定这个数据库里不包含ASP语句,那么我们只要找到一个可以写入数据库的地方,写入一句话木马,再用客户端连接,一样可以成功的。

3、后台备分及恢复

说起后台的备分和恢复获取webshell,我可算是颇有研究,也可以说是从这里起步学习技术的,先说说常规的方法吧,一般地,我们就是把一个ASP木马改为gif后缀上传,然后记下上传后的地址,下面,我们来到数据备分页面(图88),在―数据库路径‖处填自己刚才上传的文件名,在―备分后路径‖处填自己想要种马的地址,注意后缀为ASP(图89),点―备分‖后我们就得到了自己想要的webshell。

但是,如果像动力一样不允许定义当前数据库地址呢?一样可以的,我们通过暴库术式后台看到动力的数据库地址,因为ASP的话,我们一样可以把一个ASP木马改为gif的型式,然后上传,现在,我们来到―数据库恢复‖页面,看到没有,可以自定义恢复数据库的路径(图90),我们选择我们刚才上传的文件路径,恢复(图91),恢复成功后整个系统是用不了,但我们只须直接访问数据库地址就可以得到webshell了,当然,为了不被别人发现最好还是先把数据库备分好,得到shell后再用shell恢复回去。

上面一般说的方法就是我发表的第一篇文件《利用ACCESS得到webshell一文的补充》,至此,数据备分和恢复的利用似乎完了,其实还没有,还是那个动力系统,如果我们无法得到数据库地址,或者数据是mdb的,出放到了web外,我们不就用不了上面的方法了吗?

别急,再绕个弯子,我们来仔细看看这个动力系统,备分处限制了只能备分当前的数据库,不能备分其它文件,且备分后文

件后缀限为ASA,但可以自定义文件名。恢复处只能把数据恢复到当前数据库文件,如果遇上本段开头提的那三种情况,我们把一个shell恢复出来也是没用的。既然不能直接弄出来,我们就老老实实恢复一个比较正常的数据吧。说是比较正常,那是因为这个数据库虽然对系统没有影响,但还是做过一些手脚的。

我们拿一个相同系统的空数据库,把<%nodownload%>表中的内容改为一句话木马(图92),然后再在后台添加允许上传MDB文件,上传。下面到数据恢复处把刚上传的文件恢复回去,这时系统仍是正常运行的。我们重新用默认的用户名admin,密码admin888登录后,再到数据备分的地方,把数据备分出来,然后用客户端连接这个备分的文件就可以了。

对于限制没那么严的动网,我们可以直接备分就行了。虽然

7.1中对备分处做了限制(图93),但恢复处可设限制(图94),条件比动力宽松多了。

4、SQL导出。对于有注入点的SQL站点,我们还可以用黑客界中的丐帮帮主——就是那个臭要饭的发明的SQL写入导出大法得到webshell,其原理是在知道网站物理路径的情况下通过往SQL数据库中写入一个带木马的表,再将这个表导出,就得到webshell了。为了不让管理人员发现,我们还要删掉这个新建的表。那个臭要饭的还专门对此写了工叫getwebshell的工具(图

95),使用起来也并不复杂,我也就不再说了。

三、webshell的使用方法及提权

(1)webshell的基本使用方法

上面说了那么多,相信大家已经能够拿到属于自己的shell了吧。拿到webshell后该怎么使用啊?这是令许多菜鸟感到困惑的问题。下面,我就以海洋2006ASP木马为例说说webshell的一些基本使用方法。

首先,我们来下载海洋2006木马文件包,解压后会发现七个文件,它们分别是:2006.asp、unpack.vbs、2006×.exe、2006×

2.exe、2006Z.ese、hididi.ini、ReadMe.Txt。其中2006.asp就是ASP木马的主文件,我们用记事本打开这个主文件,把默认密码lcxmarcos改为自己想要的密码,当然不改也行),然后用前面说的方法把这个文件放到网上去。用密码登录后,我们就可以看到如图96所示页面。这里列举了十三项大的功能,我只是就其中的一部分来讲解,其它的请各位自己去摸索。

首选看第8项功能:FSO文件浏览操作器,FSO大家应该很熟了吧,点击进入后我们可以看到如图97所示的界面。如果权限足够的话,我们可以在这里对服务器上任何的盘符进行包括新建,删除,读取,修改,修改属性,运行等文件操作,具体怎么做不用我教了吧?

下面再来看wscripc.shell程序运行器,进入该功能后会出现如图98所示界面,如果服务器不支持FSO,可以尝试在这里里输入cmd命令执行,例如我这里执行dir c:\,看C盘的目录是不是都列出来了呢(图99)。另外,如里用默认的cmd路径无法执行,

我们可以自己上传一个cmd.exe到有执行权限的目录,然后填好文件路径再执行。

下面我们再来看看海洋2006ASP木马的第1—5项功能,这些有了是帮助我们收集服务信息的,有助于我们进一步的入侵。

进入―系统服务信息‖后,我们就可以看到系统打开的所有服务和详细说明(图100)。

进入―服务器相关数据‖后,我们就可以看到系统参数,系统磁盘,站点文件夹,终端端口等信息,如图101所示。

而―服务器组件探针‖则可以列出服务器上各组件的名称和支持情况(图102)。

―系统用户和用户组信息‖可以帮我们列出服务器上所有用户、用户组的详细信息(图103)。

客户端服务器交互信息是为我们列出服务器上Application、Session、cookies等信息的地方(图104)。

另外,第十一个功能―文件打包功能是海洋2006新增的一个亮点,它可以不用winrar打包服务器上的文件夹,无论是否支持FSO都能完成(图105),打包好后,我们可以在海洋2006木马的同级目录下找到hyfop.mdb文件,下载回来后用unpack.vb3解压就可以了(图106)。另外,如果服务器支持FSO,我们也可以用这个功能在服务器上解包。

海洋2006ASP木马还增加了―一些零碎的小东西‖,其中比较实用的有注册表的读取功能(图107),填斥了注册表的键值路径

后,点―读取‖就能读出注册表键值了(图108)。

除了海洋ASP木马的主体文件外,它的压缩包里的其它文件也是大有用途,刚才说了unpack.vbs是解压打包为拥的,现在来说说,生成一句话代码的c/s端。前面讲入侵时我讲过许多次一句话木马,这个一句话木马怎么得到呢?其实可以用海洋的c/s端生成啊!运行2006×.exe,运行后如图109所示,按―打开‖选择木马文件2006-asp,再填好服务端密码,按―转换‖就会生成一个名为2006.asp.htm的客户端,然后再按―生成服务端页面‖选择好存放路径及文件名后就生成一句话木马了,把这个木马插入到服务器的一个ASP文件中,用客户端连接,我们就可以往服务器写入任意代码了(图110)。

另外,我们还可以自己定制海洋2006的功能,如我们只需要FSO文件浏览器,我们就运行2006Z.exe(图111),在―页面选择‖外选FSO文件浏览操作器,选择好源文件2006.asp和生成后的文件各后点―生成‖一个只有FSO文件浏览器功能的木马就生成了(图112),是不是很方便啊?

(2)ASP木马的加密及防杀

随着ASP木马的泛滥,杀毒软件也打ASP木马列为严厉打击的对象。我们辛辛苦苦也得到了后台管理权上传webshell却被杀毒软件给kill了岂不太可惜了?别急,想想如果马儿被杀我们该怎么做呢?不错,要么换匹不被杀的,要么加壳。ASP木马也是一个理想,要么换,要么加密。

先说换吧,就ASP木马而言,海洋的名气最大,当然成为各杀毒厂商重点打击的对象了。既然海洋不能用,我们就用老兵的ASP站长助手6.0吧(如图113),不知是不是杀毒的真把这文件当成是站长的管理助手了,杀它的软件比杀海洋的少了许多,但其实这个文件的功能一点也不比海洋差。当然,ASP站长助手有时也是会被kill掉的,那我们就用海洋的一句话木马吧。可能是这一句话中的―特征码‖不太好找吧,我一直没见有杀毒来杀它。什么,嫌一句话木马的功能不能强?看来只能拿出我的密秘武器——ASP站长助手aweige修改版了。这个ASP木马是aweige修改过的ASP站长助手,目前能免除一切杀毒软件的查杀,默认密码也―*‖,进去后和ASP站长助手的界面是一样的。另外,文件不但目前免杀,可能永远都会免杀哦!因为我将此文件提交给杀毒厂商,他们竟说我的不是病毒(大家别BS我啊!)

还有一个免杀的方法就是对ASP木马进行加密。这里我们要用到一个工具——ASP木马加密免杀工具,这个工具操作很简单,如图114所示,选好木马的源文件,先点―转换‖,过一会后再点―加密‖就可以了,这里我就不多说了。

(3) weshell的提权

一个weshell的权限其实是很小的,我们要对weshell提权才能进行下一步的行动,下面我就给大家讲讲几个常用的提权方法。

1、serv-u的利用现在许多服务器都作为虚拟主机,自然大多数会选择serv-u做为stp的客户端,而serv-u的漏洞可是层出不穷,

我们现在就来看怎么利用serv-u提升webshell的权限吧。

首先,我们要看serv-u的servvDaemon.ini是否可写,如果可写我们就可以很快得到管理员的权限了。

打开servvDaemon.ini后,我们灰[Domain]这一栏下加上user9=[nnsafe|1|0,其中数字9可以更换,然后在后面加上

[USER=cnnsafe|1]

password=

HomeDir=c:\winnt\systam32

Timeout=60

Maintenace=system

Accessl=c:\winnt\system32\RWAMELCDP

SKETValues=

如图114,保存后我们用ftp客户端登录,用户名为cnnsafe,密码为空,然后执行quote site execnet user cnnsafe cnnsafe/add和quote site exec net localgranp administrators cnnsafe/add,你就得到管理员权限了(图115)。

如果ServvDaemon.ini文件不可写,我们还可以用serv-v的本地溢出漏洞提权。找个可执行的目录,上传我们的提权工具su-exe,然后到wscriptshell中执行,执行成功后我们就可以得到服务器权限了(图116)。

另外,我们还可以看能否转跳到pcanywhere的目录,如果可以,我们就下载CIF文件,得到pcanywhere的密码登录。

常用的方法还有下载服务器的SAM表用LC5破解和把ASP.dll加入―特权组‖,这里我就不多说了,大家可以自己去看相关资料。

三、防范篇

(一)暴库、注入的防范

有功就有防。对现在网络上流行的脚本攻击方法,虽然在整个攻击过程都是―合法‖的,防火墙在这里起不了什么作用,但防范的方法还是有的。

先来看暴库的防范,其实防范暴库的方法很简单。前面我们说过,暴库都是利用服务器返回的信息达到目的的。我们不让服务器返回详细的错误信息不就可以了吗?我们可以来到IIS的应用程序配备,在―调试‖选项的―脚本错误的错误信息‖中选择―向客户端发送下列文件错误消息‖(图117), 这样服务器出错时就只会返回我们设定好的信息,暴库自然也不可能了。

如果是虚拟主机用户,我们可以在conn.asp后加上一句代码,On Error Resume Next―,这句话的意思是,如果出错继续执行下面的语句,不理会那个错误。因为这句话下面没有什么语句了,所以出错时会返回一片空白,当然你也可以在后面弄个假的数据加地址骗人,呵呵。另外,我们还可以在II3的映射中设置禁止询问.mdb的文件,或把数据库放到web外,如是虚拟空间的可建个表名nodown,内容为<%nodownload%>的表,然后把数据弯库改为.asp方式运行,这样即使不被暴库也下载不了。

对于注入攻击,现在网上有很多专用的防注入程序,以火防方式的SQL通用防注入程序2.0完美版为例,我们只须要在有漏洞的页面加上一句代码<1--#indade File=―wrsky_sql.asp‖-->就可以实现对变量的过滤了,如果加在conn.asp后,因为对数据库进行调用的文件都要包含conn.asp,那么就可以对整站实现过滤,并且这个还可以自定义过滤的字符,把攻击者的攻击动作记录到数据库中。

另外,对于ASP+ACCESS,其实Md5也是入侵者的一大阻碍,除了我们自己把密码设复杂点,让对方难以破解外,我们还可以乞讨动Md5.asp中的部分代码来创造一个独一无二的Md5加密方法。打开Md5.asp,找到类似如下代码:把a=、b=、c=、d=后的那串随便选个改掉,只改一个就够了。这样一般是不会出错的。我们分别用原版的Md5.asp的改动后的Md5.asp加密密码123456,原版的密文(Md532)如下:

改动后的如下:

而一般的Md5破解工具都是按原版编写的,如果得不到我们改动后的Md5.asp文件,加密出来的密码是根本无法破解的。如图118、119所示。当然,我们也要保存好改动后的文件式记住改的地方,不然以后要用的时候我们自己也没有办法了。

这里再介绍一个最简单的替换Md5.asp的方法。因为许多系统都是有个默认的用户名和密码的,如果我们直接替换Md5.asp将无法登录后台,而且因为不知道改后的Md5.asp对某个密码加

密后是什么形式,我们也无法直接改数据库。其实,我们只须用类似cookies欺骗的方法就可以了。先用默认的Md5.asp运行,登录后台后到添加管理员的界面,填好一切后再用ftp把改后的Md5.asp覆盖上去,因为这时网站还有你管理的cookies,所以点提交后还是能成功增加管理员的。退出后默认的管理员就登不上去了,但新增的却是可以的。我们就可以用新增那个登上去进行管理了。

还有就是,我们一般都会把数据库地址放得很隐秘,但如果遇到有没做防护的,有暴库漏洞的,系统也是没用的。万一被别人知道了用户名和明文密码怎么办呢?其实我们还可以隐藏后台地址,如果找不到后台得到用户名和密码也进行了后台。像cnnsafe的后台就是用几个我熟悉的数字或单词,中间用十分BT的特殊符号连接,这样自己又好记,而别人呢?别说猜,如果不是记忆超强恐怕给他看到后台地址也要N久才能记住。

(二)上传漏洞及数据备分,写入过滤不严的防范

对于脚本系统,另一个十分危险的地方就是上传了。上传文件的漏洞是层出不穷,其实我们完全可以自己修改代码解决这个问题。常规的上传文件都是取原文件名的后缀与上传的后的后缀相同,只改文件名部分。其实我们完全可以把文件扣缀全改为gif,一般情况下是不会影响图片显示的,如果是要上传非图片文件可以把后缀全改为sar,当然上传前要求先打包,否则改动后不知道原来的格式会无法打开。

以动力3.51为例,我们要以把 中 的改为。

对于数据库的备分,我建议删掉文件的备分和恢复的页面,要备分式恢复数据都用ftp直接下载式覆盖。而对于写入过滤不严,只要在conn.asp后加上防注入代码,是绝对会过滤完全的。

(三)旁注的防范

经过上面的配置,想直接在这个站上找脚本漏洞是比较难的了。那么自然会考虑旁注的防范,主要是依靠服务器的权限分配,如果服务器配得好,旁注是毫无用武之地的。另外,我最近还发现一个经典的防旁注的方法,就是先将域名的A记录绑到一个无用的IP上,再在下面把同一个域名绑到正确的IP上,这样WHOIS查询就会去查询那个无用IP上的信息,当然得不到结果了。

(四)入侵后的防范防范

如果你不幸被入侵了,网站上留下了webshell该怎么办呢,不急,亡羊补牢为时未晚。当然最好的方法是把文件全删了重传,而且还要注意数据库中有没有被 马。不过这其实是很不实际的做法。

其实我们可以用思易ASP木马追捕工具对木马文件进行追捕。调用FSO,有删掉,新建和上传功能的都能找出来,而且还能用关键字进行查找,如图4所示,看,这个工具使用方便,一下就找出隐藏在网站中的webshell了。

四、防范工具的安全性

在―防范篇‖中给大家介绍了两个防范用的ASP文件,那这些

工具自身的安全性怎么样呢?

1、防注入程序的安全性

其实火狐的SQL通用防注入程序也有漏洞,在2.0中我们可以无限量地提交信息使记录注入的数据库不断无限增大,在3.0版本中者有跨站漏洞,同时3.1B以前的版本都没有对COOKIES注入加以防范。

2、思易ASP木马追捕的安全性

其实这个程序本身并没有什么问题,但许多管理同偷懒,用完后记不得把文件删掉,这样别人就可以利用它来遍厉目录,找到数据库后下载,如图128所示是我用google搜到的结果,随便打开一个看,数据库地址出来了吧,还是.mdb的呢,还不快直接输入arl下载(图129)。

好了,关于ASP脚本的入侵及防范我就说到这里了,下面主产说我的个人学习经验。其实我的经验总结起来就是要善于观察,善于举一反三。另外就是要多实践,多问N个为什么。最后提醒一下,社会工程学在入侵时是很好用的。其实我也只是一只菜鸟,蒙大家厚爱才得以与大家一起讨论技术。上面有什么不对或大家有什么意见可以反映到我邮箱feileng3@163.com或QQ76194753

更多相关推荐:
视频脚本范本

视频脚本-模板

广告脚本范例

情感广告作品篇名:《爱情纯度》服务产品:矿泉水时长:1分40秒

脚本范例2

秋天的图画脚本

分镜头脚本范本

听说刘若英mv分镜头脚本20xx0515179王玲玲

分镜头脚本范本

分镜头脚本范本脚本编撰人:***成员:***

拍摄脚本

作品主题:哎呦喂!爱,有味:爱,always!班级:高一九班小组长:XXX小组成员:XXX拍摄脚本说明一、创作分工二、拍摄脚本备注:

专题片片拍摄脚本范例

二十四载勤立业薪火相继铸辉煌二片头片尾AE特效合计2分钟三相关资料收集四监制人员名单总监制张展宇监制杨中发策划市场部统筹网络中心文案李雪美后期向长玉时间20xx年5月

一些广告脚本和大家分享

一KFC情人节广告30秒2月17情人节主题2月17情人节属于用心交流的你们在这则广告中通篇都不出现主人公的面孔我们用KFC的纸制咖啡杯可乐杯和吸管作为道具现场演绎出平凡而又温馨的一幕您是否还记得儿时玩过的自制小...

广告委托代理合同范本

广告委托代理合同本协议由下列双方订立并拟订客户与广告公司合作及经营细则甲方地址乙方地址1广告服务11根据甲方要求乙方为甲方的服务在地区提供广告服务包括策略运筹创作和制作媒介策划及购买12如有需要甲方将要求乙方负...

广告服务代理服务合同范本研究与分析

广告服务代理服务合同范本甲方乙方甲乙双方本着平等合作互惠互利的原则经友好协商根据中华人民共和国合同法中华人民共和国广告法等有关法律法规的规定就甲方委托乙方作为甲方XX华庭的广告服务代理包括平面创意撰文设计策划事...

影视广告分镜头脚本模板

片名寻天堂客户新疆阿勒泰地区喀纳斯广告语喀纳斯催发生命灵感

影视广告分镜头脚本模板

名称XXXXXX广告主题XXXX时间XXXXX地点XXXXX演员男1号XXXX服饰配件女1号XXX衣着服饰等描述男2号XXXX服饰配件女2号XXX衣着服饰等描述场地XXXXXXX说明拍摄的主要地点道具XXXXX...

脚本范本(46篇)