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

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

免责声明

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

前言

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

利用工具

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

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

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值