分享
 
 
 

关于ASP.net服务器的入侵方法详解

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

有个朋友在QQ上问了我关于ASP.net服务器的入侵方法我将ASP.net上的一些入侵常用手段告诉大家

1.ASP中常用的标准组件:FileSystemObject,这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何有权限的目录和文件进行读写、删除、改名等操作。FSO对象来自微软提供的脚本运行库scrrun.dll中。使用下面的代码就可以在ASP中创建一个FSO对象:Set fso = CreateObject("Scripting.FileSystemObject")我们使用fso对象包含的属性和方法,如Drive、Drives、Folder、Floders、File、Files等对服务器的磁盘、目录和文件进行读、写、删除等操作。这一强大的文件系统访问能力给ASP共享空间提供者带来了严重的安全问题,很多ASP空间的管理员都删除此组件或将这个组件改名以避免用户使用这一标准组件。删除组件或组件改名确实是一个简单的方法并且也很有效,但是却使广大用户无法使用它的强大的功能。网络上还有一种看起来很美的方案,它允许用户使用 FileSystemObject 组件又不影响服务器的安全,即对每一个用户都设置一个独立的服务器用户和单个目录的操作权限。但是这种方法是有问题的。因为ASP和ASP.NET中在这方面的问题十分类似,所以我们将在ASP.NET的相应解决办法部分详加说明。在ASP.NET中我们发现这一问题仍然存在,并且变得更加难以解决。这是因为.NET中关于系统IO操作的功能变得更加强大,而使这一问题更严重的是ASP.NET所具有的一项新功能,这就组件不需要象ASP那样必须要使用regsvr32来注册了,只需将Dll类库文件上传到bin目录下就可以直接使用了。这一功能确实给开发ASP.NET带来了很大的方便,但是却使我们在ASP中将此dll删除或者改名的解决方法失去效用了,防范此问题就变得更加复杂。在讨论解决方案之前,我们先来看一下怎么来实现上述的危险的功能

2.文件系统

我们还要使用System.IO名称空间的其他几个类是:

System.IO.Directory:提供用于创建、移动和枚举通过目录和子目录的静态方法的类

System.IO.File:提供用于创建、复制、删除、移动和打开文件的静态方法的类

System.IO.FileInfo:提供创建、复制、删除、移动和打开文件的实例方法的类

System.IO.StreamReader:实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。

每个我们所使用的类的属性和方法的具体用法我们将以代码注释的方式在程序中加以说明。

System.IO名称空间在 .NET FRAMEWORK提供的mscorlib.dll中,在使用VS.Net编程之前需要将此Dll引用到此项目中。

我们所编写的程序都使用了Codebehind方式,即每一个aspx程序都有一个对应的aspx.cs程序,aspx程序中只是写与页面显示相关的代码,所有逻辑实现的代码都放在相应的aspx.cs文件中,这样就可以更好得做到显示与逻辑的分离。由于我们的目的不是讨论Codebehind技术,所以就不在对此多加讨论了。

在这篇文章里,我们只介绍几个主要的类及其关键方法的用法,详细程序请查看附带的源代码。

程序一:显示服务器的当前信息和全部逻辑驱动器的名称的程序listdrivers.aspx

主要方法1:我们使用 GetSysInf() 方法来得到服务器的当前环境和平台的信息

//获取系统信息的方法,此方法在listdrivers.aspx.cs文件中

public void GetSysInf () {

//获取操作系统类型

qDrives = Environment.OSVersion.ToString();

//获取系统文件夹

qSystemDir = Environment.SystemDirectory.ToString();

/*获取映射到进程上下文的物理内存量,通过这一内存映射量可以了解ASP.NET程序在运行时需要多少系统物理内存,有助于更好的规划我们的整个应用,因为物理内存量是以Byte为单位的,所以我们将此数值除以1024,可以得到单位为KB的物理内存量*/

qMo = (Environment.WorkingSet/1024).ToString();

//获取当前目录(即该进程从中启动的目录)的完全限定路径

qCurDir = Environment.CurrentDirectory.ToString();

//获取主机的网

络域名

qDomName = Environment.UserDomainName.ToString();

//获取系统启动后经过的毫秒数

qTick = Environment.TickCount;

//计算得到系统启动后经过的分钟数

qTick /= 60000;

//获取机器名

qMachine = Environment.MachineName;

//获取运行当前进程的用户名

qUser = Environment.UserName;

/*检索此计算机上格式为"<驱动器号>:\"的逻辑驱动器的名称,返回字符串数组,这是下一步操作的关键所在*/

achDrives = Directory.GetLogicalDrives();

//获取此字符串数组的维数,确定有多少个逻辑驱动器

nNumOfDrives = achDrives.Length;

} 系统信息不需要进行操作,我们简单的用asp:Label将他们显示出来就行了。逻辑驱动器的个数在不同的服务器上是不定的,所以用不定长数组保存逻辑驱动器的名称,而且逻辑驱动器的名称也是我们下一步浏览目录和文件的基础,故我们采用了数据网格DataGrid来显示和处理它。显示和处理逻辑驱动器名称的DataGrid的代码(代码在listdrivers.aspx文件):

<asp:DataGrid id="DriversGrid" runat="server" AutoGenerateColumns="false">

<Columns>

<asp:BoundColumn HeaderText="ID" DataField="ID" />

<asp:BoundColumn HeaderText="磁盘名" DataField="Drivers" />

<asp:HyperLinkColumn

HeaderText="详细信息"

DataNavigateUrlField="Drivers" DataNavigateUrlFormatString="listdir.aspx?dir={0}"

DataTextField="Detail"

Target="_new" />

</Columns>

</asp:DataGrid> 前两个BoundColumn列都是显示序号和实际逻辑驱动器名称的,需要说明的是第三列,我们在进入各个逻辑驱动器显示目录和文件之前需要将所选择的逻辑驱动器的名称传递到显示目录的文件去,所以需要一个特殊的超级链接行HyperLinkColumn,我们将DataNavigateUrlField设置为数据源中要绑定到 HyperLinkColumn 中的超级链接的 URL 的字段,在此即逻辑驱动器名称。然后将DataNavigateUrlFormatString设置为当 URL 数据绑定到数据源中的字段时,此HyperLinkColumn中的超级链接的 URL 的显示格式,即要链接到的下一级处理页面,在此为listdir.aspx?dir={用户点击行的逻辑驱动器名称}

1.ASP中常用的标准组件:FileSystemObject,这个组件为 ASP 提供了强大的文件系统访问能力,可以对服务器硬盘上的任何有权限的目录和文件进行读写、删除、改名等操作。FSO对象来自微软提供的脚本运行库scrrun.dll中。使用下面的代码就可以在ASP中创建一个FSO对象:Set fso = CreateObject("Scripting.FileSystemObject")我们使用fso对象包含的属性和方法,如Drive、Drives、Folder、Floders、File、Files等对服务器的磁盘、目录和文件进行读、写、删除等操作。这一强大的文件系统访问能力给ASP共享空间提供者带来了严重的安全问题,很多ASP空间的管理员都删除此组件或将这个组件改名以避免用户使用这一标准组件。删除组件或组件改名确实是一个简单的方法并且也很有效,但是却使广大用户无法使用它的强大的功能。网络上还有一种看起来很美的方案,它允许用户使用 FileSystemObject 组件又不影响服务器的安全,即对每一个用户都设置一个独立的服务器用户和单个目录的操作权限。但是这种方法是有问题的。因为ASP和ASP.NET中在这方面的问题十分类似,所以我们将在ASP.NET的相应解决办法部分详加说明。在ASP.NET中我们发现这一问题仍然存在,并且变得更加难以解决。这是因为.NET中关于系统IO操作的功能变得更加强大,而使这一问题更严重的是ASP.NET所具有的一项新功能,这就组件不需要象ASP那样必须要使用regsvr32来注册了,只需将Dll类库文件上传到bin目录下就可以直接使用了。这一功能确实给开发ASP.NET带来了很大的方便,但是却使我们在ASP中将此dll删除或者改名的解决方法失去效用了,防范此问题就变得更加复杂。在讨论解决方案之前,我们先来看一下怎么来实现上述的危险的功能

2.文件系统

我们还要使用System.IO名称空间的其他几个类是:

System.IO.Directory:提供用于创建、移动和枚举通过目录和子目录的静态方法的类

System.IO.File:提供用于创建、复制、删除、移动和打开文件的静态方法的类

System.IO.FileInfo:提供创建、复制、删除、移动和打开文件的实例方法的类

System.IO.StreamReader:实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。

每个我们所使用的类的属性和方法的具体用法我们将以代码注释的方式在程序中加以说明。

System.IO名称空间在 .NET FRAMEWORK提供的mscorlib.dll中,在使用VS.Net编程之前需要将此Dll引用到此项目中。

我们所编写的程序都使用了Codebehind方式,即每一个aspx程序都有一个对应的aspx.cs程序,aspx程序中只是写与页面显示相关的代码,所有逻辑实现的代码都放在相应的aspx.cs文件中,这样就可以更好得做到显示与逻辑的分离。由于我们的目的不是讨论Codebehind技术,所以就不在对此多加讨论了。

在这篇文章里,我们只介绍几个主要的类及其关键方法的用法,详细程序请查看附带的源代码。

程序一:显示服务器的当前信息和全部逻辑驱动器的名称的程序listdrivers.aspx

主要方法1:我们使用 GetSysInf() 方法来得到服务器的当前环境和平台的信息

//获取系统信息的方法,此方法在listdrivers.aspx.cs文件中

public void GetSysInf () {

//获取操作系统类型

qDrives = Environment.OSVersion.ToString();

//获取系统文件夹

qSystemDir = Environment.SystemDirectory.ToString();

/*获取映射到进程上下文的物理内存量,通过这一内存映射量可以了解ASP.NET程序在运行时需要多少系统物理内存,有助于更好的规划我们的整个应用,因为物理内存量是以Byte为单位的,所以我们将此数值除以1024,可以得到单位为KB的物理内存量*/

qMo = (Environment.WorkingSet/1024).ToString();

//获取当前目录(即该进程从中启动的目录)的完全限定路径

qCurDir = Environment.CurrentDirectory.ToString();

//获取主机的网

tail"

HeaderText="详细信息"

Target="_new"

/>

在两个DataGrid(DirGrid,FileGrid)中我们分别设置了两个HyperLinkColumn列来导航到不同的处理页面。

在两个DataGrid中我们都使用了一个删除的按钮列:

<asp:ButtonColumn HeaderText="删除"

Text="删除"

CommandName="Delete"

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有