Appweb(CVE-2018-8715)漏洞复现

本文详细介绍了Appweb HTTP服务器的一个安全漏洞,该漏洞允许在不提供密码的情况下通过digest和form认证。在7.0.2及更早版本中,逻辑错误导致直接认证成功。复现过程包括需要已知用户名,通过Burp Suite抓包并修改请求方式,利用POST传递session信息以绕过验证。作者强调了登录验证逻辑的重要性,并建议加强安全意识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容涉及点:

  1. 简介
  2. 原理
  3. 影响范围
  4. 复现过程
  5. 自己的心得体会

Appweb简介

Appweb是一个HTTP Web服务器。这是直接集成到客 户的应用和设备,便于开发和部署基于Web的应用程序和设备。

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

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

漏洞原理

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

漏洞影响范围:
Appweb 7.0.2及早期版本。

复现过程:
1.该漏洞的存在,必须知道用户名!
利用该漏洞需要知道一个已存在的用户名,当前环境下用户名为joshua
这里我是拿docker在ubantu上搭建的环境,然后使用kali linux访问!

目标靶机:ubantu:192.168.44.128
kali linux: 192.168.44.130
<

关于CVE-2018-1270的信息似乎并未直接提供于所给的参考资料中,而提到的是其他类似的Spring Data REST漏洞CVE-2017-8046和CVE-2018-1273。然而,在讨论这些相似类型的漏洞时,可以推测CVE-2018-1270可能也涉及到了SpEL(Spring Expression Language)表达式的不安全处理,这通常意味着应用程序未能正确验证或转义用户输入的数据就将其作为表达式的一部分来解析。 对于CVE-2017-8046而言,该漏洞存在于Spring Data REST 2.6到2.6.10版本以及特定版本的Spring Data Commons中[^1]。当通过PATCH请求更新资源属性时,如果路径参数未经过适当的安全检查就被传递给了`setValue()`函数,则可能导致恶意构造的JSON Patch文档中的数据被执行为SpEL表达式,从而允许远程代码执行。 至于CVE-2018-1273,受影响的是Spring Data Commons及其关联组件的不同版本范围内。此漏洞同样源于对用户提交的内容缺乏足够的防护措施,使得攻击者能够利用精心设计的HTTP POST请求向服务器发送含有恶意SpEL表达式的payload,进而控制应用逻辑甚至操作系统层面的操作[^5]。 尽管这里没有具体描述CVE-2018-1270的技术细节,但从上述两个案例可以看出,这类RCE(Remote Code Execution, 远程代码执行)漏洞往往依赖于以下几个方面: - **易受攻击的应用程序接口**:通常是那些接受来自客户端未经充分校验的数据并试图动态评估它们的地方。 - **存在缺陷的功能模块**:比如在此处提及的支持RFC6902标准的JSON-Patch操作或是某些形式的对象映射机制。 要复现这样的漏洞,一般建议遵循如下指导原则而不是具体的步骤说明: ### 准备工作 #### 构建实验环境 建立一个隔离且可控的实验室环境非常重要,这样可以在不影响生产系统的前提下探索潜在风险。可以选择Docker容器化部署方式快速搭建目标软件栈,并确保安装了已知存在问题的具体版本号的服务端件。 ```bash docker pull vulhub/spring:cve-2017-8046 # 或者针对不同漏洞选择合适的镜像标签 docker run -d --name spring-vuln-app -p 8080:8080 vulhub/spring:cve-2017-8046 ``` > 注意:以上命令仅作为一个例子展示如何启动带有指定漏洞的应用实例;实际操作前应查阅官方资料确认适用于CVE-2018-1270的最佳实践方案。 #### 获取必要的工具集 准备好用于发起网络请求的工具,例如curl、Postman或其他任何支持自定义HTTP头字段设置的API调试器。另外还需要具备一定的编程能力以便编写脚本来自动化测试过程。 ### 测试流程 #### 发送特制请求 基于之前了解到的知识点,尝试构造能触发内部错误响应或者异常行为的有效载荷。由于本问题是围绕着SpEL表达式的滥用展开的,因此应该特别关注能否让服务端解释特殊字符序列(如`${}`包围起来的部分)为合法语句。 ```json { "field": "${T(java.lang.Runtime).getRuntime().exec('touch /tmp/exploit_worked')}" } ``` 这段JSON片段展示了怎样嵌入一段简单的Java反射调用来创建文件标记以证明概念可行性。当然,真实场景下的有效负载可能会更加复杂多变,取决于待测平台特性及权限级别等因素的影响。 #### 验证结果反馈 最后一步就是观察系统反应情况,看是否成功实现了预期之外的动作。可以通过查看日志记录、监控进程状态变化亦或是直接检验物理存储介质上的新实体等方式来进行判断。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战神/calmness

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值