酷文首页  
站内搜索:
网站地图 | RSS订阅 | 收藏本站
经济论文
证券金融
工商管理
会计审计
法学论文
医药论文
社会论文
教育论文
计算机论文
艺术论文
哲学论文
财政税收
财务管理
公共管理
理学论文
政治论文
文学论文
工学论文
文化论文
实用文档
应用文
自考成考
演讲稿
法律文书
子栏目导行↓
网站赞助商↓
本类热点↓
6608次
1265次
本类更新↓
热门标签↓
网摘收藏↓

网络信息安全

作者:不详
来源:网络
点击:
载入中...
加入时间:2007-03-26
字体大小:[  ]

Unicode编码标准的出现让各种系统之间的交流变得简单,然而正如爱情是把双刃剑那样,Unicode也会伤人的。

问题出在Unicode对字符的解码上,它的算法让一个字符可以通过多种编码格式产生,于是入侵者可以采用"旁门左道"产生一个非标准编码的路径符号。例如"%c1%1c",通过Unicode解码公式解析出来的字串为:%c1%1c->(0xc1-0xc0)*0x40+0x1c=0x5c="/"。我们知道,IIS在打开文件时,如果该文件名包含Unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将可能导致IIS错误地打开或者执行Web根目录以外的文件。在这里,IIS并不知道这个是路径符,就直接发出了处理请求。于是,入侵者攻击者利用这个漏洞绕过了IIS的路径检查,进入了系统(图3),这就是著名的"IIS Unicode"二次编码漏洞攻击原理。

论坛:天生和字符有仇


如果有人专门去阅读一些论坛的文件内容,会发现它们里面都会有一些代码专门用来处理字符,这部分代码的工作叫做"字符过滤"。为什么呢?因为有太多字符都能对论坛造成伤害,这些字符不一定需要特殊编码,甚至我们正常敲出的文字里都有可能包含被论坛作者定义为"危险"的字符。究其原因,就是因为论坛程序的特殊性,因为它们工作在服务器和外界的接口处,而且自身也是由纯字符组成的,但是一些看似正常的字符会"不小心"改变了它们的逻辑,这是连论坛作者自己可能都没想到的。例如,一些论坛的功能设置部分会涉及文件读写,因此有必要加上权限盘查。但是如果作者编写的权限检查代码忽略了某些特殊字符的输入,结果就会让入侵者成功地往系统中写入一个文件。LB5000论坛就曾经出现过一个重大漏洞:它的界面设置模块对用户权限的盘查不严谨,其中一个字符输入没有经过身份验证,而这个设置会产生一个可以让论坛程序执行的文件用于临时保存界面配置数据,于是入侵者通过以下格式写入一个简单的内容:setskin.cgi?membercode= ad&action=process&printme=use%20CGI%20qw(:standard)%3bopen(HBU,param('a'))%3bprint%20HBU%20param('b')%3b,这样就能完成对论坛的写操作。让我们简单地看看这段代码。这个代码产生了一个包含以下有用内容的leoskin.cgi文件:

use CGI qw(:standard);

open(HBU,param('a'));

print HBU param('b');


懂Perl语法的用户一眼就能看出来,这是一段简单的写入文件代码,入侵者只要用"leoskin.cgi?a=>[文件名]&b=[内容]"格式的语句就可以向论坛写入文件。


到这里也许有人还不明白:写个文件有什么了不起?别忘了,LB5000论坛是基于文件的,它的所有东西都是文件,包括管理员账号。既然我们能写文件,那么只要想办法写入一个管理员账号文件,这下了不起没有?利用这一点,入侵者还可以写入一个执行命令的文件——WebShell,进而控制整个服务器!

近期DVBBS论坛最热的一个漏洞就是UPFILE漏洞,这个漏洞为什么得以成功呢?是简单的字符起的作用!有谁不能用十六进制处理工具把里面那个关键的空格改为结束符而成功入侵这类论坛呢?!这又是一个"小"字符摧跨"大"堤坝的典型案例。


SQL:你的"针管"在哪里


说到字符就不能不提一下大名鼎鼎的SQL了,其实很多论坛过滤字符最大的原因也是因为SQL,这个不能称之为漏洞的"结构化查询语言"让"AND"、"OR"等最为简单的字符成了危险的代号。

由于ASP的特性,入侵者在一个连接数据库操作的URL里加入" AND SQL语句"会让IIS执行这个URL里的SQL语句,于是服务器的噩梦又来了。通过SQL能做什么呢?最简单的是猜测密码(比如免费下载电影或者享用付费用户才拥有的服务),如果服务器的权限设置不好,入侵者能直接用SQL执行任何系统命令!包括清空整个数据库的全部资料


奇怪的编码:格式化字符


如今,"溢出攻击"已经成为攻击的主要方式之一,广大用户或多或少都会听说过"Shell"这个名词,有兴趣的人可能还看过一些溢出程序的代码。很多人都会产生出这样的疑问:每个溢出程序代码里都会发现的那一串甚至几串用路径符和类似十六进制代码表示的字符串,那是什么?

要说明这个问题,必须先知道C语言对字符的处理方法。在C语言中,写一行代码向屏幕打印字符并不是简单地向屏幕输出字符串,能在屏幕显示的字符实际上是经过函数转换的"打印格式"字符,C语言提供了一种格式化字符,它允许程序员控制显示文本的样式,我们可以通过代替特殊的格式字符来显示值或数据。例如"printf("The value is %s",sVal)",其中"%s"就是格式化字符,它自身不能用做显示,而是告诉系统,按照"字符串"的格式把sVal的值放进整个字符串,这就像一个蛋糕模子,它固定了一种样式,你做出的蛋糕就只能是这种样式了。

然而问题又来了,"格式化字符"的存在,让溢出攻击成了现实。攻击者用十六进制编码向内存写入攻击代码,并按照一定格式编排格式化字符,让系统执行到这些字符的时候不再按照原本的程序思路执行,而是扭转到攻击代码所在的内存位置,这就导致了"溢出"(Overflow)。程序就有可能执行到攻击者写入的命令,这像什么呢?就像一块过分膨胀的蛋糕,虽然你的模子是没有问题的,但是蛋糕烘烤的时候,它涨出了原有的空间,这样出来的蛋糕自然不会是你喜欢的样子。同样的情形发生在计算机内存里,就是一组指令涨出了它的"模子",并且有一部分流入烤箱底部被烤糊了。例如,类似于"\x55\x8B\xEC\ x33\xFF\x57\xC6......"的攻击代码,它是一组用十六进制格式符隔开的指令,当它写入内存后,实际上是产生了一组可以让系统执行的"正常"代码,像是运行CMD.EXE,但是这组指令并没有指向它们的执行代码,所以通常情况下,它们即使被写入内存也只能是废物一堆(烤糊的蛋糕,你能吃吗?),如果要让它们起作用,怎么办呢?这时候就需要格式化字符的帮助了,通过执行一段特殊的包含格式化字符的代码,程序指向了包含攻击指令的内存位置,于是攻击指令生效了


防御字符威胁


由于字符问题由系统内部产生,我们无法把它消灭,只能通过"后天"的修补来解决问题。最安全的方法就是在我们的程序里加入防护代码,并给系统打上补丁,这样才能尽量避免来自字符的攻击。

很多公司都有因为电脑被入侵而遭受严重经济损失的惨痛经历,不少普通用户也未能避免电脑被破坏的厄运,造成如此大损失的并不一定都是技术高超的入侵者所为,小小的字符串带给我们的损失已经太多。因此,如果你是数据库程序开发人员、如果你是系统级应用程序开发人员、如果你是高级计算机用户、如果你是论坛管理人员......请密切注意有关字符漏洞以及其他各类漏洞的最新消息及其补丁,及时在你的程序中写入防范最新字符漏洞攻击的安全检查代码并为你的系统安装最新的补丁会让你远离字符带来的危险。转贴于 酷文网-论文下载中心 http://www.coolwen.net


共5页: 上一页 [1] [2] [3] 4 [5] 下一页

网摘收藏:
 -> 在百度中搜索:网络信息安全
 -> 在Google中搜索:网络信息安全
免责声明 | 关于我们 | 广告联系 | 友情链接 | 网站地图 | 共同合作
免费论文 毕业论文 毕业论文范文 酷文网(www.coolwen.net) 版权所有 coolwen.net 2007,All Rights Reserved
E-mail:hui_love#tom.com(为防止垃圾邮件请把#换成@) 点击这里给我发消息 点击这里给我发消息
湘ICP备07003917号