Vulhub漏洞系列:AppWeb认证绕过漏洞(CVE-2018-8715)
00.前言:
这篇文章将对该漏洞进行简介并复现,同时简要说明Vulhub的使用方法,适合小白一起学习,大佬看看就好☺
01.AppWeb简介
AppWeb是Embedthis Software LLC公司负责开发维护的一个基于GPL开源协议的嵌入式Web Server,主要的设计思路是安全。
这是直接集成到客户的应用和设备,便于开发和部署基于Web的应用程序和设备。Appweb 速度快而且体积小 ,其中包括支持动态网页制作,服务器端嵌入式脚本过程中的CGI ,可加载模块:SSL ,摘要式身份验证,虚拟主机, Apache样式配置,日志记录,单和多线程应用程序。它提供了大量的文档和示例。
02.漏洞描述
AppWeb可以进行认证配置,其认证方式包括以下三种:
- basic 传统HTTP基础认证
- digest 改进版HTTP基础认证,认证成功后将使用Cookie来保存状态,而不用再传递Authorization头
- form 表单认证
其7.0.3之前的版本中,对于digest和form两种认证方式,如果用户传入的密码为null
(也就是没有传递密码参数),appweb将因为一个逻辑错误导致直接认证成功,并返回session。
原理参考:https://ssd-disclosure.com/index.php/archives/3676
03.漏洞复现
首先,在vulhub-master中漏洞的相应位置打开终端,输入docker-compose up -d
打开环境:
sudo docker-compose up -d
然后输入docker ps
查看环境是否打开成功:
docker ps
接下来便可以开始漏洞的复现了。由于该漏洞是因为在传输密码时输入为空所导致的逻辑漏洞,我们开始实操:
访问地址http://your-ip:8080
并抓包,send to repeater:
然后在get数据包中加入我们构造好的参数(该靶机知道用户名为admin):
Authorization: Digest username=admin
咋们Go一下看看:
可以看到刚刚因为只传入了用户名而没有密码字段,服务端出现错误并绕过了登录验证直接返回了200,并且在返回包内可以看到set-cookie。
将得到的session设置在浏览器中,可以看到成功绕过登录后的界面:
在复现的过程中可以看出这个漏洞的利用规则,即要使用这个漏洞必须先知道用户名,这样才能进行下一步的操作:
Authorization: Digest username=xxx
最后复现完漏洞就可以关闭环境了:
sudo docker-compose down
结束语:这是抬锅整理出来的复现过程希望能对大家有帮助☺