")
Str=Replace(Str,Chr(10),"
")
FilterHtml=Str
End If
End Function
三、登陆验证绕过漏洞
漏洞简介:
在某些网站程序中,用户可以在未经过受权的情况下访问某些敏感页面,譬如网站后台页面。
举例:
1、万能密码进后台
有些网站的后台验证部分使用的是如下代码:
username=trim(request.form("user"))
password=trim(request.form("pass"))
sql="select * from admin where username='"&;username&;"' and password='"&;password&;"'"
如果这个时候我们提交一个用户名为“xhonker' or '1'='1”,密码为任意的数据,会发现一样可以登陆后台!这时SQL语句就变
成了这个样子:
select * from admin where username='xhonker' or '1'='1' and password='"&;password&;"'
解释一下,“or”是一个逻辑运算符,作用是在判断两个条件的时候,只要其中一个条件成立,那么等式将会成立。这里1=1永远成立,所以我们提交的SQL语句永远为真,这样就可以在不知道密码的情况下成功登陆后台!
防御方法:
这里大家可以看出,利用成功的条件必须要是提交的数据库含有单引号,如果我们将单引号过滤掉的话对方就拿我们没有办法了!有些程序员采用在客户端写一段Javascript或者VBScript脚本来实现过滤,但这其实也存在安全隐患,因为客户端的脚本我们是可以随意修改的,我们只需将其删除然后修改下提交表单中“action”属性处的值即可!这里我们采用如下方法进行过滤:
username=replace(trim(request.form("user")),"'","")
password=replace(trim(request.form("pass")),"'","")
在服务器端使用replace函数将客户端提交过来的'过滤为空,这样对方就无法采用闭合程序中的单引号来实现非法登陆了!
2、Cookies欺骗进后台
有些网站的后台页面使用的是Cookies验证,代码如下:
If request.cookies("admin")="" then
response.redirect "login.asp"
程序只是简单的判断Cookies中admin的值是否为空,如果为空则返回登陆页面,不为空则进入后台页面。而Cookies我们是可以在客户端进行伪造的,我们只需将admin的Cookies值设为任意,只要不为空就可以,这样再次访问后台页面就可以进入了!
防御方法:
提倡大家在服务器端使用Session验证,也可以通过判断用户是否是从特定的页面进入的后台页面。
四、暴库漏洞
漏洞简介:
1、%5c法
对于一些Access数据库的主机而言,我们可以通过暴库获得数据库的绝对路径。假设页面地址是:xxx/xx/x.asp?id=123,我们可以尝试提交xxx/xx%5cx.asp?id=123。如果能获得绝对地址,我们只要再适当结合网页地址,就能下载到数据库了!
2、conn.asp法
动力文章系统以前就暴出过这个漏洞,通过直接访问网站的conn.asp文件就可以获得数据库的绝对路径!
防御方法:
只需在网站的数据库连接文件,譬如conn.asp文件中加入语句“on error resume next”即可!
五、利用网站后台配置文件写