渗透是指入侵者直接用被入侵对象原有的功能来完成的入侵,它可以使用各种方法进行。无论是个人用户、数据库管理员还是网站管理员,要构造一个安全的网站论坛、数据库服务器以及安全的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)。