影响版本:Emlog<=5.3.1
漏洞演示环境的搭建:
使用PHPstudy在本地搭建PHP+MYSQL+Apache环境:
注:如果在本地安装了IIS服务,会使得端口冲突,此时我们要进行修改端口(建议可以修改Apache的端口为8080,之后重启服务即可)
emlog的安装:
我们从网上下载到emlog的源代码,我们下载下来,并且解压到我们安装的PHPstudy的WWW目录下面:
之后我们在浏览器中访问:emlog下的src:
之后他会自动跳转至:http://127.0.0.1:8080/emlog/src/install.php
之后我们在本地进行创建,填写数据库名、数据库密码、用户名以及用户密码即可!
漏洞分析
我们在本地访问登录页面:
我们可以在admin/ globals.php下查看到该登录页面的验证机制:
之后我们转至LoginAuth :: checkUser这个关键函数验证的位置我们看他实现的过程:
在include \ lib \ loginauth.php文件中:
实现用户名、密码、验证码的验证!
当登录失败会调用loginPage方法,我们继续查看:
但是遗憾的是在整个登录流程并没有立即对验证码的SESSION进行销毁。便导致了漏洞的产生
漏洞利用
在整个流程中,只需要获取一次验证码,接下来就不用获取便可使用爆破了。
下面我们在本地物理主机中进行访问:
设置代理,开启burp suite进行抓包!
首先我们进行测试:
User:admin pws:1111111111
之后我们使用burp suite进行一次完整的爆破测试:
User :admin psw:111111
之后进入Intruder模块:
设置变量:
设置攻击字典(此处我们使用数字进行演示所以就设置为Number):
开始爆破:
我们找到我们开始时设置的密码与账号,爆破成功!同时也说明此漏洞存在,当我们面对的是一个真实的网站是我们可以使用“字典进行暴力破解”,以此来获得账号与密码!
成功进入后台!
实验Emlog源代码下载:https://pan.baidu.com/s/1bvouC6M6TpVcrzcCqg11UQ