[代码审计]记一次简单的java代码审计

news2024/11/16 1:25:12

如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。

免责声明

本博客所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性自测。如因此产生的一切不良后果与文章作者和本公众号无关。如有涉及公司与个人敏感信息,侵权烦请告知,我们会立即删除并致歉。

前言

记录一次极其简单的代码审计,技术含量较低,适合代码审计小白观看,不喜勿喷。

利用工具

https://github.com/webraybtl/CodeQLpy

第一步:生成数据库初始化,-t指定代码根目录,-c表示为编译后代码,不指定-c表示为.java代码。

python .\main.py -t D:\code\SourceCode\xxxx\ROOT -c

第二步:生成数据库,这一步直接使用上一步命令最终返回的生成数据库的命令在cmd/bash环境中运行即可。

codeql database create out/database/ROOT --language=java --command="D:\tools\CodeAudit\CodeQLpy\out\decode/run.cmd" --overwrite

第三步:开始扫描,运行完成之后最终会返回结果文件,结果文件是csv文件,保存目录在out/result/目录之下。

python .\main.py -d D:\tools\CodeAudit\CodeQLpy\out\database\ROOT

生成的csv文件。

代码审计与漏洞利用

查看生成的csv结果文件,发现有FileWrite,排除掉jsp文件后,可以看到很明显给出了漏洞代码所在类与方法。

定位到漏洞代码位置之后,发现逻辑很简单,就是获取表单中名称为imgFile的文件,最终将上传的文件保存在 /pages/uploads/目录下,期间没有对上传的文件的后缀做校验。

构造poc上传文件发现报错提示:java.io.ByteArrayInputStream cannot be cast to java.io.FileInputStream

类型转换错误,经过搜索后发现是因为文件大小不同时,返回类型不同的问题。

根据描述,我们只要将上传的文件内容写的大一点就行了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《代码大全》读书笔记-第Ⅰ部分 奠定基础

0.欢迎来到软件构建世界 什么是软件构件: 对于非正式及项目,会觉得罗列出来的这些活动太过于繁复。但是这些对于正式项目都是很有必要的(大部分人都没经历过,比如说我)。一般一些小公司主要也就是需求分析、编码、开发人员自测、集成测试这几…

数据库第五次作业

1. 触发器 建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试 建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量 建立触发器,实现功能:客户修改订单,商品…

步入新时代,使用区块链服务API打造创新应用

随着区块链技术的兴起,我们正步入一个全新的数据时代——一个由透明性、安全性和去中心化定义的时代。Blockchain公司的区块链API,作为连接现实世界与区块链世界的桥梁,为全球开发者和企业提供了一种前所未有的方式,以访问、交互并…

文件共享功能无法使用提示错误代码0x80004005【笔记】

环境情况: 其他电脑可以正常访问共享端,但有一台电脑访问提示错误代码0x80004005。 处理检查: 搜索里输入“启用或关闭Windows功能”按回车键,在“启用或关闭Windows功能”里将“SMB 1.0/CIFS文件共享支持”勾选后(故…

屏幕管控——保护文档内容安全

屏幕管控是保护文档内容安全的重要手段之一,它涉及到对终端屏幕的使用、访问权限、内容展示以及操作行为的监控和管理。专业的企业级防泄密系统,如金刚钻信息,会有一些专业功能针对屏幕这块有对应的防护措施。 一、屏幕水印设置 屏幕水印是…

外卖霸王餐系统推荐,哪家的系统比较稳定呢?

以下是一些较为稳定且有一定用户基础的外卖霸王餐系统,你可以根据自身需求进一步考察和选择: - **饭否霸王餐**:有专门的APP,如在应用宝上其开发商为南京有惠鲸选电子商务有限公司。它覆盖了多个城市,提供美团、饿了么…

从0到1,AI我来了- (1)从AI手写数字识别开始

前两篇我们我们把控制台、Python环境Anaconda 搞定了,接下来,我们快速进入主题,把AI 界的“Hello World” 实现一下,有个感觉,再逐步了解一些AI的概念。 1、Pytorch 安装 1) 什么是Pytorch? 一个深度学习框架&#…

C语言常见字符函数和字符串函数精讲

目录 引言 一、字符函数 1.字符分类函数 2.字符转换函数 二、字符串函数 1.gets、puts 2.strlen 3.strcpy 4.strncpy 5.strcat 6.strncat 7.strcmp 8.strncmp 9.strstr 10.strchr 11.strtok 12.strlwr 13.strupr 引言 在C语言编程中,字符函数…

第二证券:股票交易费用有哪些?

出资者生意股票是需求付出生意费用的,一般来说股票的生意费用主要有以下几种: 1、证券公司佣金。这是证券公司收取的一种服务费,用于供给股票生意的途径和服务。证券公司佣金的份额由证券公司自行拟定,但最高不得超越成交金额的0…

elasticsearch8.14.1集群安装部署

elasticsearch安装部署,首先需要准备至少三台服务器,本例再windows11下安装三台vmware虚拟机,利用centOS7系统模拟服务器环境。 本例假设你已经安装了三台vmware和centOS7,且centOS7运行正常。接下来我们直接讲解elasticsearch下载…

通过IEC104转MQTT网关轻松接入阿里云平台

随着智能电网和物联网技术的飞速发展,电力系统中的传统IEC 104协议设备正面临向现代化、智能化转型的迫切需求。阿里云作为全球领先的云计算服务提供商,其强大的物联网平台为IEC 104设备的接入与数据处理提供了强大的支持。本文将深入探讨钡铼网关在MQTT…

Python seaborn超级细节篇-使用配色palette

本文分享Python seaborn中通过配色palette美化图形。配色(palette),用于设置color palette,例如,Set1、#a1c9f4、red等。 内容很多,快速浏览一下,节选自👉Python可视化-seaborn篇 这里展示部分, 5.3 palette设置图形配色 设置图形配色palette目的在于有效地展示数…

【ffmpeg命令入门】视频剪切,倍速与倒放

文章目录 前言1. 视频剪切2. 视频倍速公式说明例子 3. 视频倒放总结 前言 在视频编辑中,剪切、倍速和倒放是常见的操作,能够帮助我们调整视频的长度、播放速度以及播放顺序。掌握 FFmpeg 命令中的相关参数和用法将使视频处理变得更加高效。在这篇文章中…

vLLM——使用PagedAttention加速推理

参考自https://blog.vllm.ai/2023/06/20/vllm.html 介绍 vLLM是一个用于快速LLM推理和服务的开源库。vLLM 利用PagedAttention,可以有效地管理注意力键和值。PagedAttention 的 vLLM 重新定义了 LLM 服务的最新水平:它提供了比 HuggingFace Transforme…

jdk的major version和minor version是啥意思?

写在前面 1:正文 major version是大版本号,minor version是小版本号,但目前minor version都是0(也可能是我没有发现😅),如jdk8就是52,如下表: 可以看到jdk版本号和ma…

【Java】随机值设置

🎉欢迎大家收看,请多多支持🌹 🥰关注小哇,和我一起成长🚀个人主页🚀 在Java中设置随机值通常涉及到java.util.Random类或Math.random()方法。 使用Math.random()方法 Math.random()生成的随机…

AI在Facebook的应用:预见智能化社交的新前景

在数字化时代,社交媒体平台已成为我们生活的重要组成部分,而人工智能(AI)的快速发展正推动着这些平台向更智能、更个性化的方向发展。Facebook,作为全球最大的社交网络平台之一,正不断探索和应用AI技术&…

leetcode日记(54)加一

很简单 class Solution { public:vector<int> plusOne(vector<int>& digits) {int ndigits.size();for(int in-1;i>0;i--){if(digits[i]<9){digits[i];break;}else if(i0){digits[i]0;digits.insert(digits.begin(),1);}else digits[i]0;}return digits…

【React】JSX 实现列表渲染

文章目录 一、基础语法1. 使用 map() 方法2. key 属性的使用 二、常见错误和注意事项1. 忘记使用 key 属性2. key 属性的选择 三、列表渲染的高级用法1. 渲染嵌套列表2. 条件渲染列表项3. 动态生成组件 四、最佳实践 在 React 开发中&#xff0c;列表渲染是一个非常常见的需求。…

家政项目小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;家政人员管理&#xff0c;家政服务管理&#xff0c;咨询信息管理&#xff0c;咨询服务管理&#xff0c;家政预约管理&#xff0c;留言板管理&#xff0c;系统管理 微信端账号功能…