海康威视ISC认证绕过分析

admin 2025年1月22日09:35:24评论9 views字数 1991阅读6分38秒阅读模式

认证绕过依赖项

在每一个模块的cas-client.properties文件中,都有如下字段的参数配置

# 不拦截的地址,支持正则表达式,按照组件需求配置cas.ignore.pattern=/login,*.html,*.eot,*.woff,*.ttf,*.svg,*.gif,*.css,*.js,*.json,/casLogin,*.ico,*.icon,*.png,*.map,/api/meta/qrcode,/api/session,/api/session/captcha,/api/locales,/api/meta,/api/menus,......

其他模块的相关配置如下

搜索关键字: cas.ignore.pattern

海康威视ISC认证绕过分析

认证的时候是通过正则匹配的方式,来判断当前请求的路径是否需要认证

每一个模块下都有一个这样的认证函数。

海康威视ISC认证绕过分析

绕过过程调试

这里的认证绕过,主要是通过url的处理的绕过,所以关键在对url的处理上。

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter#handle

org.springframework.web.servlet.resource.ResourceHttpRequestHandler#handleRequest

过程如下:

假设我们想访问portal模块下的/front/common/getToken接口,正常情况下未授权访问后,会跳转到登录页面。

海康威视ISC认证绕过分析

跟踪一下从入口到报错,这整个过程对URL的处理。

我们的请求进入到应用后,会进入到认证过滤器,直接在SSO的认证过滤器处下断点

海康威视ISC认证绕过分析

请求的链接成功断在了断点处

海康威视ISC认证绕过分析

这个url不是忽略的,直接进入下边的else逻辑块。 这块逻辑直接拼接Cas认证路径,跳转到Cas了。

海康威视ISC认证绕过分析

上边的跟踪并没有多大意义,没有跟到对URL路径的具体处理逻辑,下边尝试构造绕过的URL,再次进行跟踪。

利用..;/绕过认证

改进url如下:https://xx.xx.xxx.x/portal/ui/login/..;/..;/front/common/getToken,利用/ui/login被忽略的特性,进行认证绕过。

直接在isRequestUrlExcluded()函数中下断点,这里事通过getRequestUrl()来获取URL路径,很大概率存在漏洞。

海康威视ISC认证绕过分析

成功返回True,也就是说成功的绕过了认证,接下来就进入了下一个过滤器。海康威视ISC认证绕过分析

该模块一共18个过滤器,当前是第11个过滤器,

海康威视ISC认证绕过分析

在最后一个过滤器的时候,会调用处理程序,对URL路径进行处理。

org.springframework.web.servlet.resource.ResourceHttpRequestHandler#getResource通过该函数进行请求的资源获取。如果没找到就返回404,如果找到了,就进一步处理。

海康威视ISC认证绕过分析

进入getResource后默认通过如下映射处理器获取路径。

海康威视ISC认证绕过分析

如果返回空,再用如下两个映射处理器获取路径

海康威视ISC认证绕过分析

其中org.springframework.web.util.UrlPathHelper.PATH处理器已经把url路径中的;给去掉了。

org.springframework.web.util.UrlPathHelper#resolveAndCacheLookupPath

海康威视ISC认证绕过分析

其他的处理器

海康威视ISC认证绕过分析

之后就是从如下几个目录中找到对应的资源,这里很显然没找到。

海康威视ISC认证绕过分析

这里拼接了一个这样的路径,很显然找不到东西

海康威视ISC认证绕过分析那么,这时候就因该思考,前边某个地方应该进入接口路径的处理逻辑,而不是进入文件路径的处理逻辑。

经过再次整理,在org.springframework.web.servlet.DispatcherServlet#doDispatch中找到获取映射处理器的函数调用

海康威视ISC认证绕过分析

通过getMappingsByDirectPath()在映射接口列表中获取对应的接口映射处理器

海康威视ISC认证绕过分析

当然,这是在正确获取了url路径的情况下。我们构造的绕过认证的路径,很显然不是正常路径。

正常情况下获取到的路径

海康威视ISC认证绕过分析

绕过认证构造的路径

海康威视ISC认证绕过分析

如果是接口的认证绕过,就需要消除这个影响。

利用;.css绕过认证

现在需要满足一个条件,用来绕过认证的字符,在认证绕过之后,需要利用应用自身机制把多余的字符删除掉。那么就需要认证的字符串放到url后边,利用/*.css的规则就比较合适了。

经过一番查找,很遗憾,该模块没有后缀忽略的规则。。。

海康威视ISC认证绕过分析

可绕过总结

应用程序用匹配规则是正则匹配,这个匹配特别严格,是全字符匹配。

海康威视ISC认证绕过分析

本地写了个脚本,看一下具体执行情况。大志分这么几种情况,方案一采用的是前边验证,方案二采用的后缀验证。

海康威视ISC认证绕过分析

根据上边脚本运行的情况,再匹配忽略规则,就很容易知道哪些可以用来绕过前边检查,哪些可以用来绕过后缀检查了。

原文始发于微信公众号(船山信安):海康威视ISC认证绕过分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月22日09:35:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   海康威视ISC认证绕过分析https://cn-sec.com/archives/3653167.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息