CVE-2018-8715(AppWeb认证绕过漏洞)

AppWeb认证绕过漏洞

漏洞描述

  1. 漏洞编号:CVE-2018-8715
  2. 影响版本:7.0.3之前的版本

https://www.cvedetails.com/cve/CVE-2018-8715/

         3.漏洞产生原因:

AppWeb可以进行认证配置,其认证方式包括以下三种:

- basic 传统HTTP基础认证

- digest 改进版HTTP基础认证,认证成功后将使用Cookie来保存状态,而不用再传递Authorization

- form 表单认证

 

7.0.3之前的版本中,对于digestform两种认证方式,如果用户传入的密码为`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

posted @ 2021-01-02 23:52  toby123  阅读(1340)  评论(0编辑  收藏  举报