一些审计的技巧收集
2023-08-22 15:03:25

随手记录一些审计的时候的东西,大概率不会是漏洞,就是一些审计过程

Spring

Spring-Security 中的 PreAuthorize 注解

首先类似这个:

image-20230925172325613

这里是一个 el 表达式,会执行 el这个变量的 check 函数:

image-20230925172419373

返回 bool 类型,返回 true 就是鉴权成功,那么他是在哪里调用的呢

securityinterceptor

1
org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor#invoke

image-20230925172539597

往下走两层,最后在这决定:

1
org.springframework.security.access.prepost.PreInvocationAuthorizationAdviceVoter#vote

image-20230925173307484

里面就会执行这个 el 表达式,根据 el 表达式的返回判断是否授权。

*** 这个 beforInvocation 是在调用函数前一定执行的,所以暂时没想到什么绕过的方法 ***

通用的技巧

版本比较

在看 Confluence 的新洞的时候没有看出来,看了人家写的分析才看出来的,总结了一下原因,就是不会对比两个版本的一些 jar,不知道怎么高效快速的找到一些关键点

这里尝试了一个方法感觉还行,希望下次可以起到作用。

首先是把一些关键的 lib 都可以解压了:

image-20231011184526456

解压出 class 以后,因为 confluence 的一些自己的包都是在 com.atlassian* 下面的文件,所以可以这么做算出所有 md5:

1
find com.atlassian* -name "*.class" -exec md5sum {} >> ../851_3_cls.txt \;

8.5.18.5.2都算出来之后就可以比较两个文件了

这里可以用 beyond compare,这个工具好像还可以反编译 class 文件进行比较。

首先需要设置一下这个工具:

image-20231011184911789

点击规则,

因为格式是:

1
md5 文件名

所以这里把空格以后都设置成不重要的文本,然后就行了:

image-20231011185035783

这里选上 差别 次要,就可以看到,一万多个文件里,就只有几十个,其中关键的文件一眼就能看出来了~

(希望下次有类似需求的时候这个能派上用场)

Prev
2023-08-22 15:03:25
Next