账号通
    

账号  

密码  

3859

查看

8

回复
主题:[管理员请注意]会员收藏页面发现小漏洞 [收藏主题] 转到:  
akaaron 当前离线

175

主题

1

广播

1

粉丝
添加关注
级别:一年级

用户积分:2177 分
登录次数:118 次
注册时间:2006/3/17
最后登录:2014/10/24
akaaron 发表于:2006/6/8 18:02:00   | 只看该作者 查看该作者主题 楼主 
科汛智能建站系统

  在会员收藏的时候,就是当我们点击文章收藏时,会弹出收藏页面,如果我们在那个页面的地址栏里的最后填上你任意的字符,如下图

 


此主题相关图片如下:

此时页面并没有提示什么,看上去好像没有进行过操作,但是,我们看看数据库的收藏表里,在最后一行就是我们刚才通过地址提交的数据,如图:

 


此主题相关图片如下:

由此可见,我们刚才在地址栏输入的已经被页面保存到数据库里了~

目前,我并没有去深究此漏洞会带来什么后果,这也好像不是我的职责,呵呵,管理员还请更改保存收藏的代码,使其对提交的数据进行更严密的过滤。谢谢



[此贴子已经被作者于2006-6-8 18:05:42编辑过]

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
akaaron 当前离线

175

主题

1

广播

1

粉丝
添加关注
级别:一年级

用户积分:2177 分
登录次数:118 次
注册时间:2006/3/17
最后登录:2014/10/24
akaaron 发表于:2006/6/9 10:19:00   | 只看该作者 查看该作者主题 沙发 
科汛智能建站系统
希望下一版本能解决这一个问题,如你所说的话,如果我的文章很多ID是1-10000,这样,因定长度就有1-5,希望你们能固定好,到此结贴
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
kesion 当前离线

2176

主题

0

广播

1

粉丝
添加关注
级别:高三年

用户积分:6810 分
登录次数:1247 次
注册时间:2006/2/23
最后登录:2014/9/16
kesion 发表于:2006/6/9 10:32:00   | 只看该作者 查看该作者主题 藤椅 
科汛在线考试系统(NET)

这点,下个版本就会进一步完善.谢谢!

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
残影 当前离线

249

主题

0

广播

0

粉丝
添加关注
级别:二年级

用户积分:2188 分
登录次数:210 次
注册时间:2006/3/31
最后登录:2014/1/1
残影 发表于:2006/6/8 20:13:00   | 只看该作者 查看该作者主题 板凳 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
akaaron 当前离线

175

主题

1

广播

1

粉丝
添加关注
级别:一年级

用户积分:2177 分
登录次数:118 次
注册时间:2006/3/17
最后登录:2014/10/24
akaaron 发表于:2006/6/8 18:38:00   | 只看该作者 查看该作者主题 报纸 
科汛在线商城系统(NET)
想用一下KSCMS.G有没有对字符进行过滤的功能?我看了一下,只能过滤 ' 等字符,而对and 1=1、select等字符不能屏屏蔽,我把KSCMS.G单独放到一个文件里进行测试,居然可以通过在地址栏里输入and (select count(*) from KS_admin)>0来猜我的表(接收地址栏数据的函数就是KSCMS.G),只不过,你们系统的大部份页面都是以静态的,不能通过地址栏传输值,具体的我没有再作测试

[此贴子已经被作者于2006-6-8 18:40:31编辑过]

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
任我行 当前离线

6496

主题

191

广播

251

粉丝
添加关注
级别:管理员

用户积分:46047 分
登录次数:4180 次
注册时间:2006/4/26
最后登录:2023/12/4
任我行 发表于:2006/6/8 18:47:00   | 只看该作者 查看该作者主题 地板 
科汛智能建站系统

只要是数字的.我们都再进一步过滤

KSCMS.ChkClng这个函数.可以堵住大部的注入

还有一个

KSCMS.ReplaceBadChar

所以,注入还是比较难的

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
akaaron 当前离线

175

主题

1

广播

1

粉丝
添加关注
级别:一年级

用户积分:2177 分
登录次数:118 次
注册时间:2006/3/17
最后登录:2014/10/24
akaaron 发表于:2006/6/9 10:06:00   | 只看该作者 查看该作者主题 7楼 
科汛在线商城系统(NET)
以下是引用任我行在2006-6-8 18:47:56的发言:

只要是数字的.我们都再进一步过滤

KSCMS.ChkClng这个函数.可以堵住大部的注入

还有一个

KSCMS.ReplaceBadChar

所以,注入还是比较难的

KSCMS.ReplaceBadChar?????????

这是它的原码: 

Public Function ReplaceBadChar(strChar)
  If strChar = "" Or IsNull(strChar) Then ReplaceBadChar = "":Exit Function
  Dim strBadChar, arrBadChar, tempChar, I
  strBadChar = "',%,^,&,?,(,),<,>,[,],{,},/,\,;,:," & Chr(34) & "," & Chr(0) & ""
  arrBadChar = Split(strBadChar, ",")
  tempChar = strChar
  For I = 0 To UBound(arrBadChar)
   tempChar = Replace(tempChar, arrBadChar(I), "")
  Next
  ReplaceBadChar = tempChar
 End Function
这个函数只对特殊符号作出处理,但未去字符,如and,or,select进行处理,虽然不能直接用来注入,但去可以用这个漏洞来制造垃圾数据,按照上面说的,我把检测代码换为:

     Case "Add"
       Dim RSAdd,anid
       InfoID=KSCMS.ReplaceBadChar(KSCMS.G("InfoID"))
       Anid=KSCMS.ReplaceBadChar(KSCMS.G("Anid"))
之后再在地址栏里进行测试,发现一些符号已经不能用了。但是如果我加上ReplaceBadChar()函数限制以外的字符,如abcd....这些,结果同样可以写进数据库,而且在收藏里也见不着,只有打开数据库才看得见。

如果我加上KSCMS.ChkClng检测数字,使上面语句变为

     Case "Add"
       Dim RSAdd,anid
       InfoID=KSCMS.ChkClng(KSCMS.ReplaceBadChar(KSCMS.G("InfoID")))
       Anid=KSCMS.ChkClng(KSCMS.ReplaceBadChar(KSCMS.G("Anid")))

这里虽然把字符abcd....等等给过滤了,但看看那个函数的源码

 '检查是否是数字 ,并转换为长整型
 Public Function ChkClng(ByVal str)
  If str<>"" and IsNumeric(str) Then
   ChkClng = CLng(str)
  Else
   ChkClng = 0
  End If
 End Function

这个函数只把不符合规则的字符变为0

而我们如果在收藏页的地址栏中,再进行乱字符的提交的话,所提交的有乱字符的参数就变为0,而且同样能够写入数据库,目前,我用了别人的防注入函数,不过感觉既然是用你的,还是想全用你们的,希望你们给一个更好的函数出来


[此贴子已经被作者于2006-6-9 10:07:50编辑过]

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
kesion 当前离线

2176

主题

0

广播

1

粉丝
添加关注
级别:高三年

用户积分:6810 分
登录次数:1247 次
注册时间:2006/2/23
最后登录:2014/9/16
kesion 发表于:2006/6/9 10:12:00   | 只看该作者 查看该作者主题 8楼 
科汛智能建站系统

判断长度.或我收藏的文章ID用自动ID

这一点,可以再进一步优化

还可以数据加字段固定长度.如20

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
任我行 当前离线

6496

主题

191

广播

251

粉丝
添加关注
级别:管理员

用户积分:46047 分
登录次数:4180 次
注册时间:2006/4/26
最后登录:2023/12/4
任我行 发表于:2006/6/8 18:32:00   | 只看该作者 查看该作者主题 9楼 
做在线知识付费 选科汛云开店

这个应该没什么威助吧

可以再进行一次过滤

找到member/User_Favorite.asp这个文件

第78行

     Case "Add"
       Dim RSAdd
       InfoID=KSCMS.G("InfoID")     改为 InfoID=KSCMS.ReplaceBadChar(KSCMS.G("InfoID"))
       Set RSAdd=Server.CreateObject("Adodb.Recordset")

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.17383秒 powered by KesionCMS 9.0