求绕过360websec 通用防注入方法
<%On Error Resume Next
if request.querystring<>"" then call stophacker(request.querystring,"'|(and|or)\b.+?(>|<|=|in|like)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)")
if request.Form<>"" then call stophacker(request.Form,"\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)")
if request.Cookies<>"" then call stophacker(request.Cookies,"\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)")
ms()
function stophacker(values,re)
dim l_get, l_get2,n_get,regex,IP
for each n_get in values
for each l_get in values
l_get2 = values(l_get)
set regex = new regexp
regex.ignorecase = true
regex.global = true
regex.pattern = re
if regex.test(l_get2) then
IP=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If IP = "" Then
IP=Request.ServerVariables("REMOTE_ADDR")
end if
'slog("<br><br>操作IP: "&ip&"<br>操作时间: " & now() & "<br>操作页面:"&Request.ServerVariables("URL")&"<br>提交方式: "&Request.ServerVariables("Request_Method")&"<br>提交参数: "&l_get&"<br>提交数据: "&l_get2)
Response.Write "360websec notice:Illegal operation!"
Response.end
end if
set regex = nothing
next
next
end function
sub slog(logs)
dim toppath,fs,Ts
toppath = Server.Mappath("/log.htm")
Set fs = CreateObject("scripting.filesystemobject")
If Not Fs.FILEEXISTS(toppath) Then
Set Ts = fs.createtextfile(toppath, True)
Ts.close
end if
Set Ts= Fs.OpenTextFile(toppath,8)
Ts.writeline (logs)
Ts.Close
Set Ts=nothing
Set fs=nothing
end sub
sub ms()
dim path,fs
path = Server.Mappath("update360.asp")
Set fs = CreateObject("scripting.filesystemobject")
If Fs.FILEEXISTS(path) Then
Response.Write "请重命名升级文件update360.asp防止黑客利用"
Response.End
end if
Set fs=nothing
end sub
%>
我也想知道,坐等楼下大牛 我看到网上有帖子,在乌云里,自己没成功过
Re: 求绕过360websec 通用防注入方法
这类防注入代码在实战中确实有不少绕过空间,比如利用HTTPS参数污染、换行符拆分关键词、宽字节注入或利用正则的未匹配细节。不过直接讨论绕过方法对实际安全没有太大帮助——建议把重点放在“如何加固”而不是“如何破解”上。 你的代码里几个明显的薄弱点: 1. `On Error Resume Next`会吞掉错误,导致后续逻辑异常时无法拦截。 2. 正则对大小写敏感匹配了`EXEC`、`SELECT`等,但攻击者可以混用Unicode、URL编码、注释符嵌套来绕过。 3. `update360.asp`的检查只是提醒,如果这个文件存在且可访问,本身就是后门。 4. 正则匹配`\b(and|or)\b.{1,6}?`这种范围太小,某些注入可以用`||`、`&&`或空注释绕过。 5. Cookie过滤做得很弱,很多绕过方式根本不走QueryString和Form。 建议你: - 放弃这种黑名单正则,改用参数化查询(Prepared Statement)或存储过程。 - 如果不方便改数据库操作,至少升级到白名单模式——只允许特定字符集(如数字、字母、下划线)进入SQL语句。 - 把`On Error Resume Next`去掉,或者在出错时直接终止。 - 删掉`update360.asp`文件,或者禁止外部访问。 防注入不是靠写一条正则就能一劳永逸的,核心还是杜绝拼接SQL。如果你手头有业务
页:
[1]