java代码审计-某酒店管理系统

java · 浏览次数 : 0

小编点评

**代码审计报告** **1. 文件上传漏洞** * 利用 UUID 作为文件随机文件名获取上传文件的 Content-Type,将 Content-type:image/png 中的 png 作为文件后缀。 * 充分信任输出文件名到客户端,导致任意文件上传burp。 **2. CSRF 漏洞** * 系统设置 `-->修改密码无Token 校验`,不限制 `refer`,无原密码校验。 * 存在 CSRF 漏洞,当用户修改密码时,没有校验密码合法性,导致任意用户修改密码。 **3. 存储型XSS房间列表** * 从输入到输出无任何过滤。 * 查看房间列表时,会输出房间号、价格、类型、房间描述等信息。 * 参数值可控,从输入到输出无任何过滤。 **4. 存储型XSS房间描述** * 从房间描述中获取房间号、价格、类型、房间描述等信息。 * 这些信息可以被利用以执行存储型 XSS攻击,获取用户数据。 **结论** 该酒店后台管理系统存在严重的漏洞,包括文件上传漏洞、CSRF 漏洞和存储型XSS漏洞。这些漏洞可能导致用户数据泄露,造成严重的隐私风险。

正文

java代码审计-某酒店后台管理系统

1、简介

文章只作研究学习,请勿非法渗透测试;

该系统是使用SpringMVC+Mysql搭建开发的一套中小型企业酒店后台管理系统;

这里只对源代码进行审计,第三方依赖中还有很多值得分析的点(如有错误请及时指正);

2、文件上传漏洞

代码如下:

  • 利用UUID作为文件随机文件名
  • 获取上传文件的ContentType
  • 将Content-type:image/png 中的png作为文件后缀,且充分信任
  • 输出文件名到客户端(浏览器)

存在的问题:

获取Content-type后并没有做校验,且UUID已知,导致任意文件上传

burp这里获取不到文件名,但是因有为图片显示功能,可以直接看到资源路径:

冰蝎连接成功。

3、CSRF漏洞

系统设置-->修改密码

无Token校验,不限制refer,无原密码校验,存在CSRF漏洞

4、存储型XSS

房间列表->详细信息中,会输出房间号、价格、类型、房间描述等;并且参数值可控;

从输入到输出无任何过滤;

查看源代码:

尝试在价格中插入js代码:

报错,数据库中对长度进行了限制,

那尝试修改房间描述,textarea域长度应该足够了;

与java代码审计-某酒店管理系统相似的内容:

java代码审计-某酒店管理系统

java代码审计-某酒店后台管理系统 目录java代码审计-某酒店后台管理系统1、简介2、文件上传漏洞3、CSRF漏洞4、存储型XSS 1、简介 文章只作研究学习,请勿非法渗透测试; 该系统是使用SpringMVC+Mysql搭建开发的一套中小型企业酒店后台管理系统; 这里只对源代码进行审计,第三方

Java中代码Bug记录--泛型失效、数组删除、HashMap死循环

最近在工作的过程中,遇到了不少奇怪自己或者同事的Bug,都是一些出乎意料的,不太容易发现的,记录一下来帮助可能也遇到了这些Bug的人 # 1. 编译时泛型校验失效 ```java Map nameToType = new HashMap(); nameToType.put( "testName",

编写Java代码时应该避免的6个坑

通常情况下,我们都希望我们的代码是高效和兼容的,但是实际情况下代码中常常含有一些隐藏的坑,只有等出现异常时我们才会去解决它。本文是一篇比较简短的文章,列出了开发人员在编写 Java 程序时常犯的错误,避免线上问题。 # 1、大量使用 Enum.values `Enum.Values()` 的问题在于

精选版:用Java扩展Nginx(nginx-clojure 入门)

让 Java 代码直接在 Nginx 上运行?这么有趣的功能,随本文一起来实战体验吧,图文并茂,一定能成功的那种实战

[转帖]阿里巴巴Java开发手册(全册四版)

阿里官方Java代码规范标准《阿里巴巴Java开发手册2017/2018/2019/2020》小白必备!!! 2017年开春之际,阿里诚意献上重磅大礼:《阿里巴巴Java开发手册》,首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量

[转帖]19个小细节,让你提升Java代码的运行效率

https://cloud.tencent.com/developer/article/2168091?areaSource=104001.16&traceId=zcVNsKTUApF9rNJSkcCbB 1.使用局部变量可避免在堆上分配 由于堆资源是多线程共享的,是垃圾回收器工作的主要区域,过多的

【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out

问题描述 在使用Java 代码向 Azure Event Hub发送数据时,先后遇见了如下两种异常消息: 1)ERROR c.t.d.h.s.source.EventHubLogConsumer - Error occurred in partition processor for partitio

liquibase customChange

# liquibase customChange liquibase changeset 执行Java代码。 liquibase支持yml等文件,支持引入sql文件,还支持Java这种方式执行change。 对于执行 DDL DML 使用sql很方便,但是我想执行一些数据处理,将几个表中的数据放到新

支付对接常用的加密方式介绍以及java代码实现

金融场景里如何让收银和支付更安全?背后的基础原件是加密方式的设计架构。本文重点讲解在京东金融中,我们如何用Java来实现支付加密。

【转帖】26.Java本地方法的理解(native方法)

目录 1.什么是本地方法?2. 为什么要使用Native method? 1.什么是本地方法? 本地方法就是java代码里面写的native方法,它没有方法体。是为了调用C/C++代码而写的。在JNI程序里面使用。 例子: 下面的代码在java中声明了一个本地方法,但是没有实现,它的实现是在c或者c