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

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

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

14ea450443769afb903b3724f9afe6c4.png

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

9fd847cbfdb996fa48fbecdc89c25257.png

可以成功登录:

a096556e797f4b8cb182fefa0735e899.png

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

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

26ebe221aa56220dfe26ea261fb898d1.png

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

00dff5caaed50b4cefb31c8b9adaabc9.png

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

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

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

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

.*’.*or.*’

.可以匹配任意字符;

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

56073971138b166693be0c6493009860.png

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

89295f2aedd0df422d23de2fc2a4229f.png

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

0131036186acee1d0bf5b3aba26a9b3c.png

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值