CVE-2018-8715(AppWeb认证绕过漏洞)
AppWeb认证绕过漏洞
漏洞描述
- 漏洞编号:CVE-2018-8715
- 影响版本:7.0.3之前的版本
https://www.cvedetails.com/cve/CVE-2018-8715/
3.漏洞产生原因:
AppWeb可以进行认证配置,其认证方式包括以下三种:
- basic 传统HTTP基础认证
- digest 改进版HTTP基础认证,认证成功后将使用Cookie来保存状态,而不用再传递Authorization头
- form 表单认证
其7.0.3之前的版本中,对于digest和form两种认证方式,如果用户传入的密码为`null`(也就是没有传递密码参数),appweb将因为一个逻辑错误导致直接认证成功,并返回session。
参考链接:
- https://ssd-disclosure.com/index.php/archives/3676
- https://github.com/embedthis/appweb/issues/610
启动环境:docker-compose up -d
vulnIP:192.168.1.232
hackIP:192.168.1.37
访问`http://192.168.1.232:8080`,可见需要输入账号密码。
漏洞发现
关注AppWeb的版本
漏洞利用
利用该漏洞需要知道一个已存在的用户名,当前环境下用户名为`admin`。
构造头`Authorization: Digest username=admin`,并发送如下数据包:
可见,因为我们没有传入密码字段,所以服务端出现错误,直接返回了200,且包含一个session:
设置这个session到浏览器,即可正常访问需要认证的页面:
问题汇总
1.利用该漏洞需要知道一个已存在的用户名
2.Burp不知名原因,会消失最后一个字节
显示情况
发送的GET请求,用户名为admin
不知名原因,仅显示admi
建议复现的时候确认一下HeadersTab下的是否正确传参
修复方案
打补丁,升级到最新版本~
指纹:FOFA
由于不知道服务器的Appweb的用户名,因此不能批量利用。但我想着可以假设一个用户名,然后就可以批量利用了。这样的话,如何获取更多装有Appweb的服务器呢?这就是一个指纹的问题了,通过分析HTTP包,还是有所发现的。
看到HTTP头里有一个“WWW-Authenticate:Digest.....”的内容
于是去fofa里找了一下,发现了大量服务器,看WWW-Authenticate内容差不多,但不确定是否真实存在的Appweb,也不知道Appweb的版本,但是这样做至少把范围缩小了,并且可以通过假定一个用户名进行批量利用了。
2021-01-02 23:51:50