首页 > 代码库 > 网络安全系列之十 万能密码登录网站后台

网络安全系列之十 万能密码登录网站后台

在登录网站后台时,有一个比较古老的“万能密码”漏洞,即利用一个我们精心构造的用户名,即使不用输入密码,也可以登录后台,其原理仍属于SQL注入的范畴。

假设数据库中存放用户信息的表是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。

环境搭建好之后,访问网站:

wKiom1RG5FqggpoOAAKz3aM3glo128.jpg 

点击“管理中心”,登录后台。在“用户名”中构造一个万能密码登录,“密码”可以不输或者随意输入:

wKioL1RG5LOT2cusAADdAn3mq-c367.jpg 

可以成功登录:

wKiom1RG5HOinwfnAAFASLQgE-4542.jpg 

下面在WAF中设置策略,来对万能密码进行过滤。

首先在策略管理中新建一条名为P-deny的策略。

wKioL1RG5MqSSX58AADKTDFubN4674.jpg 

然后在“基本攻击防护”中对策略进行设置,将状态设为“开启”,动作设为“阻止”。

wKiom1RG5Ini-sr1AACp_QxkuQ0033.jpg 

仍是在“基本攻击防护”中来创建自定义规则,神州数码WAF的绝大部分功能都是通过自定义规则来实现的,因而这里是WAF设置的重中之重。

这里创建一条名为“nopass”的规则,在规则中主要是来定义正则表达式,对SQL注入的语句进行过滤。

在检测域中设置“参数”,在匹配方式中设置“正则匹配”,在数值中设置正则表达式。

这里根据万能密码的特点,我设置如下的正则表达式:

.*’.*or.*’

.可以匹配任意字符;

*表示表达式不出现或者出现任意次,因而.*可以匹配任意数量的任意字符。

wKioL1RG5OKzP9P9AADA45OheSo220.jpg 

策略设置完成后,在服务管理中将P-deny策略应用到之前创建的web策略上。

wKioL1RG5PeSLaxXAADVp0utNng717.jpg 

这样当在客户端再次通过万能密码登入后台时,便会报错。 

wKiom1RG5MGCiJO0AADYX_VBTRE896.jpg

本文出自 “一壶浊酒” 博客,转载请与作者联系!

网络安全系列之十 万能密码登录网站后台