[RoarCTF 2019]Easy Java

文章讨论了WEB-INF/web.xml文件泄露的问题,这是由于在某些特定配置下,允许访问原本应受保护的WEB-INF目录导致的。攻击者可以通过修改请求参数获取敏感信息,如FlagController.class文件,并通过反编译得到Flag。防御措施包括修改Nginx配置以禁止访问WEB-INF目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考资料:

web代码安全:WEB-INF/web.xml泄露 - 知乎 (zhihu.com)

(1条消息) (详解)[RoarCTF 2019]Easy Java_FPointzero的博客-CSDN博客

[RoarCTF 2019]Easy Java_浑水摸鱼的咸鱼的博客-CSDN博客

考点:

WEB-INF/web.xml泄露

WEB-INF是JAVA的WEB应用安全目录

危害

读取WEB-INF目录中的内容,从而造成源码泄露。

漏洞成因及利用

WEB-INF是JAVA的WEB应用安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

/WEB-INF/web.xml    #WEB应用程序配置文件,描述了servlet和其它应用组件配置及命名规则。
/WEB-INF/classes/    #含站点所有的class文件
/WEB-INF/lib/       #存放WEB应用需要的各种JAR文件
/WEB-INF/src/       #源码目录
/WEB-INF/database.properties      #数据库配置文件

一般情况,isp引擎默认都是禁止访问WEB-INF目录的,在一些特定的场合(Nginx配合Tomcat做均衡负载或集群等情况时,Nginx不会去考虑配置其他类型引擎导致的安全问题而引入到自身的安全规范中来),从而造成源码泄露。

题目复现

打开是一个登录框

发现有一个help,点进去看看

 

 

这个错误提示表明Java在打开文件"{help.docx}"时发现文件不存在。此错误通常与文件路径有关。可能是提供的路径不正确,或者文件实际上不存在。

尝试直接用get方式构造payload无法下载文件 

可以通过bp工具进行修改POST传参获取web-inf/web.xml配置文件,观察映射及各容器状况

直接传入,filename=/WEB-INF/web.xml

可以看到flag文件

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

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容

其实说明了这个就是JAVA源代码进行编译后所产生的后缀带有.class的东西。于是我们可以下载这个.class文件再利用反编译手段来获得flag

得到最终payload:

filename=/WEB-INF/classes/com/wm/ctf/FlagController.class

里面看到有一串base64,解码即可

 

防御思路

修改Nginx配置文件禁止访问WEB-INF目录

location ~ ^/WEB-INF/* { deny all; }或者return 404
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值