十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在登录网站后台时,有一个比较古老的“万能密码”漏洞,即利用一个我们精心构造的用户名,即使不用输入密码,也可以登录后台,其原理仍属于SQL注入的范畴。
我们提供的服务有:网站制作、做网站、微信公众号开发、网站优化、网站认证、盐田ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的盐田网站制作公司
假设数据库中存放用户信息的表是admin,其中存放用户名的字段是username,存放密码的字段是password,在用户验证页面中用来接收用户所输入的用户名和密码的变量也分别是username和password,当用户在用户验证页面输入用户名和密码后,会提交给如下的语句进行处理:
select * from admin where `username` = ‘$userrname’ and `password` = ‘$password’
这样,当用户输入用户名'or '' = '时,相应的语句就变成了
select * from admin where `username` = ‘’ or ‘’ =‘’and `password` = ‘’
在这个语句中,where后面所指定的条件永久成立,因而就可以绕过身份验证,也就成为了所谓的万能密码。
万能密码中开头和结尾的单引号,主要是为了将查询语句中引用变量的单引号闭合。因而掌握了这个特点之后,我们就可以来任意构造万能密码,比如下面的几种形式:
' or 'a'='a'or'a'='a
' or ‘a’ = ‘a’ or ‘
' or 1=1 or ‘
下面我们就搭建一个实验环境来验证万能密码,这里使用软件NPMserv来搭建实验平台,利用该软件可以快速搭建一个nginx+php+MySQL的Web平台。软件内置了2个带有漏洞的php网站,在使用时只需将相应网站所在的文件夹改名为www即可启用。软件下载地址:http://down.51cto.com/data/1886128。
环境搭建好之后,访问网站:
点击“管理中心”,登录后台。在“用户名”中构造一个万能密码登录,“密码”可以不输或者随意输入:
可以成功登录:
下面在WAF中设置策略,来对万能密码进行过滤。
首先在策略管理中新建一条名为P-deny的策略。
然后在“基本***防护”中对策略进行设置,将状态设为“开启”,动作设为“阻止”。
仍是在“基本***防护”中来创建自定义规则,神州数码WAF的绝大部分功能都是通过自定义规则来实现的,因而这里是WAF设置的重中之重。
这里创建一条名为“nopass”的规则,在规则中主要是来定义正则表达式,对SQL注入的语句进行过滤。
在检测域中设置“参数”,在匹配方式中设置“正则匹配”,在数值中设置正则表达式。
这里根据万能密码的特点,我设置如下的正则表达式:
.*’.*or.*’
.可以匹配任意字符;
*表示表达式不出现或者出现任意次,因而.*可以匹配任意数量的任意字符。
策略设置完成后,在服务管理中将P-deny策略应用到之前创建的web策略上。
这样当在客户端再次通过万能密码登入后台时,便会报错。