[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java

Step 1

点击help按钮后发现:

URL变成:
url/Download?filename=help.docx
而回显:
java.io.FileNotFoundException:{help.docx}

而当我尝试尝试POST,发现文件成功下载:

image

Step 2

发现可能的漏洞点后,结合WEB-INF相关知识(见文末)

可以下载WEB-INF/web.xml

POST参数:
filename=WEB-INF/web.xml

得到内容:

    ...
    <servlet>
        <servlet-name>FlagController</servlet-name>
        <servlet-class>com.wm.ctf.FlagController</servlet-class>
    </servlet>
    ...

于是我们可以构造

POST参数:
filename=WEB-INF/classes/com/wm/ctf/FlagController.class

得到的文件中有base64编码,解压即得到flag

WEB-INF

WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。 如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。

Tomcat的WEB-INF目录,每个j2ee的web应用部署文件默认包含这个目录。

Nginx在映射静态文件时,把WEB-INF目录映射进去,而又没有做Nginx的相关安全配置(或Nginx自身一些缺陷影响)。

从而导致通过Nginx访问到Tomcat的WEB-INF目录(要注意是通过Nginx,而不是Tomcat访问到的,因为Tomcat是禁止访问这个目录的)。

WEB-INF 主要包含以下文件或目录:

WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.

WEB-INF/database.properties : 数据库配置文件

WEB-INF/classes/ : 一般用来存放Java类文件(.class)

WEB-INF/lib/ : 用来存放打包好的库(.jar)

WEB-INF/src/ : 用来放源代码(.asp和.php等)

漏洞成因: 通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。

漏洞检测以及利用方法: 通过找到web.xml文件,推断class文件的路径,最后得到class文件,再通过反编译class文件,得到网站源码。

找web.xml: 直接请求/WEB-INF/web.xml或者更换为POST请求

posted @ 2024-07-30 16:48  8o1er9t  阅读(12)  评论(0编辑  收藏  举报