推荐日志

动易2006最新漏洞补丁

[ 2007-03-25 02:47:23 | 作者: sun ]
字体大小: | |
其实这是2003系统流传已久的小特点,不明白官方为什么大惊小怪地要删除相关文件......连华夏的怪狗也是改UPLOAD文件名的......过滤用户名注册中的“.”就OK了。
于是我下了个动易2005SP5找到REG目录中的User_RegCheck.asp,发现最后面就有一个函数
'**************************************************
'函数名:UserNamefilter(
'作 用:过滤用户名(增强过滤,用户名现用于建立个人文集目录)
'**************************************************
Function UserNamefilter(strChar)
If strChar = "" or IsNull(strChar) Then
UserNamefilter = ""
Exit Function
End If
Dim strBadChar, arrBadChar, tempChar, i
strBadChar = "&#39;,%,^,&,?,(,),<,>,[,],{,},/,\,;,:," & Chr(34) & "," & Chr(0) & ",*,|,"""
arrBadChar = Split(strBadChar, ",")
tempChar = strChar
For i = 0 To UBound(arrBadChar)
tempChar = Replace(tempChar, arrBadChar(i), "")
Next
UserNamefilter = tempChar
End Function
%>

直接往 strBadChar 里加上过滤“.”,然后测试,居然还能注册*.asp的文件,晕S。再看到User_CheckReg.asp,真不明白要两个来干什么用,改之

Sub User_CheckReg()
Dim RegUserName
RegUserName = Trim(request("UserName"))
If InStr(RegUserName, "=") > 0 o&#114; InStr(RegUserName, "%") > 0 o&#114; InStr(RegUserName, Chr(32)) > 0 o&#114; InStr(RegUserName, "?") > 0 o&#114; InStr(RegUserName, "&") > 0 o&#114; InStr(RegUserName, ";") > 0 o&#114; InStr(RegUserName, ",") > 0 o&#114; InStr(RegUserName, "&#39;") > 0 o&#114; InStr(RegUserName, ",") > 0 o&#114; InStr(RegUserName, Chr(34)) > 0 o&#114; InStr(RegUserName, Chr(9)) > 0 o&#114; InStr(RegUserName, " ") > 0 o&#114; InStr(RegUserName, "$") > 0 o&#114; InStr(RegUserName, "*") o&#114; InStr(RegUserName, "|") o&#114; InStr(RegUserName, """") > 0 o&#114; InStr(RegUserName, "^") > 0 o&#114; InStr(RegUserName, "--") > 0 o&#114; InStr(RegUserName, ".") > 0 o&#114; InStr(RegUserName, "+") > 0 Then
FoundErr = True
ErrMsg = ErrMsg & "<br><li>用户名中含有非法字符</li>"

加上Or InStr(RegUserName, ".") > 0

测试居然还没能注册*.asp,倒塌......

仔细看下REG里的所有文件,发现User_RegPost.asp
看下这里
<!--#include file="../conn.asp"-->
<!--#include file="../inc/md5.asp"-->
<!--#include file="../inc/function.asp"-->
<!--#include file="../API/API_Config.asp"-->
<!--#include file="../API/API_Function.asp"-->

刚才那两个CHECK简直就是废的,根本用不上......
再找到

If CheckUserBadChar(UserName) = False Then
ErrMsg = ErrMsg & "<li>用户名中含有非法字符</li>"
FoundErr = True
End If

看来与CheckUserBadChar这个函数有关
搜索之,发现接近末尾的地方

Function CheckUserBadChar(strChar)
Dim strBadChar, arrBadChar, i
strBadChar = "&#39;,%,.,^,&,?,(,),<,>,[,],{,},/,\,;,:," & Chr(34) & ",*,|,"""
arrBadChar = Split(strBadChar, ",")
If strChar = "" Then
CheckUserBadChar = False

往strBadChar 加上“.”号的过滤,测试,OK,提示用户名非法。
真搞不明白动易那帮人怎么想的,一个那么简单的问题搞到那么复杂,连帮忙改的人都给搞复杂来,MMD

PS,我原来还试过把INC里的function.asp里定义SQL注射的地方把.a和.e设置成过滤字符,防止别人注册,但似乎没用,不知道为什么.....没仔细研究了,动易那么变态,什么都爱复杂化的,更懒得研究了......
补丁只测试过2006SP5有效,其他版本貌似那两个CHECK有的有用的,懒得弄了。
评论Feed 评论Feed: http://www.lziss.com/blog/feed.asp?q=comment&id=144
UTF-8 Encoding 引用链接: http://www.lziss.com/blog/trackback.asp?id=144

浏览模式: 显示全部 | 评论: 1 | 引用: 0 | 排序 | 浏览: 1333
引用 qab937*
[ 2007-11-04 13:26:30 ]
上海派爱商务咨询有限公司
经营范围:商务咨询、企业管理咨询、投资咨询、市场策划、展览展示服务、劳动服务。
并可以为贵公司提供高质量网站建设及网站优化、产品推广服务


公司本次发布信息内容:食品、饮料、酒类、调味品等企业。如果有需要本公司进行产品投放市场前期
的策划,寻找代理商家,可以与我公司联系。

在本月10日以前联系的公司将可以安排贵公司产品参加11月份的华联超市全国订货会。

联系方式:电话 021--51021055-3
E-mail: sh-pai@hotmail,com.

联 系 人:邵先生

发表
表情图标
[1] [2] [3] [4]
[5] [6] [7] [8]
[9] [10] [11] [12]
[13] [14] [15] [16]
[17] [18] [19] [20]
[21] [22] [23] [24]
[25] [26] [27] [28]
[29] [30] [31] [32]
[33] [34] [35]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:   注册?