漏洞描述
AppWeb 是一个嵌入式 Web 服务器,基于由 Embedthis Software LLC 开发和维护的开源 GPL 协议。它是用C / C++编写的,几乎可以在任何现代操作系统上运行。当然,它旨在为嵌入式设备提供一个 Web 应用程序容器。
AppWeb 可以配置为身份验证,其中包括以下三种身份验证方法:
basic
、传统HTTP基本认证digest
,改进了 HTTP 基本身份验证。在此模式下,Cookie 将用于身份验证而不是标头。form
、基于 HTML 的表单身份验证
在低于 7.0.3 的 Appweb 版本中,存在与 authCondition 函数相关的逻辑缺陷。使用伪造的 HTTP 请求,可以绕过 和 登录类型的身份验证,对于digest和form两种认证方式,如果用户传入的密码为null
(也就是没有传递密码参数),appweb将因为一个逻辑错误导致直接认证成功,并返回session。
漏洞环境及复现
搭建docker环境
访问8080端口,抓包修改Authorization,因为我们没有传入密码字段,所以服务端出现错误,直接返回了200,且包含一个session:
利用获取到的 session,修改请求头为POST 添加 session 请求体