快捷搜索:   nginx

动易2006最新漏洞补丁

其实这是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 = "',%,^,&,?,(,),<,>,[,],{,},/,\,;,:," & 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 or InStr(RegUserName, "%") > 0 or InStr(RegUserName, Chr(32)) > 0 or InStr(RegUserName, "?") > 0 or InStr(RegUserName, "&") > 0 or InStr(RegUserName, ";") > 0 or InStr(RegUserName, ",") > 0 or InStr(RegUserName, "'") > 0 or InStr(RegUserName, ",") > 0 or InStr(RegUserName, Chr(34)) > 0 or InStr(RegUserName, Chr(9)) > 0 or InStr(RegUserName, " ") > 0 or InStr(RegUserName, "$") > 0 or InStr(RegUserName, "*") or InStr(RegUserName, "|") or InStr(RegUserName, """") > 0 or InStr(RegUserName, "^") > 0 or InStr(RegUserName, "--") > 0 or InStr(RegUserName, ".") > 0 or 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 = "',%,.,^,&,?,(,),<,>,[,],{,},/,\,;,:," & Chr(34) & ",*,|,"""
arrBadChar = Split(strBadChar, ",")
If strChar = "" Then
CheckUserBadChar = False

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

PS,我原来还试过把INC里的function.asp里定义SQL注射的地方把.a和.e设置成过滤字符,防止别人注册,但似乎没用,不知道为什么.....没仔细研究了,动易那么变态,什么都爱复杂化的,更懒得研究了......
补丁只测试过2006SP5有效,其他版本貌似那两个CHECK有的有用的,懒得弄了。
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论