安全认证相关漏洞挖掘:高级攻防01

VSole2021-11-24 16:35:26

拿到一个系统后,很多情况下只有一个登录入口。如果想进一步得到较为高危的漏洞,只能去寻找权限校验相关的漏洞,再结合后台洞,最终得到一个较为满意的漏洞。

这里列出一些较为常见的安全认证配置:

  • Spring Security
  • Apache Shiro
  • 服务器本身(Tomcat、Nginx、Apache)401 认证
  • Tomcat 安全认证(结合Web.Xml) 无需代码实现
  • JSON Web Token

以上只是简单列出了一些笔者见过的、常见的安全认证配置组件。不同的鉴权组件存在异同的审计思路。

1 寻找未授权

这是笔者首先会入手去看的点,毕竟如果能直接从未授权的点进入,就没必要硬刚鉴权逻辑了。

1.一些第三方组件大概率为未授权应用

Druid、Webservice、Swagger等内置于程序中的应用大多被开发者设计为无需权限校验接口。

第三方组件本身又存在历史漏洞,且以jar包的形式内置于应用中,低版本的情况很常见。

利用Druid的未授权获取了管理员session:

2.安全认证框架配置中存在的未授权接口

出于业务需要或者开发失误,开发者会对外开放一些接口,这些接口无需访问权限。

细心查看配置文件中各个Filter、Servlet、Listener,可能有意想不到的收获。

Web.Xml

这里是以拦截器的方式,对外开放了未授权请求处理:

Spring-mvc.Xml

Tomcat 安全配置

Apache Shiro、Spring Security等支持以@Configuare注解方式配置权限认证——只要按照配置去寻找。当然以上框架也支持配置文件方式配置,寻找思路一样。

配置类

3.未授权访问接口配合ssrf获取localhost本身需鉴权服务

一些多服务组件中,存在服务之间的相互调用。服务之间的相互调用或许不需要身份校验,或者已经配置了静态的身份凭证,又或者通过访问者IP是否为127.0.0.1来进行鉴权。

这时我们需要一个SSRF漏洞即可绕过权限验证。很经典的为Apache Module mod_proxy场景绕过:SSRF CVE-2021-4043。

2 安全认证框架本身存在鉴权漏洞

1.Apache Shiro

Shiro相关的权限绕过漏洞,我觉得可以归类到下面的路径归一化的问题上。

2.Spring Security

某些配置下,存在权限绕过——当配置文件放行了/**/.js时。

3.JWT 存在的安全风险

  • 敏感信息泄露
  • 未校验签名
  • 签名算法可被修改为none
  • 签名密钥爆破
  • 修改非对称密码算法为对称密码算法
  • 伪造密钥(CVE-2018-0114)

jwt测试工具:

https://github.com/ticarpi/jwt_tool

3 静态资源访问

静态资源css、js等文件访问往往不需要权限,开发者可能将鉴权逻辑放在Filter里。当我们在原有路由基础上添加.js后缀时,即可绕过验证。

这里可能会有一个问题,添加了.js后缀后是否还能正常匹配到处理类呢?

答案是,在spring应用里是可以的。默认配置下的spirng configurePathMatch支持添加后缀匹配路由,如果想开启后缀匹配模式,需要手动重写configurePathMatch方法:


4 路径归一化问题

1.简单定义

两套组件对同一个URI解析,或者说处理的不一致,导致路径归一化问题的产生。

orange 的 breaking parser logic是他在2018黑帽大会上的演讲议题,后续许多路径归一化的安全问题,都是延伸自他的PPT。

2.Shiro权限绕过漏洞

一个很经典的路径归一化问题,导致权限的绕过,比如Shiro CVE-2020-1957。

针对用户访问的资源地址,也就是URI地址,shiro的解析和 spring的解析不一致。

shiro的Ant中的*通配符匹配是不能匹配这个URI 的/test/admin/page/。shiro认为它是一个路径,所以绕过了/test/admin/*这个ACL。

而spring认为/test/admin/page和/test/admin/page/是一样的,它们能在spring中获取到同样的资源。

3.CVE-2021-21982 VMware CarbonBlack Workstation

算是一个老1day了,组件本身身份验证通过Spring Security + JWT来实现。且存在两套url的处理组件:Envoy以及Springboot。

PS:Envoy是专为大型现代SOA(面向服务架构)架构设计的L7 代理和通信总线。

通过diff可以定位到漏洞点,一个本地获取token的接口:

但是我们通过外网直接访问无法获取到token:

简单了解一下组件的基本架构:

抓一下envoy 与本机服务的通信。rr师傅yyds:

./tcpdump -i lo -nn -s0 -w lo1.cap -v

envoy本身起到一个请求转发作用,可以精确匹配到协议ip端口 url路径等,指定很详细的路由转发规则,且可以对请求进行转发和修改:

url编码即可绕过envoy的转发规则,POC如下:

由于envoy转发规则不能匹配URL编码,但Springboot可以理解,两个组件对url的理解不同,最终导致漏洞产生。

3.Other

扩展一下思路,当存在一个或者多个代码逻辑处理url时,由于对编码、通配符、"/"、";" 等处理的不同,极有可能造成安全问题。

5 Apache、Nginx、Jetty、HAProxy 等

Chybeta在其知识星球分享了很多:

Nginx 场景绕过之一: URL white spaces + Gunicorn

https://articles.zsxq.com/id_whpewmqqocrw.html

Nginx 场景绕过之二:斜杠(trailing slash) 与 #

https://articles.zsxq.com/id_jb6bwow4zf5p.html

Nginx 场景绕过之三:斜杠(trailing slash) 与 ;

https://articles.zsxq.com/id_whg6hb68xkbd.html

HAProxy 场景绕过之一: CVE-2021-40346

https://articles.zsxq.com/id_ftx67ig4w57u.html

利用hop-by-hop绕过:结合CVE-2021-33197

https://articles.zsxq.com/id_rfsu4pm43qno.html

Squid 场景绕过之一: URN bypass ACL

https://articles.zsxq.com/id_ihsdxmrapasa.html

Apache Module mod_proxy 场景绕过:SSRF CVE-2021-4043。

6 简单的fuzz测试

造成权限绕过的根本原因可能有多种,但是不妨碍我们总结出一些常见的绕过方式——编码、插入某些特定字符、添加后缀等。远海曾公布一个权限绕过的fuzz字典:

最后,放上参考链接,大家可以自行学习。

https://wx.zsxq.com/dweb2/index/group/555848225184

https://www.vmware.com/security/advisories/VMSA-2021-0005.html

https://cloud.tencent.com/developer/article/1552824

漏洞挖掘shiro
本作品采用《CC 协议》,转载必须注明作者和本文链接
漏洞挖掘是指对应用程序中未知漏洞的探索,通过综合应用各种技术和工具,尽可能地找出其中的潜在漏洞。cookie的key为RememberMe,并对相关信息进行序列化,先使用aes加密,然后再使用base64编码处理形成的。在网上关于Shiro反序列化的介绍很多,我这里就只简单介绍一下,详情各位可以看下大神们对其源码的分析。
0x01 确定目标无目标随便打,有没有自己对应的SRC应急响应平台不说,还往往会因为一开始没有挖掘漏洞而随意放弃,这样往往不能挖掘到深层次的漏洞。所以在真的想要花点时间在SRC漏洞挖掘上的话,建议先选好目标。0x02 确认测试范围前面说到确定测什么SRC,那么下面就要通过一些方法,获取这个SRC的测试范围,以免测偏。
对于公益SRC来说,想要冲榜就不能在一个站上浪费大量时间,公益SRC对洞的质量要求不高,所以只要 花时间,还是可以上榜的。在对某站点进行测试SQL注入的时候,先通过一些方式测试是否可能存在漏洞,然后可以直接sqlmap一把梭,也可以手工测试,然后提交漏洞。任意注册算是低危漏洞,不过也有两分。不管是进行SRC漏洞挖掘,还是做项目进行渗透测试,又或者是打红蓝对抗,一定要做好信息收集。
拿到一个系统后,很多情况下只有一个登录入口。如果想进一步得到较为高危的漏洞,只能去寻找权限校验相关的漏洞,再结合后台洞,最终得到一个较为满意的漏洞
文章中所涉及漏洞已交给相关漏洞平台1、起因日常闲逛,翻到了某后台系统先是日常手法操作了一番,弱口令走起admin/123456 yyds!本来打算批量扫备份拿源码,但后面发现,github的链接就在后台介绍处。。
分析漏洞的本质是为了能让我们从中学习漏洞挖掘者的思路以及挖掘到新的漏洞,而CodeQL就是一款可以将我们对漏洞的理解快速转化为可实现的规则并挖掘漏洞的利器。根据网上的传言Log4j2的RCE漏洞就是作者通过CodeQL挖掘出的。虽然如何挖掘的我们不得而知,但我们现在站在事后的角度再去想想,可以推测一下作者如何通过CodeQL挖掘漏洞的,并尝试基于作者的思路挖掘漏洞
细说从0开始挖掘cms-
2022-08-17 16:26:57
确立目标挖洞的第一步首先是确立一个目标,也就是找个cms来挖,这里可以通过github,gitee或者谷歌百度直接去搜cms。或者cnvd查看相应的信息,通过查看相应的信息可以提高我们挖洞的效率,我们从中可以知道该项目已经存在漏洞,我们到时候挖就可以看看相应的地方会不会还存在漏洞或者避免挖到别人挖过的漏洞。本次挖掘漏洞是ofcms,首先先下载一下源码,然后解压丢一边,回到网页来看一下项目文档。
0x01 前言最近看到了关于很多红队方面的文章,如何进行信息收集,从单一目标或多个目标中进行快速查找漏洞。今天提供一种针对较多资产或目标的情况下进行批量识别目标框架进行针对性漏洞挖掘的方式。0x02 正文最近 EHole 更新了3.0版本,提供了 finger 与 fofaext 参数,fofaext参数主要从fofa进行批量获取 IP 的端口情况,而 finger 则进行批量进行指纹验证识别。目前开源的指纹将近1000条,基本上都是比较常遇到的系统,另外 finger 参数则可以直接识别下面格式的地址:IP:PORT
0x01 前言最近看到了关于很多红队方面的文章,如何进行信息收集,从单一目标或多个目标中进行快速查找漏洞。今天提供一种针对较多资产或目标的情况下进行批量识别目标框架进行针对性漏洞挖掘的方式。
VSole
网络安全专家