源码泄露 [RoarCTF 2019]Easy Java1
打开题目
看见登录框一开始以为是sql注入,试了一下结果不是
我们点击help看看
于此同时url
我们在url上随便输入使其报错
在这里看到了Apache Tomcat/8.5.24
再看一下网站用的是什么服务器
百度搜索得知,?openresty是一个基于Nginx的web平台
那我们bp抓包
先找一下WEB-INF/web.xml,POST传值
我们可以看到com.wm.FlagController,然后下载FlagController.class文件试一试
filename=WEB-INF/classes/com/wm/ctf/FlagController.class
发包过去可以看到我们下载了个文件下来
记事本打开可以看见其中有一段编码
我们base64解码一下得到flag
·
知识点:
- WEB-INF/web.xml泄露
WEB-INF是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:数据库配置文件
漏洞成因:通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,问题原因其实很简单,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(这样耦合性太高了),修改Nginx配置文件禁止访问WEB-INF目录就好了: location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他!
- tomcat的结构目录
目录的简单介绍
- bin:启动和关闭tomcat的bat文件
- conf:配置文件
- server.xml该文件用于配置server相关的信息,比如tomcat启动的端口号,配置主机(Host)
- web.xml文件配置与web应用(web应用相当于一个web站点)
- tomcat-user.xml配置用户名密码和相关权限.
- lib:该目录放置运行tomcat运行需要的jar包
- logs:存放日志,当我们需要查看日志的时候,可以查询信息
- webapps:放置我们的web应用
- work工作目录:该目录用于存放jsp被访问后生成对应的server文件和.class文件
- web的站点目录
知识点源于:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!