源码泄露 [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的结构目录

目录的简单介绍

  1. bin:启动和关闭tomcat的bat文件
  2. conf:配置文件
  • server.xml该文件用于配置server相关的信息,比如tomcat启动的端口号,配置主机(Host)
  • web.xml文件配置与web应用(web应用相当于一个web站点)
  • tomcat-user.xml配置用户名密码和相关权限.
  1. lib:该目录放置运行tomcat运行需要的jar包
  2. logs:存放日志,当我们需要查看日志的时候,可以查询信息
  3. webapps:放置我们的web应用
  4. work工作目录:该目录用于存放jsp被访问后生成对应的server文件和.class文件

  • web的站点目录

知识点源于:

ctf/web源码泄露及利用办法【总结中】-CSDN博客

什么是TOMCAT?_web 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/265426.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六级高频词汇3

目录 单词 参考链接 单词 400. nonsense n. 胡说,冒失的行动 401. nuclear a. 核子的,核能的 402. nucleus n. 核 403. retail n. /v. /ad. 零售 404. retain vt. 保留,保持 405. restrict vt. 限制,约束 406. sponsor n. …

request.getSession().getAttribute 获取不到值,获取到的是null

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) ✈️公众号 | 热爱技术的小郑 。文章底部有个人公众号二维码。回复 Java全套视频教程 或 前端全套视频教程 即可获取 300G 教程资…

Python:核心知识点整理大全13-笔记

目录 6.4.3 在字典中存储字典 6.5 小结 第7章 用户输入和while循环 7.1 函数 input()的工作原理 7.1.1 编写清晰的程序 7.1.2 使用 int()来获取数值输入 7.1.3 求模运算符 7.1.4 在 Python 2.7 中获取输入 7.2 while 循环简介 7.2.1 使用 while 循环 往期快速传送门…

四川大学携手和鲸打造课内workshop,趣味实践教学助力数据思维培养

“通过描述性统计我们可以看到,学生们对第二食堂的倾慕之心真是苍天可鉴!” “综合上述分析,贫困人口有较大概率集中在性别为女,专业为理工科,日常消费次数、消费金额以及卡内盈余都较低的学生之中。” “有些学生长…

Leetcode—198.打家劫舍【中等】

2023每日刷题(五十二) Leetcode—198.打家劫舍 算法思想 具体思路 首先,我们从上面的题目描述中抽象出题意。 ● 从一个非负整数数组中找到一个子序列,并且该子序列的和最大 ● 子序列中每个数的位置不能够相邻。举例来讲&…

基于conda环境使用mamba/conda安装配置QIIME 2 2023.9 Amplicon扩增子分析环境,q2cli主要功能模块介绍及使用

QIIME 2 2023.9 Amplicon Distribution介绍: 概述 qiime团队专门针对高通量扩增子序列分析退出的conda集成环境,包括了主要和常见的扩增子分析模块,用户可以单独使用各个模块,也可以使用各模块组成不同的分析流程。从2023.09版本…

JAVA安全之Spring参数绑定漏洞CVE-2022-22965

前言 在介绍这个漏洞前,介绍下在spring下的参数绑定 在Spring框架中,参数绑定是一种常见的操作,用于将HTTP请求的参数值绑定到Controller方法的参数上。下面是一些示例,展示了如何在Spring中进行参数绑定: 示例1&am…

代码片段管理器 SnippetsLab激活中文 for Mac

SnippetsLab Mac是Mac平台非常不错的代码片段管理器软件,无需使用鼠标即可快速搜索,预览,打开或复制您的代码段,非常简单方便。SnippetsLab使用嵌套文件夹,标签和智能组支持在一个地方管理所有有价值的代码片段变得简单…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion简介

Stable Diffusion是2022年发布的深度学习文本到图像生成模型,它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如

6.H3C命令行简介

6.H3C命令行简介 [H3C]:用户视图模式,仅能做基本参数配置,权限较小<H3C>:系统视图模式,可做高级配置system-view:切换到系统视图模式 quit:退出当前模式 sysname XXX:给系统命名,必须在系统视图模式下操作 display this 查看当前配置dis this int gi 0/0 :进入接口gi0…

UE5像素流实现

1.下载像素流插件(Pixel Streaming),勾选之后重启UE 2.设置额外启动参数&#xff08;-AudioMixer -PixelStreamingIPlocalhost -PixelStreamingPort8888&#xff09; 3.项目打包 4.创建项目启动快捷方式(Alt鼠标左键按住XXX.exe文件拖动) 5.快捷方式文件 配置项目运行文件参数(…

JVM虚拟机系统性学习-运行时数据区(方法区、程序计数器、直接内存)

方法区 方法区本质上是 Java 编译后代码的存储区域&#xff0c;存储了每一个类的结构信息&#xff0c;如&#xff1a;运行时常量池、成员变量、方法、构造方法和普通方法的字节码指令等内容 方法区主要存储的数据如下&#xff1a; Class 类型信息&#xff0c;如该 Class 为 …