我的人生路  
日历
<2005年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
统计
  • 随笔 - 74
  • 文章 - 57
  • 评论 - 7
  • 引用 - 0

导航

常用链接

留言簿(5)

随笔分类

随笔档案

文章分类

文章档案

相册

颜色

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
作者:小金  

本文已发表在chip

渗透是指入侵者直接用被入侵对象原有的功能来完成的入侵,它可以使用各种方法进行。无论是个人用户、数据库管理员还是网站管理员,要构造一个安全的网站论坛、数据库服务器以及安全的SQL语句脚本,了解渗透技术潜在的危害都非常有必要。

很多用户都有这样一种感觉:计算机信息安全技术或者黑客关心的一些东西都比较高深,其实不然,比如渗透技术,可能仅仅是这个专业的技术名词就已经让你有点眩晕了,但是你知道吗,在日常的计算机应用中,你常常会与渗透技术擦肩而过。


让我们举一个小例子来做个简单的说明:如果我告诉你“’ or 1=1’”这是某个用户在某个论坛注册的用户名或者密码,你会想到些什么呢?如果你稍微有一点SQL语言的常识的话,就会明白这个用户名意味着什么,你就会明白“Select u_name from userlst where u_name=xxx”与“Select u_name from userlst where u_name=xxx or 1=1”之间的巨大差异。对一个安全系数不高的网站来说,黑客可以轻松地利用类似的简单SQL语句对网站 非法访问或者攻击,而这些,仅仅是渗透技术冰山之一角。


试探

“站住!干什么的?”守卫叫住这个在司令部门前徘徊了许久的年轻人。“游客。”年轻人看着守卫,眼神出奇地平静,他似乎有意无意地看了不远处的司令部一眼,落日余辉笼罩下的司令部显得如此神秘。然后,年轻人在守卫警惕的目光下潇洒离去。


渗透,或称Penetrate,它不属于某一种入侵方法,也不属于某种工具。渗透是指入侵者直接用被入侵对象原有的功能来完成的入侵,它可以使用各种方法进行。这些原有的功能看起来是那么忠心,可是当它们被入侵者掌握后,却成了入侵者得力的工具。


在一切工作开始之前,入侵者们需要试探。包括目标的功能、漏洞,这些信息在以后的工作中起着重要作用,这一过程称为“扫描”。一般,入侵者们用的扫描器都能汇报大部分已经存在的漏洞和对方提供的服务。当收集到一定数据后,入侵者们就可以决定入侵还是放弃。


偷袭

前面已经提到,渗透有多种表现形式,目前流行的渗透技术表现方式有特殊权限目录、论坛渗透、SQL注射等几种。

突破特殊权限目录

夜深了,守卫正在昏昏欲睡。突然间,一个黑影迅速翻越围墙进了司令部,正是那个白天在司令部门前逗留过一段时间的年轻人,他戴着特制手套,围墙上的玻璃也被弄了一些下来,散落在地上,在月光下闪烁着。年轻人无暇顾及这些,一个转身躲进了暗处。他是一个特工,他的任务是窃取敌方最新的战略分布图。为此,他设法观察这个司令部好几天了,今天终于发现一处戒备疏松的入口。


一般,服务器都会设置一些拥有特殊功能的目录,这些目录用于扩充服务器提供的功能,它们能执行脚本程序,例如论坛。


正因为如此,这些目录里的程序常常会做出异常的事情。服务器上的程序通过处理不同内容的数据请求来实现功能扩充和人机交互,但是,就连程序的编写者也没办法考虑到对方可能会发出什么样数据,而程序只会死板地接受指令干活,于是,危险随时都可能发生。如果入侵者发送一个特殊格式的数据给服务器,由于服务器上处理数据的程序并没有对这种数据做出处理,直接的结果就是程序被溢出,或者执行了入侵者的非法请求,例如要求进入未经允许的目录、查看非授权文件等。因为程序根本不会思考,就乖乖实现了入侵者的心愿。


还记得那个最经典的目录渗透吗——“IIS的二次编码漏洞”正是因为作者没有考虑到一些特殊字符的作用,导致入侵者使用浏览器或别人开发的工具就轻松进入了服务器(图1)。



图1 IIS的“二次编码漏洞”导致了目录渗透。

当然,免费的午餐不一定都好吃,服务器虽然安排了特殊权限目录,可是也不会给它们太多权限。用这种方法渗透的入侵者,充其量不过是个“客人”的角色,能做多少事情?可想而知,入侵者们绝不肯就此罢休。

脆弱的论坛

司令部的侧门开了,也许因为天气闷热,一个戴眼镜的军官出来透气。他看到墙边那一堆闪亮的东西,忙走了过去。可是他还没来得及细看,就倒在那堆玻璃上,年轻人的身影出现在他身后。潜入的特工换上军官的军服,连同帽子和眼镜,然后拿了他的钥匙串,踱着步子走进了司令部。


论坛建立在特殊权限目录的基础上,为服务器开扩了互动的功能,当然也成为入侵者喜爱的一块“肥肉”。因为论坛是由多个文件组合起来的,只要某个文件的编写出了问题,论坛就很可能成为入侵者的钥匙。国内一些著名论坛如DVBBS和LB5000都是入侵者的最爱,因为这些论坛强大的功能让他们能直接取得整个机器的控制权。入侵者甚至只要设法在LB5000的某个文件里写下一行“@ARGV”就能直接进入系统内部。可以这么说:论坛是入侵者最大的“舞台”。


究其原因,是论坛程序作者编写的代码不严密造成的。由于论坛程序的代码是完全透明的,稍有用心的人分析了整个代码就能知道哪一步会出问题——不要以为那些教程上的命令是作者乱按键盘得来的。一旦论坛被渗透,最轻的后果是入侵者坐上管理员的位置,严重的就是入侵者又多了一台被控制的机器(图2)。


图2 黑客利用渗透技术提升LB5000用户权限。

突破口令的防线

特工把帽檐压得很低,司令部里居然没人认出他。他走到深处空无一人的情报间前面,发现这里需要输入一个四位数的密码,键盘下还有一个打印机接口样式的数据孔。特工从怀里拿出一个小机器和数据孔连接上了,然后就开始紧张地等待着什么。


有时候,一个论坛程序或者其他需要密码的入口程序已经被修改得很安全,直接用以前出问题的代码显然是不可能了,难道入侵就这样停止了?不,入侵者们当然不会轻易放弃。


现在最通用的服务器程序是微软的IIS网络信息服务器+ASP活动页面的组合,而这两者最主要的操作就是数据库读写——IIS使用数据库存储资料已经成了标准,可正是这个标准又把服务器的安全推到了危险的边缘。


SQL注射(SQL Injection)是最近比较热的渗透方法,那么,SQL注射是什么?写过数据库程序的朋友都知道,数据库操作需要用户名和密码,否则不允许打开。这些密码通过固定的格式传输,这就是“结构化查询语言”(Structured Query Language)。但是在这个环节上却出了差错:我们能直接阅读到网站的资料是因为作者已经把密码保存在某个文件里面让系统自己提交了。因此,入侵者可以在某个涉及到数据库调用的文件地址后增加一个SQL判断语句来追查密码长度,甚至推测具体密码,例如“data.asp?id=1 and 1=(select id from admin where left(password,5)='lk007')”,如果密码正好是“lk007”,文章就正常显示,因为语句中的“and”查询符两边相等了。这样一步一步下来,入侵者就拿到了完整的密码。这个手法在国外被称为“骇客的SQL填空游戏”,有趣吧?网络管理员可笑不出来。


打入核心

几分钟过去后,特工输入了正确密码,门开了。在他意料之外,里面还有个操作员!距离太近了,操作员认出他并非自己人。
“间谍……”操作员还没说完话就被弹了起来,头撞到了顶板,瞬间没了气息。原来特工按下了门旁的应急按钮,它的设计初衷是把非法入侵者直接扼杀在里面。可是它不会认人,只要你输入了正确密码,它就能为你所用。


特工取到了他要的资料,压低帽檐走了出去,情报间的门悄然关上了,就像什么都没发生过。趁着夜色,特工逃离了司令部。


SQL太强大了,不过这次不是SQL语言,而是SQL服务器程序SQL Server,它给用户提供强大功能的同时,也递给入侵者一把“榔头”。在SQL Server中有很多系统存储过程,有些是数据库内部使用的,还有一些就是通过执行存储过程来调用系统命令。直接危害服务器的是系统存储过程指令“xp_cmdshell”,它以操作系统命令行解释器的方式执行给定的命令字符串,但是它有个致命弱点:它不认人,只要入侵者得到了账号,他同样可以执行很多命令,直接危害服务器。也许你会说,这点无所谓,账号不是那么容易拿的。但是不争气的SQL Server却存在多种能让入侵者得到账号的漏洞,然后(图3)……

图3 针对SQL服务器的xp_cmdshell入侵程序。

其实,入侵者直接在浏览器里输入SQL指令就可以,例如“exec master.dbo.xp_cmdshell '命令行'”。


防范

深夜里,司令部响起了警报。一个士兵无意中发现了倒在地上的军官,尔后人们看到了情报间里操作员的尸体。整个司令部立即进入A级警戒状态,所有人都要经过严密身份识别才被批准进入。
然而,特工还会来吗?


发现服务器被入侵的时候,入侵者已经绝尘而去,广大网络管理员最痛心疾首的事情莫过于此,如果上天给他们一个重来的机会,他们会祈祷入侵者进不来,如果要加一个期限,他们希望是——永远。


话虽如此,但是,不见得每个Webmaster的技术都足够抵挡一切入侵,也不是所有程序都不会有出错的一天,我们应该如何预防渗透技术可能带来的危害呢?看了上面的文章和理论分析,不难得出以下有效的防范措施:


1.确保操作系统、数据库服务器、程序开发语言都打上了最新的补丁程序,如Service Pack以及相应服务器程序的补丁,并记得一定要时刻开启防火墙功能;


2.时刻关注自己服务器的论坛程序最新情况,增加必要的字段过滤;


3.留意用户组的变化,密切注意奇怪的用户名,对用户名和密码注册采取严格的限制策略;


4.定时分析操作系统和数据库日志文件。


欢迎大家访问我的个人网站 萌萌的IT人
posted on 2005-07-08 12:40 一天一点爱恋 阅读(151) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 一天一点爱恋 Powered by: 博客园 模板提供:沪江博客