一些审计的技巧收集
2023-08-22 15:03:25
随手记录一些审计的时候的东西,大概率不会是漏洞,就是一些审计过程
Spring
Spring-Security 中的 PreAuthorize 注解
首先类似这个:
这里是一个 el
表达式,会执行 el
这个变量的 check
函数:
返回 bool 类型,返回 true
就是鉴权成功,那么他是在哪里调用的呢
在 security
的 interceptor
:
1 | org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor#invoke |
往下走两层,最后在这决定:
1 | org.springframework.security.access.prepost.PreInvocationAuthorizationAdviceVoter#vote |
里面就会执行这个 el
表达式,根据 el 表达式的返回判断是否授权。
*** 这个 beforInvocation 是在调用函数前一定执行的,所以暂时没想到什么绕过的方法 ***
通用的技巧
版本比较
在看 Confluence 的新洞的时候没有看出来,看了人家写的分析才看出来的,总结了一下原因,就是不会对比两个版本的一些 jar
,不知道怎么高效快速的找到一些关键点
这里尝试了一个方法感觉还行,希望下次可以起到作用。
首先是把一些关键的 lib
都可以解压了:
解压出 class
以后,因为 confluence 的一些自己的包都是在 com.atlassian*
下面的文件,所以可以这么做算出所有 md5:
1 | find com.atlassian* -name "*.class" -exec md5sum {} >> ../851_3_cls.txt \; |
8.5.1
和 8.5.2
都算出来之后就可以比较两个文件了
这里可以用 beyond compare
,这个工具好像还可以反编译 class
文件进行比较。
首先需要设置一下这个工具:
点击规则,
因为格式是:
1 | md5 文件名 |
所以这里把空格以后都设置成不重要的文本,然后就行了:
这里选上 差别
次要
,就可以看到,一万多个文件里,就只有几十个,其中关键的文件一眼就能看出来了~
(希望下次有类似需求的时候这个能派上用场)