美文网首页
phpList 3.5.0 - Authentication B

phpList 3.5.0 - Authentication B

作者: 君行路 | 来源:发表于2020-04-12 22:52 被阅读0次

    phpList是用于管理邮件列表的开源软件。它设计用于向订户列表传播信息,例如新闻通讯,新闻,广告。它用PHP编写,并使用MySQL数据库存储信息。phpList是免费的开源软件。

    https://www.exploit-db.com/exploits/47989

    管理员后台登录的密码散列使用了==而不是===验证

    环境搭建

    源码下载(sourceforge):

    https://sourceforge.net/projects/phplist/files/phplist-development/3.5.0-RC1/
    
    image

    解压后直接找到这个目录:

    image

    将这个lists拷贝到网站目录下并且重命名。

    修改config/config.php配置文件,设置要连接的数据库和账户密码

    image

    同时建立phplistdb数据库。

    访问http://127.0.0.1/phplist/admin/

    漏洞利用

    初始化安装,设置管理员的账号密码:

    image

    这里的密码要设置成 sha256 后以0e开头的字符串,如 TyNOQHUS

    我们再次访问后台,以密码 34250003024812进行登录,其sha256后也是以0e开头

    image

    登录成功:

    image

    漏洞分析

    找到验证管理员登录的php文件phpListAdminAuthentication.php

    关键代码:

    image

    可以看到$encryptedPass(密码sha256后的值)是使用==来判断和数据库中的值是否一样。PHP弱类型比较,就会造成0exxxxx == 0eyyyyy(会把每一个以”0e”开头的哈希值都解释为0)

    漏洞修复

    使用===强类型比较:

    if (//Password validation.
                !empty($passwordDB) && $encryptedPass === $passwordDB
            )
    

    总结

    这种偶然现象可能不是很常见,但是还是借助fofa等工具搜集下使用phplist的网站,批量打一下。

    相关文章

      网友评论

          本文标题:phpList 3.5.0 - Authentication B

          本文链接:https://www.haomeiwen.com/subject/ksiimhtx.html