点击界面上的help
通过URL filename参数发现疑似任意文件下载漏洞
但是用get的方式无法下载成功,显示文件没有找到异常,可以尝试使用post的方式下载文件,发现成功下载文件
我们可以直接下载WEB-INF/web.xml配置文件,WEB-INF文件夹下的文件是不能被直接访问到的,通常是用来存储重要的配置文件等
这里参考了一下其他大佬写的博客有关于WEB-INF的
WEB-INF主要包含一下文件或目录: /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中 /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件 /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。 /WEB-INF/database.properties:数据库配置文件 漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
WEB-INF/web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 5 version="4.0"> 6 7 <welcome-file-list> 8 <welcome-file>Index</welcome-file> 9 </welcome-file-list> 10 11 <servlet> 12 <servlet-name>IndexController</servlet-name> 13 <servlet-class>com.wm.ctf.IndexController</servlet-class> 14 </servlet> 15 <servlet-mapping> 16 <servlet-name>IndexController</servlet-name> 17 <url-pattern>/Index</url-pattern> 18 </servlet-mapping> 19 20 <servlet> 21 <servlet-name>LoginController</servlet-name> 22 <servlet-class>com.wm.ctf.LoginController</servlet-class> 23 </servlet> 24 <servlet-mapping> 25 <servlet-name>LoginController</servlet-name> 26 <url-pattern>/Login</url-pattern> 27 </servlet-mapping> 28 29 <servlet> 30 <servlet-name>DownloadController</servlet-name> 31 <servlet-class>com.wm.ctf.DownloadController</servlet-class> 32 </servlet> 33 <servlet-mapping> 34 <servlet-name>DownloadController</servlet-name> 35 <url-pattern>/Download</url-pattern> 36 </servlet-mapping> 37 38 <servlet> 39 <servlet-name>FlagController</servlet-name> 40 <servlet-class>com.wm.ctf.FlagController</servlet-class> 41 </servlet> 42 <servlet-mapping> 43 <servlet-name>FlagController</servlet-name> 44 <url-pattern>/Flag</url-pattern> 45 </servlet-mapping> 46 47 </web-app>
代码第39行发现了Flag有关的类
直接访问URL地址发现报错
这时想到了可以利用任意文件下载漏洞,下载Flag类class文件,目录如下图
发现一串类似base64字符,拿去解密后发现是flag