[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java

前言

  • 昨天发布了我的第一篇博客,里面的内容有很多都是根据其他师傅的博客来写的。发布的时候,需要选择原创还是转载,我感觉自己也参与了一小部分,就填成了原创。所以决定,以后要是遇到一篇文章能把我讲懂的,我就选转载(比如这篇);如果我翻阅了好几篇wp才看懂,然后缝合的,就原创(心虚)。
  • 转载文章:https://www.cnblogs.com/karsa/p/13130130.html

前置知识

WEB-INF/web.xml泄露

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

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:数据库配置文件

java web工程目录结构

img

漏洞成因:

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

漏洞检测以及利用方法:

通过找到web.xml文件,推断class文件的路径,最后直接访问class文件,再通过反编译class文件,得到网站源码。

Servlet访问URL映射配置

由于客户端是通过URL地址访问Web服务器中的自愿,所以Servlet程序若想被外界访问,必须把Servlet程序映射到一个URL地址上,这个工作再web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。

<servlet>元素以哦那个与注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。例如:

</servlet>
    <servlet-name>ServletDemo1</servlet-name>
    <servlet-class>cn.itcast.ServletDemo1</servlet-class>
</servlet>
</servlet-mapping>
    </servlet-name>/ServletDemo1</servlet-name>
    </url-pattern>/ServletDemo1</url-pattern>
</servlet-mapping>

解题思路

  • 打开网页发现是登录界面,有一个链接help,点击返现无内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RRasmlUv-1630817771285)(https://i.loli.net/2021/09/04/BLF2x7e6IiSmMXs.png)]

  • 但从url看出可能存在文件包含漏洞,尝试使用post提交(有师傅说是经验),发现下载了文件,但里面什么也没有

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oahDZHYW-1630817771288)(https://i.loli.net/2021/09/04/WDtYQsIKXlCao3G.png)]

  • 通过post访问web.xml,发现了一个跟貌似跟flag有关的文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oxcdZyKu-1630817771290)(https://i.loli.net/2021/09/04/sxRdAE4it9cBUgI.png)]

  • 有前置知识可知,通过url访问Servlet的方式是:
    找到对应文件名,然后通过这个文件名找到对应的servlet,再通过这个servlet的文件名,获取到其具体的servlet文件。因为这个是类中的文件,所以后缀要加.class

  • payload:WEB-INF/classes/com/wm/ctf/FlagController.class

[外链图片转存中...(img-T152PECl-1630817771294)]

  • 观察返现一段base64加密后的字符串,解密获得flag
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值