0%

[RoarCTF 2019]Easy Java

前言:

 第一次遇到java类的题目,本应该是翻阅java相关资料,而我直接去看了别人的wp,也不知道这样做对不对。还有就是写wp确实很费时间呀!

0X01 解题思路

  1. 打开是一个登入界面,看了别人的wp爆破出admin的密码也得不到flag。接着我尝试点击help,弹出一个错误,提示了help.docx , 接着我尝试直接访可以得到一个文件,但是flag不在文件里,文件里也没有其它提示。
  2. 因为上面会返回一个报错信息,我们打开brup截取请求信息,根据别人的经验将请求方式改为post将请求的文件改为WEB-INF/web.xml因为这里主要也是考这个文件的泄漏。


3. 然后参考下面资料


4. 我们构造filename=WEB-INF/classes/com/wm/ctf/FlagController.class


5. 最后解码得到flag,大功告成!!

0X02 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; 或者其他!

原文链接:https://blog.csdn.net/wy_97/article/details/78165051


-------------本文结束感谢您的阅读-------------